From 3e01d3f4419feafe75b88ecb05a80daafafab8c0 Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Wed, 15 Dec 2021 00:35:49 -0800 Subject: [PATCH 01/42] Batching Engine - Implement alternate backend using SBBs --- .../contraptions/base/flwdata/BeltType.java | 32 +++++++- .../base/flwdata/RotatingType.java | 22 +++++- .../base/flwdata/UnsafeBeltWriter.java | 19 +---- .../base/flwdata/UnsafeKineticWriter.java | 24 ++++++ .../base/flwdata/UnsafeRotatingWriter.java | 19 +---- .../components/actors/flwdata/ActorType.java | 7 +- .../actors/flwdata/UnsafeActorWriter.java | 3 +- .../structureMovement/glue/GlueInstance.java | 78 ++++++++++++++++++- .../logistics/block/flap/FlapData.java | 10 ++- .../logistics/block/flap/FlapType.java | 29 ++++++- .../block/flap/UnsafeFlapWriter.java | 8 +- .../foundation/render/SuperByteBuffer.java | 13 ++-- .../assets/create/flywheel/shaders/flap.vert | 4 +- 13 files changed, 207 insertions(+), 61 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeKineticWriter.java diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java index 1c72568d5..8e3a62a6b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java @@ -6,10 +6,14 @@ import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.core.model.Model; +import com.jozufozu.flywheel.util.RenderMath; +import com.mojang.math.Quaternion; +import com.simibubi.create.content.contraptions.KineticDebugger; import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; +import com.simibubi.create.foundation.utility.AnimationTickHolder; +import net.minecraft.client.renderer.LightTexture; import net.minecraft.resources.ResourceLocation; public class BeltType implements Instanced, Batched { @@ -34,7 +38,29 @@ public class BeltType implements Instanced, Batched { } @Override - public BatchingTransformer getTransformer(Model model) { - return null; + public BatchingTransformer getTransformer() { + return (d, sbb) -> { + + float spriteHeight = d.maxV - d.minV; + double scroll = d.rotationalSpeed * AnimationTickHolder.getRenderTime() / (31.5 * 16) + d.rotationOffset; + scroll = scroll - Math.floor(scroll); + scroll = scroll * spriteHeight * RenderMath.f(d.scrollMult); + + float finalScroll = (float) scroll; + sbb.shiftUV((builder, u, v) -> { + float targetU = u - d.sourceU + d.minU; + float targetV = v - d.sourceV + d.minV + + finalScroll; + builder.uv(targetU, targetV); + }); + + sbb.translate(d.x + 0.5, d.y + 0.5, d.z + 0.5) + .multiply(new Quaternion(d.qX, d.qY, d.qZ, d.qW)) + .unCentre() + .light(d.getPackedLight()); + if (KineticDebugger.isActive()) { + sbb.color(d.r, d.g, d.b, d.a); + } + }; } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java index 94e05590f..400afd94f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java @@ -6,10 +6,14 @@ import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.core.model.Model; +import com.jozufozu.flywheel.util.RenderMath; +import com.mojang.math.Vector3f; +import com.simibubi.create.content.contraptions.KineticDebugger; import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; +import com.simibubi.create.foundation.utility.AnimationTickHolder; +import net.minecraft.client.renderer.LightTexture; import net.minecraft.resources.ResourceLocation; public class RotatingType implements Instanced, Batched { @@ -34,7 +38,19 @@ public class RotatingType implements Instanced, Batched getTransformer(Model model) { - return null; + public BatchingTransformer getTransformer() { + return (d, b) -> { + float angle = ((AnimationTickHolder.getRenderTime() * d.rotationalSpeed * 3f / 10 + d.rotationOffset) % 360); + + Vector3f axis = new Vector3f(RenderMath.f(d.rotationAxisX), RenderMath.f(d.rotationAxisY), RenderMath.f(d.rotationAxisZ)); + b.light(d.getPackedLight()) + .translate(d.x + 0.5, d.y + 0.5, d.z + 0.5) + .multiply(axis.rotationDegrees(angle)) + .unCentre(); + + if (KineticDebugger.isActive()) { + b.color(d.r, d.g, d.b, d.a); + } + }; } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeBeltWriter.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeBeltWriter.java index 1bd4e3ac5..59ba5203f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeBeltWriter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeBeltWriter.java @@ -4,27 +4,16 @@ import org.lwjgl.system.MemoryUtil; import com.jozufozu.flywheel.api.struct.StructType; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.backend.struct.UnsafeBufferWriter; -public class UnsafeBeltWriter extends UnsafeBufferWriter { +public class UnsafeBeltWriter extends UnsafeKineticWriter { public UnsafeBeltWriter(VecBuffer backingBuffer, StructType vertexType) { super(backingBuffer, vertexType); } @Override - public void write(BeltData d) { + protected void writeInternal(BeltData d) { + super.writeInternal(d); long addr = writePointer; - MemoryUtil.memPutByte(addr, d.blockLight); - MemoryUtil.memPutByte(addr + 1, d.skyLight); - MemoryUtil.memPutByte(addr + 2, d.r); - MemoryUtil.memPutByte(addr + 3, d.g); - MemoryUtil.memPutByte(addr + 4, d.b); - MemoryUtil.memPutByte(addr + 5, d.a); - MemoryUtil.memPutFloat(addr + 6, d.x); - MemoryUtil.memPutFloat(addr + 10, d.y); - MemoryUtil.memPutFloat(addr + 14, d.z); - MemoryUtil.memPutFloat(addr + 18, d.rotationalSpeed); - MemoryUtil.memPutFloat(addr + 22, d.rotationOffset); MemoryUtil.memPutFloat(addr + 26, d.qX); MemoryUtil.memPutFloat(addr + 30, d.qY); MemoryUtil.memPutFloat(addr + 34, d.qZ); @@ -36,7 +25,5 @@ public class UnsafeBeltWriter extends UnsafeBufferWriter { MemoryUtil.memPutFloat(addr + 58, d.maxU); MemoryUtil.memPutFloat(addr + 62, d.maxV); MemoryUtil.memPutByte(addr + 66, d.scrollMult); - - advance(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeKineticWriter.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeKineticWriter.java new file mode 100644 index 000000000..f6fbeebfc --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeKineticWriter.java @@ -0,0 +1,24 @@ +package com.simibubi.create.content.contraptions.base.flwdata; + +import org.lwjgl.system.MemoryUtil; + +import com.jozufozu.flywheel.api.struct.StructType; +import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; +import com.jozufozu.flywheel.core.materials.UnsafeBasicWriter; + +public abstract class UnsafeKineticWriter extends UnsafeBasicWriter { + public UnsafeKineticWriter(VecBuffer backingBuffer, StructType vertexType) { + super(backingBuffer, vertexType); + } + + @Override + protected void writeInternal(D d) { + super.writeInternal(d); + long addr = writePointer; + MemoryUtil.memPutFloat(addr + 6, d.x); + MemoryUtil.memPutFloat(addr + 10, d.y); + MemoryUtil.memPutFloat(addr + 14, d.z); + MemoryUtil.memPutFloat(addr + 18, d.rotationalSpeed); + MemoryUtil.memPutFloat(addr + 22, d.rotationOffset); + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeRotatingWriter.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeRotatingWriter.java index 8b0f13835..b477c8e20 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeRotatingWriter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeRotatingWriter.java @@ -4,31 +4,18 @@ import org.lwjgl.system.MemoryUtil; import com.jozufozu.flywheel.api.struct.StructType; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.backend.struct.UnsafeBufferWriter; -public class UnsafeRotatingWriter extends UnsafeBufferWriter { +public class UnsafeRotatingWriter extends UnsafeKineticWriter { public UnsafeRotatingWriter(VecBuffer backingBuffer, StructType vertexType) { super(backingBuffer, vertexType); } @Override - public void write(RotatingData d) { + protected void writeInternal(RotatingData d) { + super.writeInternal(d); long addr = writePointer; - MemoryUtil.memPutByte(addr, d.blockLight); - MemoryUtil.memPutByte(addr + 1, d.skyLight); - MemoryUtil.memPutByte(addr + 2, d.r); - MemoryUtil.memPutByte(addr + 3, d.g); - MemoryUtil.memPutByte(addr + 4, d.b); - MemoryUtil.memPutByte(addr + 5, d.a); - MemoryUtil.memPutFloat(addr + 6, d.x); - MemoryUtil.memPutFloat(addr + 10, d.y); - MemoryUtil.memPutFloat(addr + 14, d.z); - MemoryUtil.memPutFloat(addr + 18, d.rotationalSpeed); - MemoryUtil.memPutFloat(addr + 22, d.rotationOffset); MemoryUtil.memPutByte(addr + 26, d.rotationAxisX); MemoryUtil.memPutByte(addr + 27, d.rotationAxisY); MemoryUtil.memPutByte(addr + 28, d.rotationAxisZ); - - advance(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java index f664a6698..5ff165d7c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java @@ -6,7 +6,6 @@ import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.core.model.Model; import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; @@ -34,7 +33,9 @@ public class ActorType implements Instanced, Batched { } @Override - public BatchingTransformer getTransformer(Model model) { - return null; + public BatchingTransformer getTransformer() { + return (d, sbb) -> { + + }; } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/UnsafeActorWriter.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/UnsafeActorWriter.java index 0a7184910..4479e800d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/UnsafeActorWriter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/UnsafeActorWriter.java @@ -12,7 +12,7 @@ public class UnsafeActorWriter extends UnsafeBufferWriter { } @Override - public void write(ActorData d) { + protected void writeInternal(ActorData d) { long addr = writePointer; MemoryUtil.memPutFloat(addr, d.x); MemoryUtil.memPutFloat(addr + 4, d.y); @@ -31,6 +31,5 @@ public class UnsafeActorWriter extends UnsafeBufferWriter { MemoryUtil.memPutByte(addr + 38, d.rotationCenterY); MemoryUtil.memPutByte(addr + 39, d.rotationCenterZ); MemoryUtil.memPutFloat(addr + 40, d.speed); - advance(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java index bd464c94c..46a053521 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java @@ -11,6 +11,7 @@ import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.instancing.ConditionalInstance; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.jozufozu.flywheel.core.model.Model; +import com.jozufozu.flywheel.util.ModelReader; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Quaternion; import com.simibubi.create.AllItems; @@ -95,7 +96,7 @@ public class GlueInstance extends EntityInstance implements ITi || AllItems.SUPER_GLUE.isIn(player.getOffhandItem()); } - public static class GlueModel implements Model { + public static class GlueModel implements Model, ModelReader { @Override public String name() { @@ -165,5 +166,80 @@ public class GlueInstance extends EntityInstance implements ITi public VertexFormat format() { return Formats.UNLIT_MODEL; } + + @Override + public ModelReader getReader() { + return this; + } + + @Override + public int getVertexCount() { + return 8; + } + + @Override + public float getX(int index) { + return 0; + } + + @Override + public float getY(int index) { + return 0; + } + + @Override + public float getZ(int index) { + return 0; + } + + @Override + public byte getR(int index) { + return (byte) 0xFF; + } + + @Override + public byte getG(int index) { + return (byte) 0xFF; + } + + @Override + public byte getB(int index) { + return (byte) 0xFF; + } + + @Override + public byte getA(int index) { + return (byte) 0xFF; + } + + @Override + public float getU(int index) { + return 0; + } + + @Override + public float getV(int index) { + return 0; + } + + @Override + public int getLight(int index) { + return 0; + } + + @Override + public float getNX(int index) { + return 0; + } + + @Override + public float getNY(int index) { + return 0; + } + + @Override + public float getNZ(int index) { + return index > 4 ? -1 : 1; + } } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapData.java b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapData.java index 2e2ebb44b..591f0160c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapData.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapData.java @@ -4,6 +4,7 @@ import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.core.materials.FlatLit; import com.mojang.math.Vector3f; +import net.minecraft.client.renderer.LightTexture; import net.minecraft.core.BlockPos; public class FlapData extends InstanceData implements FlatLit { @@ -42,18 +43,23 @@ public class FlapData extends InstanceData implements FlatLit { @Override public FlapData setBlockLight(int blockLight) { - this.blockLight = (byte) ((blockLight & 0xF) << 4); + this.blockLight = (byte) (blockLight & 0xF); markDirty(); return this; } @Override public FlapData setSkyLight(int skyLight) { - this.skyLight = (byte) ((skyLight & 0xF) << 4); + this.skyLight = (byte) (skyLight & 0xF); markDirty(); return this; } + @Override + public int getPackedLight() { + return LightTexture.pack(this.blockLight, this.skyLight); + } + public FlapData setSegmentOffset(float x, float y, float z) { this.segmentOffsetX = x; this.segmentOffsetY = y; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java index 9838d5708..4d3a67b04 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java @@ -6,10 +6,11 @@ import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.core.model.Model; +import com.mojang.math.Vector3f; import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; +import net.minecraft.client.renderer.LightTexture; import net.minecraft.resources.ResourceLocation; public class FlapType implements Instanced, Batched { @@ -34,7 +35,29 @@ public class FlapType implements Instanced, Batched { } @Override - public BatchingTransformer getTransformer(Model model) { - return null; + public BatchingTransformer getTransformer() { + return (d, sbb) -> { + sbb.translate(d.x, d.y, d.z) + .centre() + .rotateY(-d.horizontalAngle) + .unCentre() + .translate(d.pivotX, d.pivotY, d.pivotZ) + .rotateX(getFlapAngle(d.flapness, d.intensity, d.flapScale)) + .translateBack(d.pivotX, d.pivotY, d.pivotZ) + .translate(d.segmentOffsetX, d.segmentOffsetY, d.segmentOffsetZ) + .light(d.getPackedLight()); + }; + } + + private static float getFlapAngle(float flapness, float intensity, float scale) { + float absFlap = Math.abs(flapness); + + float angle = (float) (Math.sin((1. - absFlap) * Math.PI * intensity) * 30. * flapness * scale); + + if (flapness > 0) { + return angle * 0.5f; + } else { + return angle; + } } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/flap/UnsafeFlapWriter.java b/src/main/java/com/simibubi/create/content/logistics/block/flap/UnsafeFlapWriter.java index f0ace42cc..345fde063 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/flap/UnsafeFlapWriter.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/flap/UnsafeFlapWriter.java @@ -12,13 +12,13 @@ public class UnsafeFlapWriter extends UnsafeBufferWriter { } @Override - public void write(FlapData d) { + protected void writeInternal(FlapData d) { long addr = writePointer; MemoryUtil.memPutFloat(addr, d.x); MemoryUtil.memPutFloat(addr + 4, d.y); MemoryUtil.memPutFloat(addr + 8, d.z); - MemoryUtil.memPutByte(addr + 12, d.blockLight); - MemoryUtil.memPutByte(addr + 13, d.skyLight); + MemoryUtil.memPutByte(addr + 12, (byte) (d.blockLight << 4)); + MemoryUtil.memPutByte(addr + 13, (byte) (d.skyLight << 4)); MemoryUtil.memPutFloat(addr + 14, d.segmentOffsetX); MemoryUtil.memPutFloat(addr + 18, d.segmentOffsetY); MemoryUtil.memPutFloat(addr + 22, d.segmentOffsetZ); @@ -29,7 +29,5 @@ public class UnsafeFlapWriter extends UnsafeBufferWriter { MemoryUtil.memPutFloat(addr + 42, d.intensity); MemoryUtil.memPutFloat(addr + 46, d.flapScale); MemoryUtil.memPutFloat(addr + 50, d.flapness); - - advance(); } } diff --git a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java index dec20e4b0..7cb2197cd 100644 --- a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java +++ b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java @@ -1,6 +1,8 @@ package com.simibubi.create.foundation.render; import com.jozufozu.flywheel.util.BufferBuilderReader; +import com.jozufozu.flywheel.util.ModelReader; +import com.jozufozu.flywheel.util.RenderMath; import com.jozufozu.flywheel.util.transform.Rotate; import com.jozufozu.flywheel.util.transform.Scale; import com.jozufozu.flywheel.util.transform.TStack; @@ -31,10 +33,10 @@ import net.minecraftforge.client.model.pipeline.LightUtil; public class SuperByteBuffer implements Scale, Translate, Rotate, TStack { - private final BufferBuilderReader template; + private final ModelReader template; // Vertex Position - private PoseStack transforms; + private final PoseStack transforms; // Vertex Coloring private boolean shouldColor; @@ -115,9 +117,9 @@ public class SuperByteBuffer implements Scale, Translate, Translate Date: Fri, 17 Dec 2021 02:17:39 -0800 Subject: [PATCH 02/42] Use task engine/sync to update instances --- .../structureMovement/render/ContraptionInstanceManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java index 94bfa5183..96e9b6f00 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java @@ -8,6 +8,7 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.tuple.Pair; import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.backend.instancing.ImmediateExecutor; import com.jozufozu.flywheel.backend.instancing.tile.TileInstanceManager; import com.simibubi.create.AllMovementBehaviours; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; @@ -24,7 +25,7 @@ public class ContraptionInstanceManager extends TileInstanceManager { private final WeakReference contraption; ContraptionInstanceManager(RenderedContraption contraption, MaterialManager materialManager) { - super(materialManager); + super(ImmediateExecutor.INSTANCE, materialManager); this.contraption = new WeakReference<>(contraption); } From 4292485b64cec99bf65e208bc72faffd05bec67f Mon Sep 17 00:00:00 2001 From: Aeiou <3160746+AeiouEnigma@users.noreply.github.com> Date: Sat, 18 Dec 2021 17:37:42 -0500 Subject: [PATCH 03/42] Implement Starlight compatibility. --- build.gradle | 1 + .../structureMovement/ContraptionWorld.java | 10 ++++++ .../render/ContraptionRenderDispatcher.java | 2 +- .../PlacementSimulationWorld.java | 35 +++++++++++++++++-- .../worldWrappers/chunk/WrappedChunk.java | 15 ++++++-- 5 files changed, 57 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index 25b917f58..beb2fff1d 100644 --- a/build.gradle +++ b/build.gradle @@ -170,6 +170,7 @@ dependencies { compileOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}:${jei_version}:api") runtimeOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}:${jei_version}") + compileOnly fg.deobf("curse.maven:starlight-526854:3559934") // implementation fg.deobf("curse.maven:druidcraft-340991:3101903") // implementation fg.deobf("com.ferreusveritas.dynamictrees:DynamicTrees-1.16.5:0.10.0-Beta25") diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java index 16abe0041..d08a28337 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java @@ -46,4 +46,14 @@ public class ContraptionWorld extends WrappedWorld { public void playLocalSound(double x, double y, double z, SoundEvent p_184134_7_, SoundSource p_184134_8_, float p_184134_9_, float p_184134_10_, boolean p_184134_11_) { world.playLocalSound(x, y, z, p_184134_7_, p_184134_8_, p_184134_9_, p_184134_10_, p_184134_11_); } + + @Override + public int getMinBuildHeight() { + return -1 * (int)this.contraption.bounds.getYsize(); + } + + @Override + public int getHeight() { + return -2 * getMinBuildHeight(); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java index 59ef2e7eb..82f43ce96 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java @@ -104,7 +104,7 @@ public class ContraptionRenderDispatcher { } public static PlacementSimulationWorld setupRenderWorld(Level world, Contraption c) { - PlacementSimulationWorld renderWorld = new PlacementSimulationWorld(world); + PlacementSimulationWorld renderWorld = new PlacementSimulationWorld(world, c); renderWorld.setTileEntities(c.presentTileEntities.values()); diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java index e97ec1adc..1f0b289d3 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java @@ -9,6 +9,8 @@ import java.util.function.Predicate; import com.jozufozu.flywheel.api.FlywheelWorld; +import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; + import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.world.level.Level; @@ -16,8 +18,12 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.lighting.LevelLightEngine; +import org.jetbrains.annotations.NotNull; + public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWorld { public Map blocksAdded; public Map tesAdded; @@ -27,12 +33,15 @@ public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWo public WrappedChunkProvider chunkProvider; private final BlockPos.MutableBlockPos scratch = new BlockPos.MutableBlockPos(); - public PlacementSimulationWorld(Level wrapped) { - this(wrapped, new WrappedChunkProvider()); + private final Contraption contraption; + + public PlacementSimulationWorld(Level wrapped, Contraption c) { + this(wrapped, c, new WrappedChunkProvider()); } - public PlacementSimulationWorld(Level wrapped, WrappedChunkProvider chunkProvider) { + public PlacementSimulationWorld(Level wrapped, @NotNull Contraption c, WrappedChunkProvider chunkProvider) { super(wrapped, chunkProvider); + contraption = c; this.chunkProvider = chunkProvider.setPlacementWorld(this); spannedSections = new HashSet<>(); lighter = new LevelLightEngine(chunkProvider, true, false); // blockLight, skyLight @@ -117,4 +126,24 @@ public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWo return state; return Blocks.AIR.defaultBlockState(); } + + @Override + public int getMinBuildHeight() { + return contraption.getContraptionWorld().getMinBuildHeight(); + } + + @Override + public int getHeight() { + return contraption.getContraptionWorld().getHeight(); + } + + // Override Starlight's ExtendedWorld interface methods: + + public LevelChunk getChunkAtImmediately(final int chunkX, final int chunkZ) { + return chunkProvider.getChunk(chunkX, chunkZ, false); + } + + public ChunkAccess getAnyChunkImmediately(final int chunkX, final int chunkZ) { + return chunkProvider.getChunk(chunkX, chunkZ); + } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java index fbca9d03b..60dbcd16b 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java @@ -7,6 +7,10 @@ import java.util.stream.Stream; import javax.annotation.Nullable; +import ca.spottedleaf.starlight.common.chunk.ExtendedChunk; + +import ca.spottedleaf.starlight.common.light.StarLightEngine; + import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import it.unimi.dsi.fastutil.longs.LongSet; @@ -30,6 +34,7 @@ import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.ticks.BlackholeTickAccess; import net.minecraft.world.ticks.TickContainerAccess; +import net.minecraftforge.fml.ModList; public class WrappedChunk extends ChunkAccess { @@ -50,11 +55,17 @@ public class WrappedChunk extends ChunkAccess { this.x = x; this.z = z; - this.sections = new LevelChunkSection[16]; + // Do not hard code the number of chunk sections + this.sections = new LevelChunkSection[world.getSectionsCount()]; - for (int i = 0; i < 16; i++) { + for (int i = 0; i < this.sections.length; i++) { sections[i] = new WrappedChunkSection(this, i << 4); } + // If Starlight is loaded, initialize its NibbleArrays for this chunk to default values + if (ModList.get().isLoaded("starlight")) { + ((ExtendedChunk)this).setBlockNibbles(StarLightEngine.getFilledEmptyLight(this)); + ((ExtendedChunk)this).setSkyNibbles(StarLightEngine.getFilledEmptyLight(this)); + } } @Override From 56fd2e0a636582f934f5fdf02079200f3f9d6029 Mon Sep 17 00:00:00 2001 From: Aeiou <3160746+AeiouEnigma@users.noreply.github.com> Date: Sun, 19 Dec 2021 17:17:17 -0500 Subject: [PATCH 04/42] Change from jetbrains @NotNull to javax @Nonnull annotation in PlacementSimulationWorld --- .../utility/worldWrappers/PlacementSimulationWorld.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java index 1f0b289d3..60410efd9 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java @@ -22,7 +22,7 @@ import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.lighting.LevelLightEngine; -import org.jetbrains.annotations.NotNull; +import javax.annotation.Nonnull; public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWorld { public Map blocksAdded; @@ -39,7 +39,7 @@ public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWo this(wrapped, c, new WrappedChunkProvider()); } - public PlacementSimulationWorld(Level wrapped, @NotNull Contraption c, WrappedChunkProvider chunkProvider) { + public PlacementSimulationWorld(Level wrapped, @Nonnull Contraption c, WrappedChunkProvider chunkProvider) { super(wrapped, chunkProvider); contraption = c; this.chunkProvider = chunkProvider.setPlacementWorld(this); From 3415ba97ac9597ca79f68c3ccb17ba43386bbe17 Mon Sep 17 00:00:00 2001 From: Aeiou <3160746+AeiouEnigma@users.noreply.github.com> Date: Sun, 19 Dec 2021 18:43:38 -0500 Subject: [PATCH 05/42] Add Starlight to Mods enum, along with an executeIfInstalled method. Use said method in WrappedChunk in place of an if-statement to execute Starlight-dependent code --- src/main/java/com/simibubi/create/compat/Mods.java | 11 +++++++++++ .../utility/worldWrappers/chunk/WrappedChunk.java | 7 ++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/simibubi/create/compat/Mods.java b/src/main/java/com/simibubi/create/compat/Mods.java index b32960505..6f6684554 100644 --- a/src/main/java/com/simibubi/create/compat/Mods.java +++ b/src/main/java/com/simibubi/create/compat/Mods.java @@ -12,6 +12,7 @@ import net.minecraftforge.fml.ModList; */ public enum Mods { DYNAMICTREES, + STARLIGHT, TCONSTRUCT; /** @@ -38,4 +39,14 @@ public enum Mods { return Optional.of(toRun.get().get()); return Optional.empty(); } + + /** + * Simple hook to execute code if a mod is installed + * @param toExecute will be executed only if the mod is loaded + */ + public void executeIfInstalled(Supplier toExecute) { + if (isLoaded()) { + toExecute.get().run(); + } + } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java index 60dbcd16b..cb12d4c83 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java @@ -11,6 +11,7 @@ import ca.spottedleaf.starlight.common.chunk.ExtendedChunk; import ca.spottedleaf.starlight.common.light.StarLightEngine; +import com.simibubi.create.compat.Mods; import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import it.unimi.dsi.fastutil.longs.LongSet; @@ -34,7 +35,6 @@ import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.ticks.BlackholeTickAccess; import net.minecraft.world.ticks.TickContainerAccess; -import net.minecraftforge.fml.ModList; public class WrappedChunk extends ChunkAccess { @@ -61,11 +61,12 @@ public class WrappedChunk extends ChunkAccess { for (int i = 0; i < this.sections.length; i++) { sections[i] = new WrappedChunkSection(this, i << 4); } + // If Starlight is loaded, initialize its NibbleArrays for this chunk to default values - if (ModList.get().isLoaded("starlight")) { + Mods.STARLIGHT.executeIfInstalled(() -> () -> { ((ExtendedChunk)this).setBlockNibbles(StarLightEngine.getFilledEmptyLight(this)); ((ExtendedChunk)this).setSkyNibbles(StarLightEngine.getFilledEmptyLight(this)); - } + }); } @Override From 6938bc2e063df2e2424ffd84d6c75c736af2016c Mon Sep 17 00:00:00 2001 From: Aeiou <3160746+AeiouEnigma@users.noreply.github.com> Date: Sat, 18 Dec 2021 17:37:42 -0500 Subject: [PATCH 06/42] Implement Starlight compatibility. --- build.gradle | 1 + .../structureMovement/ContraptionWorld.java | 10 ++++++ .../render/ContraptionRenderDispatcher.java | 2 +- .../PlacementSimulationWorld.java | 35 +++++++++++++++++-- .../worldWrappers/chunk/WrappedChunk.java | 15 ++++++-- 5 files changed, 57 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index 25b917f58..beb2fff1d 100644 --- a/build.gradle +++ b/build.gradle @@ -170,6 +170,7 @@ dependencies { compileOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}:${jei_version}:api") runtimeOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}:${jei_version}") + compileOnly fg.deobf("curse.maven:starlight-526854:3559934") // implementation fg.deobf("curse.maven:druidcraft-340991:3101903") // implementation fg.deobf("com.ferreusveritas.dynamictrees:DynamicTrees-1.16.5:0.10.0-Beta25") diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java index 16abe0041..d08a28337 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java @@ -46,4 +46,14 @@ public class ContraptionWorld extends WrappedWorld { public void playLocalSound(double x, double y, double z, SoundEvent p_184134_7_, SoundSource p_184134_8_, float p_184134_9_, float p_184134_10_, boolean p_184134_11_) { world.playLocalSound(x, y, z, p_184134_7_, p_184134_8_, p_184134_9_, p_184134_10_, p_184134_11_); } + + @Override + public int getMinBuildHeight() { + return -1 * (int)this.contraption.bounds.getYsize(); + } + + @Override + public int getHeight() { + return -2 * getMinBuildHeight(); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java index 59ef2e7eb..82f43ce96 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java @@ -104,7 +104,7 @@ public class ContraptionRenderDispatcher { } public static PlacementSimulationWorld setupRenderWorld(Level world, Contraption c) { - PlacementSimulationWorld renderWorld = new PlacementSimulationWorld(world); + PlacementSimulationWorld renderWorld = new PlacementSimulationWorld(world, c); renderWorld.setTileEntities(c.presentTileEntities.values()); diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java index e97ec1adc..1f0b289d3 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java @@ -9,6 +9,8 @@ import java.util.function.Predicate; import com.jozufozu.flywheel.api.FlywheelWorld; +import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; + import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.world.level.Level; @@ -16,8 +18,12 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.lighting.LevelLightEngine; +import org.jetbrains.annotations.NotNull; + public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWorld { public Map blocksAdded; public Map tesAdded; @@ -27,12 +33,15 @@ public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWo public WrappedChunkProvider chunkProvider; private final BlockPos.MutableBlockPos scratch = new BlockPos.MutableBlockPos(); - public PlacementSimulationWorld(Level wrapped) { - this(wrapped, new WrappedChunkProvider()); + private final Contraption contraption; + + public PlacementSimulationWorld(Level wrapped, Contraption c) { + this(wrapped, c, new WrappedChunkProvider()); } - public PlacementSimulationWorld(Level wrapped, WrappedChunkProvider chunkProvider) { + public PlacementSimulationWorld(Level wrapped, @NotNull Contraption c, WrappedChunkProvider chunkProvider) { super(wrapped, chunkProvider); + contraption = c; this.chunkProvider = chunkProvider.setPlacementWorld(this); spannedSections = new HashSet<>(); lighter = new LevelLightEngine(chunkProvider, true, false); // blockLight, skyLight @@ -117,4 +126,24 @@ public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWo return state; return Blocks.AIR.defaultBlockState(); } + + @Override + public int getMinBuildHeight() { + return contraption.getContraptionWorld().getMinBuildHeight(); + } + + @Override + public int getHeight() { + return contraption.getContraptionWorld().getHeight(); + } + + // Override Starlight's ExtendedWorld interface methods: + + public LevelChunk getChunkAtImmediately(final int chunkX, final int chunkZ) { + return chunkProvider.getChunk(chunkX, chunkZ, false); + } + + public ChunkAccess getAnyChunkImmediately(final int chunkX, final int chunkZ) { + return chunkProvider.getChunk(chunkX, chunkZ); + } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java index fbca9d03b..60dbcd16b 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java @@ -7,6 +7,10 @@ import java.util.stream.Stream; import javax.annotation.Nullable; +import ca.spottedleaf.starlight.common.chunk.ExtendedChunk; + +import ca.spottedleaf.starlight.common.light.StarLightEngine; + import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import it.unimi.dsi.fastutil.longs.LongSet; @@ -30,6 +34,7 @@ import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.ticks.BlackholeTickAccess; import net.minecraft.world.ticks.TickContainerAccess; +import net.minecraftforge.fml.ModList; public class WrappedChunk extends ChunkAccess { @@ -50,11 +55,17 @@ public class WrappedChunk extends ChunkAccess { this.x = x; this.z = z; - this.sections = new LevelChunkSection[16]; + // Do not hard code the number of chunk sections + this.sections = new LevelChunkSection[world.getSectionsCount()]; - for (int i = 0; i < 16; i++) { + for (int i = 0; i < this.sections.length; i++) { sections[i] = new WrappedChunkSection(this, i << 4); } + // If Starlight is loaded, initialize its NibbleArrays for this chunk to default values + if (ModList.get().isLoaded("starlight")) { + ((ExtendedChunk)this).setBlockNibbles(StarLightEngine.getFilledEmptyLight(this)); + ((ExtendedChunk)this).setSkyNibbles(StarLightEngine.getFilledEmptyLight(this)); + } } @Override From 11e6c3f45aa21bfa15bccdeda351e6e883e7bb6c Mon Sep 17 00:00:00 2001 From: Aeiou <3160746+AeiouEnigma@users.noreply.github.com> Date: Sun, 19 Dec 2021 17:17:17 -0500 Subject: [PATCH 07/42] Change from jetbrains @NotNull to javax @Nonnull annotation in PlacementSimulationWorld --- .../utility/worldWrappers/PlacementSimulationWorld.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java index 1f0b289d3..60410efd9 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java @@ -22,7 +22,7 @@ import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.lighting.LevelLightEngine; -import org.jetbrains.annotations.NotNull; +import javax.annotation.Nonnull; public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWorld { public Map blocksAdded; @@ -39,7 +39,7 @@ public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWo this(wrapped, c, new WrappedChunkProvider()); } - public PlacementSimulationWorld(Level wrapped, @NotNull Contraption c, WrappedChunkProvider chunkProvider) { + public PlacementSimulationWorld(Level wrapped, @Nonnull Contraption c, WrappedChunkProvider chunkProvider) { super(wrapped, chunkProvider); contraption = c; this.chunkProvider = chunkProvider.setPlacementWorld(this); From 7fd531199c74d6550d4272e37fc4cc374987758d Mon Sep 17 00:00:00 2001 From: Aeiou <3160746+AeiouEnigma@users.noreply.github.com> Date: Sun, 19 Dec 2021 18:43:38 -0500 Subject: [PATCH 08/42] Add Starlight to Mods enum, along with an executeIfInstalled method. Use said method in WrappedChunk in place of an if-statement to execute Starlight-dependent code --- src/main/java/com/simibubi/create/compat/Mods.java | 11 +++++++++++ .../utility/worldWrappers/chunk/WrappedChunk.java | 7 ++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/simibubi/create/compat/Mods.java b/src/main/java/com/simibubi/create/compat/Mods.java index b32960505..6f6684554 100644 --- a/src/main/java/com/simibubi/create/compat/Mods.java +++ b/src/main/java/com/simibubi/create/compat/Mods.java @@ -12,6 +12,7 @@ import net.minecraftforge.fml.ModList; */ public enum Mods { DYNAMICTREES, + STARLIGHT, TCONSTRUCT; /** @@ -38,4 +39,14 @@ public enum Mods { return Optional.of(toRun.get().get()); return Optional.empty(); } + + /** + * Simple hook to execute code if a mod is installed + * @param toExecute will be executed only if the mod is loaded + */ + public void executeIfInstalled(Supplier toExecute) { + if (isLoaded()) { + toExecute.get().run(); + } + } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java index 60dbcd16b..cb12d4c83 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java @@ -11,6 +11,7 @@ import ca.spottedleaf.starlight.common.chunk.ExtendedChunk; import ca.spottedleaf.starlight.common.light.StarLightEngine; +import com.simibubi.create.compat.Mods; import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import it.unimi.dsi.fastutil.longs.LongSet; @@ -34,7 +35,6 @@ import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.ticks.BlackholeTickAccess; import net.minecraft.world.ticks.TickContainerAccess; -import net.minecraftforge.fml.ModList; public class WrappedChunk extends ChunkAccess { @@ -61,11 +61,12 @@ public class WrappedChunk extends ChunkAccess { for (int i = 0; i < this.sections.length; i++) { sections[i] = new WrappedChunkSection(this, i << 4); } + // If Starlight is loaded, initialize its NibbleArrays for this chunk to default values - if (ModList.get().isLoaded("starlight")) { + Mods.STARLIGHT.executeIfInstalled(() -> () -> { ((ExtendedChunk)this).setBlockNibbles(StarLightEngine.getFilledEmptyLight(this)); ((ExtendedChunk)this).setSkyNibbles(StarLightEngine.getFilledEmptyLight(this)); - } + }); } @Override From 5e09cc3de2bd1687b2a4f31e9e2482ffa27c93e5 Mon Sep 17 00:00:00 2001 From: Aeiou <3160746+AeiouEnigma@users.noreply.github.com> Date: Mon, 20 Dec 2021 11:56:12 -0500 Subject: [PATCH 09/42] Use implementation instead of compileOnly for starlight in build.gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index beb2fff1d..bdc52ff63 100644 --- a/build.gradle +++ b/build.gradle @@ -170,7 +170,7 @@ dependencies { compileOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}:${jei_version}:api") runtimeOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}:${jei_version}") - compileOnly fg.deobf("curse.maven:starlight-526854:3559934") + implementation fg.deobf("curse.maven:starlight-526854:3559934") // implementation fg.deobf("curse.maven:druidcraft-340991:3101903") // implementation fg.deobf("com.ferreusveritas.dynamictrees:DynamicTrees-1.16.5:0.10.0-Beta25") From e6c99b250e489562bae8729fadef087801d9eddf Mon Sep 17 00:00:00 2001 From: Aeiou <3160746+AeiouEnigma@users.noreply.github.com> Date: Mon, 20 Dec 2021 16:43:06 -0500 Subject: [PATCH 10/42] Add more LevelHeightAccessor Overrides to WrappedWorld to avoid logical conflicts with other mods which may make changes to the default vanilla implementations of these methods. In particular, Create Refabricated would conflict with Lithium if Starlight was installed. These changes prevent such an issue from occurring if a Forge mod were to attempt a similar optimization to Lithium's, where Level heights are assumed to behave in predictable, static ways --- .../structureMovement/ContraptionWorld.java | 11 +++-- .../PlacementSimulationWorld.java | 14 +++--- .../utility/worldWrappers/WrappedWorld.java | 48 ++++++++++++++++++- 3 files changed, 62 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java index d08a28337..da09487b1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java @@ -14,11 +14,14 @@ import net.minecraft.world.phys.Vec3; public class ContraptionWorld extends WrappedWorld { final Contraption contraption; + private final int minBuildHeight, height; public ContraptionWorld(Level world, Contraption contraption) { super(world); this.contraption = contraption; + minBuildHeight = - (int) contraption.bounds.getYsize() + 1; + height = minBuildHeight * (-2); } @@ -48,12 +51,12 @@ public class ContraptionWorld extends WrappedWorld { } @Override - public int getMinBuildHeight() { - return -1 * (int)this.contraption.bounds.getYsize(); + public int getHeight() { + return this.height; } @Override - public int getHeight() { - return -2 * getMinBuildHeight(); + public int getMinBuildHeight() { + return this.minBuildHeight; } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java index 60410efd9..a3030eaff 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java @@ -11,6 +11,8 @@ import com.jozufozu.flywheel.api.FlywheelWorld; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; +import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionWorld; + import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.world.level.Level; @@ -33,7 +35,7 @@ public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWo public WrappedChunkProvider chunkProvider; private final BlockPos.MutableBlockPos scratch = new BlockPos.MutableBlockPos(); - private final Contraption contraption; + private final ContraptionWorld contraptionWorld; public PlacementSimulationWorld(Level wrapped, Contraption c) { this(wrapped, c, new WrappedChunkProvider()); @@ -41,7 +43,7 @@ public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWo public PlacementSimulationWorld(Level wrapped, @Nonnull Contraption c, WrappedChunkProvider chunkProvider) { super(wrapped, chunkProvider); - contraption = c; + contraptionWorld = c.getContraptionWorld(); this.chunkProvider = chunkProvider.setPlacementWorld(this); spannedSections = new HashSet<>(); lighter = new LevelLightEngine(chunkProvider, true, false); // blockLight, skyLight @@ -128,13 +130,13 @@ public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWo } @Override - public int getMinBuildHeight() { - return contraption.getContraptionWorld().getMinBuildHeight(); + public int getHeight() { + return contraptionWorld.getHeight(); } @Override - public int getHeight() { - return contraption.getContraptionWorld().getHeight(); + public int getMinBuildHeight() { + return contraptionWorld.getMinBuildHeight(); } // Override Starlight's ExtendedWorld interface methods: diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java index fe405971a..802268f3b 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java @@ -11,6 +11,7 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.RegistryAccess; +import net.minecraft.core.SectionPos; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.tags.TagContainer; @@ -95,7 +96,7 @@ public class WrappedWorld extends Level { public LevelTickAccess getBlockTicks() { return world.getBlockTicks(); } - + @Override public LevelTickAccess getFluidTicks() { return world.getFluidTicks(); @@ -202,4 +203,49 @@ public class WrappedWorld extends Level { protected LevelEntityGetter getEntities() { return entityGetter; } + + @Override + public int getMaxBuildHeight() { + return this.getMinBuildHeight() + this.getHeight(); + } + + @Override + public int getSectionsCount() { + return this.getMaxSection() - this.getMinSection(); + } + + @Override + public int getMinSection() { + return SectionPos.blockToSectionCoord(this.getMinBuildHeight()); + } + + @Override + public int getMaxSection() { + return SectionPos.blockToSectionCoord(this.getMaxBuildHeight() - 1) + 1; + } + + @Override + public boolean isOutsideBuildHeight(BlockPos pos) { + return this.isOutsideBuildHeight(pos.getY()); + } + + @Override + public boolean isOutsideBuildHeight(int y) { + return y < this.getMinBuildHeight() || y >= this.getMaxBuildHeight(); + } + + @Override + public int getSectionIndex(int y) { + return this.getSectionIndexFromSectionY(SectionPos.blockToSectionCoord(y)); + } + + @Override + public int getSectionIndexFromSectionY(int sectionY) { + return sectionY - this.getMinSection(); + } + + @Override + public int getSectionYFromSectionIndex(int sectionIndex) { + return sectionIndex + this.getMinSection(); + } } From 5f46560fb2b00ab59b960557302d96a7368195ae Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Mon, 20 Dec 2021 22:38:34 -0800 Subject: [PATCH 11/42] StructType doesn't need #asBatched and #asInstanced - More organized this way - BatchingTransformer function moved into Batched --- .../contraptions/base/flwdata/BeltType.java | 44 +++++++++---------- .../base/flwdata/RotatingType.java | 25 +++++------ .../components/actors/flwdata/ActorType.java | 6 +-- .../logistics/block/flap/FlapType.java | 26 +++++------ .../simibubi/create/events/ClientEvents.java | 4 +- 5 files changed, 46 insertions(+), 59 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java index 8e3a62a6b..5356f0306 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java @@ -1,11 +1,11 @@ package com.simibubi.create.content.contraptions.base.flwdata; import com.jozufozu.flywheel.api.struct.Batched; -import com.jozufozu.flywheel.api.struct.BatchingTransformer; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; +import com.jozufozu.flywheel.core.model.ModelTransformer; import com.jozufozu.flywheel.util.RenderMath; import com.mojang.math.Quaternion; import com.simibubi.create.content.contraptions.KineticDebugger; @@ -13,7 +13,6 @@ import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import net.minecraft.client.renderer.LightTexture; import net.minecraft.resources.ResourceLocation; public class BeltType implements Instanced, Batched { @@ -38,29 +37,26 @@ public class BeltType implements Instanced, Batched { } @Override - public BatchingTransformer getTransformer() { - return (d, sbb) -> { + public void transform(BeltData d, ModelTransformer.Params b) { + float spriteHeight = d.maxV - d.minV; + double scroll = d.rotationalSpeed * AnimationTickHolder.getRenderTime() / (31.5 * 16) + d.rotationOffset; + scroll = scroll - Math.floor(scroll); + scroll = scroll * spriteHeight * RenderMath.f(d.scrollMult); - float spriteHeight = d.maxV - d.minV; - double scroll = d.rotationalSpeed * AnimationTickHolder.getRenderTime() / (31.5 * 16) + d.rotationOffset; - scroll = scroll - Math.floor(scroll); - scroll = scroll * spriteHeight * RenderMath.f(d.scrollMult); + float finalScroll = (float) scroll; + b.shiftUV((builder, u, v) -> { + float targetU = u - d.sourceU + d.minU; + float targetV = v - d.sourceV + d.minV + + finalScroll; + builder.uv(targetU, targetV); + }); - float finalScroll = (float) scroll; - sbb.shiftUV((builder, u, v) -> { - float targetU = u - d.sourceU + d.minU; - float targetV = v - d.sourceV + d.minV - + finalScroll; - builder.uv(targetU, targetV); - }); - - sbb.translate(d.x + 0.5, d.y + 0.5, d.z + 0.5) - .multiply(new Quaternion(d.qX, d.qY, d.qZ, d.qW)) - .unCentre() - .light(d.getPackedLight()); - if (KineticDebugger.isActive()) { - sbb.color(d.r, d.g, d.b, d.a); - } - }; + b.translate(d.x + 0.5, d.y + 0.5, d.z + 0.5) + .multiply(new Quaternion(d.qX, d.qY, d.qZ, d.qW)) + .unCentre() + .light(d.getPackedLight()); + if (KineticDebugger.isActive()) { + b.color(d.r, d.g, d.b, d.a); + } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java index 400afd94f..fd1f444b5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java @@ -1,11 +1,11 @@ package com.simibubi.create.content.contraptions.base.flwdata; import com.jozufozu.flywheel.api.struct.Batched; -import com.jozufozu.flywheel.api.struct.BatchingTransformer; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; +import com.jozufozu.flywheel.core.model.ModelTransformer; import com.jozufozu.flywheel.util.RenderMath; import com.mojang.math.Vector3f; import com.simibubi.create.content.contraptions.KineticDebugger; @@ -13,7 +13,6 @@ import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import net.minecraft.client.renderer.LightTexture; import net.minecraft.resources.ResourceLocation; public class RotatingType implements Instanced, Batched { @@ -38,19 +37,17 @@ public class RotatingType implements Instanced, Batched getTransformer() { - return (d, b) -> { - float angle = ((AnimationTickHolder.getRenderTime() * d.rotationalSpeed * 3f / 10 + d.rotationOffset) % 360); + public void transform(RotatingData d, ModelTransformer.Params b) { + float angle = ((AnimationTickHolder.getRenderTime() * d.rotationalSpeed * 3f / 10 + d.rotationOffset) % 360); - Vector3f axis = new Vector3f(RenderMath.f(d.rotationAxisX), RenderMath.f(d.rotationAxisY), RenderMath.f(d.rotationAxisZ)); - b.light(d.getPackedLight()) - .translate(d.x + 0.5, d.y + 0.5, d.z + 0.5) - .multiply(axis.rotationDegrees(angle)) - .unCentre(); + Vector3f axis = new Vector3f(RenderMath.f(d.rotationAxisX), RenderMath.f(d.rotationAxisY), RenderMath.f(d.rotationAxisZ)); + b.light(d.getPackedLight()) + .translate(d.x + 0.5, d.y + 0.5, d.z + 0.5) + .multiply(axis.rotationDegrees(angle)) + .unCentre(); - if (KineticDebugger.isActive()) { - b.color(d.r, d.g, d.b, d.a); - } - }; + if (KineticDebugger.isActive()) { + b.color(d.r, d.g, d.b, d.a); + } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java index 5ff165d7c..8978472ae 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java @@ -1,11 +1,11 @@ package com.simibubi.create.content.contraptions.components.actors.flwdata; import com.jozufozu.flywheel.api.struct.Batched; -import com.jozufozu.flywheel.api.struct.BatchingTransformer; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; +import com.jozufozu.flywheel.core.model.ModelTransformer; import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; @@ -33,9 +33,7 @@ public class ActorType implements Instanced, Batched { } @Override - public BatchingTransformer getTransformer() { - return (d, sbb) -> { + public void transform(ActorData d, ModelTransformer.Params b) { - }; } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java index 4d3a67b04..8eecc5662 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java @@ -1,16 +1,14 @@ package com.simibubi.create.content.logistics.block.flap; import com.jozufozu.flywheel.api.struct.Batched; -import com.jozufozu.flywheel.api.struct.BatchingTransformer; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.mojang.math.Vector3f; +import com.jozufozu.flywheel.core.model.ModelTransformer; import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; -import net.minecraft.client.renderer.LightTexture; import net.minecraft.resources.ResourceLocation; public class FlapType implements Instanced, Batched { @@ -35,18 +33,16 @@ public class FlapType implements Instanced, Batched { } @Override - public BatchingTransformer getTransformer() { - return (d, sbb) -> { - sbb.translate(d.x, d.y, d.z) - .centre() - .rotateY(-d.horizontalAngle) - .unCentre() - .translate(d.pivotX, d.pivotY, d.pivotZ) - .rotateX(getFlapAngle(d.flapness, d.intensity, d.flapScale)) - .translateBack(d.pivotX, d.pivotY, d.pivotZ) - .translate(d.segmentOffsetX, d.segmentOffsetY, d.segmentOffsetZ) - .light(d.getPackedLight()); - }; + public void transform(FlapData d, ModelTransformer.Params b) { + b.translate(d.x, d.y, d.z) + .centre() + .rotateY(-d.horizontalAngle) + .unCentre() + .translate(d.pivotX, d.pivotY, d.pivotZ) + .rotateX(getFlapAngle(d.flapness, d.intensity, d.flapScale)) + .translateBack(d.pivotX, d.pivotY, d.pivotZ) + .translate(d.segmentOffsetX, d.segmentOffsetY, d.segmentOffsetZ) + .light(d.getPackedLight()); } private static float getFlapAngle(float flapness, float intensity, float scale) { diff --git a/src/main/java/com/simibubi/create/events/ClientEvents.java b/src/main/java/com/simibubi/create/events/ClientEvents.java index ed817e63b..bbb796f35 100644 --- a/src/main/java/com/simibubi/create/events/ClientEvents.java +++ b/src/main/java/com/simibubi/create/events/ClientEvents.java @@ -283,9 +283,9 @@ public class ClientEvents { Level level = Minecraft.getInstance().level; BlockPos blockPos = info.getBlockPosition(); FluidState fluidstate = level.getFluidState(blockPos); - if (info.getPosition().y > blockPos.getY() + fluidstate.getHeight(level, blockPos)) + if (info.getPosition().y > blockPos.getY() + fluidstate.getHeight(level, blockPos)) return; - + Fluid fluid = fluidstate.getType(); if (fluid.isSame(AllFluids.CHOCOLATE.get())) { From aa96a28f0bc5c669736b8a32e25f9bc15b93eab3 Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Tue, 21 Dec 2021 22:47:30 -0800 Subject: [PATCH 12/42] Make the BatchingEngine not jittery - Stop having threads compete for a single BufferBuilder - ...by skirting around minecraft's BufferSource - Begin work on making vertex writing sane --- .../structureMovement/glue/GlueInstance.java | 8 -------- .../render/FlwContraptionManager.java | 2 +- .../create/foundation/render/SuperByteBuffer.java | 12 ++++++------ 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java index 46a053521..cb4cf3e2f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java @@ -4,9 +4,7 @@ import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialGroup; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.api.instance.ITickableInstance; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; import com.jozufozu.flywheel.backend.instancing.entity.EntityInstance; -import com.jozufozu.flywheel.core.Formats; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.instancing.ConditionalInstance; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; @@ -103,7 +101,6 @@ public class GlueInstance extends EntityInstance implements ITi return "glue"; } - @Override public void buffer(VertexConsumer buffer) { Vec3 diff = Vec3.atLowerCornerOf(Direction.SOUTH.getNormal()); Vec3 extension = diff.normalize() @@ -162,11 +159,6 @@ public class GlueInstance extends EntityInstance implements ITi return 8; } - @Override - public VertexFormat format() { - return Formats.UNLIT_MODEL; - } - @Override public ModelReader getReader() { return this; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java index f4794fa75..a3b438224 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java @@ -62,7 +62,7 @@ public class FlwContraptionManager extends ContraptionRenderManager, Translate, Translate Date: Wed, 22 Dec 2021 00:22:43 -0800 Subject: [PATCH 13/42] util and core cleanup - Consolidate/audit utility classes - Move more towards sane vertex types --- .../structureMovement/Contraption.java | 10 +- .../structureMovement/ContraptionLighter.java | 4 +- .../NonStationaryLighter.java | 4 +- .../bearing/AnchoredLighter.java | 2 +- .../structureMovement/glue/GlueInstance.java | 152 +----------------- .../structureMovement/glue/GlueModel.java | 99 ++++++++++++ .../piston/PistonLighter.java | 2 +- .../pulley/AbstractPulleyInstance.java | 4 +- .../pulley/PulleyLighter.java | 2 +- .../render/EmptyLighter.java | 2 +- .../render/FlwContraptionManager.java | 4 +- .../relays/belt/BeltTileEntity.java | 4 +- .../foundation/render/AllInstanceFormats.java | 4 +- .../foundation/render/SuperByteBuffer.java | 8 +- 14 files changed, 126 insertions(+), 175 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java 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 66ad205e5..312afd33c 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 @@ -25,8 +25,8 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.tuple.MutablePair; import org.apache.commons.lang3.tuple.Pair; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.light.ImmutableBox; +import com.jozufozu.flywheel.util.box.GridAlignedBB; +import com.jozufozu.flywheel.util.box.ImmutableBox; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllInteractionBehaviours; import com.simibubi.create.AllMovementBehaviours; @@ -874,9 +874,9 @@ public abstract class Contraption { } ListTag paletteNBT = new ListTag(); - for(int i = 0; i < palette.getSize(); ++i) + for(int i = 0; i < palette.getSize(); ++i) paletteNBT.add(NbtUtils.writeBlockState(palette.values.byId(i))); - + compound.put("Palette", paletteNBT); compound.put("BlockList", blockList); @@ -891,7 +891,7 @@ public abstract class Contraption { palette = new HashMapPalette<>(GameData.getBlockStateIDMap(), 16, (i, s) -> { throw new IllegalStateException("Palette Map index exceeded maximum"); }); - + ListTag list = c.getList("Palette", 10); palette.values.clear(); for (int i = 0; i < list.size(); ++i) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java index 95ea67501..76ac67287 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java @@ -1,8 +1,8 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import com.jozufozu.flywheel.light.GPULightVolume; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.light.ImmutableBox; +import com.jozufozu.flywheel.util.box.GridAlignedBB; +import com.jozufozu.flywheel.util.box.ImmutableBox; import com.jozufozu.flywheel.light.LightListener; import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.LightUpdater; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java index 363cd4afa..1e0cd0d8a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.light.ImmutableBox; +import com.jozufozu.flywheel.util.box.GridAlignedBB; +import com.jozufozu.flywheel.util.box.ImmutableBox; import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.MovingListener; import com.simibubi.create.foundation.config.AllConfigs; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/AnchoredLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/AnchoredLighter.java index 16bd4e82a..1f2a06669 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/AnchoredLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/AnchoredLighter.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.bearing; -import com.jozufozu.flywheel.light.GridAlignedBB; +import com.jozufozu.flywheel.util.box.GridAlignedBB; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java index cb4cf3e2f..dd7c8c3d1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java @@ -8,29 +8,21 @@ import com.jozufozu.flywheel.backend.instancing.entity.EntityInstance; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.instancing.ConditionalInstance; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; -import com.jozufozu.flywheel.core.model.Model; -import com.jozufozu.flywheel.util.ModelReader; -import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Quaternion; import com.simibubi.create.AllItems; -import com.simibubi.create.AllStitchedTextures; import com.simibubi.create.Create; import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.LightLayer; -import net.minecraft.world.phys.Vec3; public class GlueInstance extends EntityInstance implements ITickableInstance { - private static final boolean USE_ATLAS = false; private static final ResourceLocation TEXTURE = Create.asResource("textures/entity/super_glue/slime.png"); private final Quaternion rotation; @@ -51,9 +43,9 @@ public class GlueInstance extends EntityInstance implements ITi } private Instancer getInstancer(MaterialManager materialManager, SuperGlueEntity entity) { - MaterialGroup group = USE_ATLAS ? materialManager.defaultCutout() : materialManager.cutout(RenderType.entityCutout(TEXTURE)); + MaterialGroup group = GlueModel.USE_ATLAS ? materialManager.defaultCutout() : materialManager.cutout(RenderType.entityCutout(TEXTURE)); - return group.material(Materials.ORIENTED).model(entity.getType(), GlueModel::new); + return group.material(Materials.ORIENTED).model(entity.getType(), GlueModel::get); } @Override @@ -94,144 +86,4 @@ public class GlueInstance extends EntityInstance implements ITi || AllItems.SUPER_GLUE.isIn(player.getOffhandItem()); } - public static class GlueModel implements Model, ModelReader { - - @Override - public String name() { - return "glue"; - } - - public void buffer(VertexConsumer buffer) { - Vec3 diff = Vec3.atLowerCornerOf(Direction.SOUTH.getNormal()); - Vec3 extension = diff.normalize() - .scale(1 / 32f - 1 / 128f); - - Vec3 plane = VecHelper.axisAlingedPlaneOf(diff); - Direction.Axis axis = Direction.getNearest(diff.x, diff.y, diff.z) - .getAxis(); - - Vec3 start = Vec3.ZERO.subtract(extension); - Vec3 end = Vec3.ZERO.add(extension); - - plane = plane.scale(1 / 2f); - Vec3 a1 = plane.add(start); - Vec3 b1 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vec3 a2 = plane.add(start); - Vec3 b2 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vec3 a3 = plane.add(start); - Vec3 b3 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vec3 a4 = plane.add(start); - Vec3 b4 = plane.add(end); - - float minU; - float maxU; - float minV; - float maxV; - - if (USE_ATLAS) { - TextureAtlasSprite sprite = AllStitchedTextures.SUPER_GLUE.get(); - minU = sprite.getU0(); - maxU = sprite.getU1(); - minV = sprite.getV0(); - maxV = sprite.getV1(); - } else { - minU = minV = 0; - maxU = maxV = 1; - } - - // inside quad - buffer.vertex(a1.x, a1.y, a1.z).normal(0, 0, -1f).uv(maxU, minV).endVertex(); - buffer.vertex(a2.x, a2.y, a2.z).normal(0, 0, -1f).uv(maxU, maxV).endVertex(); - buffer.vertex(a3.x, a3.y, a3.z).normal(0, 0, -1f).uv(minU, maxV).endVertex(); - buffer.vertex(a4.x, a4.y, a4.z).normal(0, 0, -1f).uv(minU, minV).endVertex(); - // outside quad - buffer.vertex(b4.x, b4.y, b4.z).normal(0, 0, 1f).uv(minU, minV).endVertex(); - buffer.vertex(b3.x, b3.y, b3.z).normal(0, 0, 1f).uv(minU, maxV).endVertex(); - buffer.vertex(b2.x, b2.y, b2.z).normal(0, 0, 1f).uv(maxU, maxV).endVertex(); - buffer.vertex(b1.x, b1.y, b1.z).normal(0, 0, 1f).uv(maxU, minV).endVertex(); - } - - @Override - public int vertexCount() { - return 8; - } - - @Override - public ModelReader getReader() { - return this; - } - - @Override - public int getVertexCount() { - return 8; - } - - @Override - public float getX(int index) { - return 0; - } - - @Override - public float getY(int index) { - return 0; - } - - @Override - public float getZ(int index) { - return 0; - } - - @Override - public byte getR(int index) { - return (byte) 0xFF; - } - - @Override - public byte getG(int index) { - return (byte) 0xFF; - } - - @Override - public byte getB(int index) { - return (byte) 0xFF; - } - - @Override - public byte getA(int index) { - return (byte) 0xFF; - } - - @Override - public float getU(int index) { - return 0; - } - - @Override - public float getV(int index) { - return 0; - } - - @Override - public int getLight(int index) { - return 0; - } - - @Override - public float getNX(int index) { - return 0; - } - - @Override - public float getNY(int index) { - return 0; - } - - @Override - public float getNZ(int index) { - return index > 4 ? -1 : 1; - } - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java new file mode 100644 index 000000000..c5530c8b1 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java @@ -0,0 +1,99 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.glue; + +import com.jozufozu.flywheel.core.model.Model; +import com.jozufozu.flywheel.core.vertex.PosTexNormalVertexListUnsafe; +import com.jozufozu.flywheel.core.vertex.PosTexNormalWriter; +import com.jozufozu.flywheel.core.vertex.VertexList; +import com.mojang.blaze3d.platform.MemoryTracker; +import com.simibubi.create.AllStitchedTextures; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.core.Direction; +import net.minecraft.world.phys.Vec3; + +public class GlueModel implements Model { + + public static final GlueModel INSTANCE = new GlueModel(); + static final boolean USE_ATLAS = false; + + public static GlueModel get() { + return INSTANCE; + } + + private final PosTexNormalVertexListUnsafe reader; + + private GlueModel() { + PosTexNormalWriter writer = new PosTexNormalWriter(MemoryTracker.create(size())); + createGlueModel(writer); + reader = writer.intoReader(); + } + + @Override + public String name() { + return "glue"; + } + + @Override + public int vertexCount() { + return 8; + } + + @Override + public VertexList getReader() { + return reader; + } + + public static void createGlueModel(PosTexNormalWriter buffer) { + Vec3 diff = Vec3.atLowerCornerOf(Direction.SOUTH.getNormal()); + Vec3 extension = diff.normalize() + .scale(1 / 32f - 1 / 128f); + + Vec3 plane = VecHelper.axisAlingedPlaneOf(diff); + Direction.Axis axis = Direction.getNearest(diff.x, diff.y, diff.z) + .getAxis(); + + Vec3 start = Vec3.ZERO.subtract(extension); + Vec3 end = Vec3.ZERO.add(extension); + + plane = plane.scale(1 / 2f); + Vec3 a1 = plane.add(start); + Vec3 b1 = plane.add(end); + plane = VecHelper.rotate(plane, -90, axis); + Vec3 a2 = plane.add(start); + Vec3 b2 = plane.add(end); + plane = VecHelper.rotate(plane, -90, axis); + Vec3 a3 = plane.add(start); + Vec3 b3 = plane.add(end); + plane = VecHelper.rotate(plane, -90, axis); + Vec3 a4 = plane.add(start); + Vec3 b4 = plane.add(end); + + float minU; + float maxU; + float minV; + float maxV; + + if (USE_ATLAS) { + TextureAtlasSprite sprite = AllStitchedTextures.SUPER_GLUE.get(); + minU = sprite.getU0(); + maxU = sprite.getU1(); + minV = sprite.getV0(); + maxV = sprite.getV1(); + } else { + minU = minV = 0; + maxU = maxV = 1; + } + + // inside quad + buffer.putVertex((float) a1.x, (float) a1.y, (float) a1.z, 0, 0, -1, maxU, minV); + buffer.putVertex((float) a2.x, (float) a2.y, (float) a2.z, 0, 0, -1, maxU, maxV); + buffer.putVertex((float) a3.x, (float) a3.y, (float) a3.z, 0, 0, -1, minU, maxV); + buffer.putVertex((float) a4.x, (float) a4.y, (float) a4.z, 0, 0, -1, minU, minV); + // outside quad + buffer.putVertex((float) b4.x, (float) b4.y, (float) b4.z, 0, 0, 1f, minU, minV); + buffer.putVertex((float) b3.x, (float) b3.y, (float) b3.z, 0, 0, 1f, minU, maxV); + buffer.putVertex((float) b2.x, (float) b2.y, (float) b2.z, 0, 0, 1f, maxU, maxV); + buffer.putVertex((float) b1.x, (float) b1.y, (float) b1.z, 0, 0, 1f, maxU, minV); + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonLighter.java index 2072a657f..5d834de18 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonLighter.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.piston; -import com.jozufozu.flywheel.light.GridAlignedBB; +import com.jozufozu.flywheel.util.box.GridAlignedBB; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; import net.minecraft.core.Vec3i; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java index 8906a5ab0..f4c600ebf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java @@ -7,8 +7,8 @@ import com.jozufozu.flywheel.core.instancing.ConditionalInstance; import com.jozufozu.flywheel.core.instancing.GroupInstance; import com.jozufozu.flywheel.core.instancing.SelectInstance; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.light.ImmutableBox; +import com.jozufozu.flywheel.util.box.GridAlignedBB; +import com.jozufozu.flywheel.util.box.ImmutableBox; import com.jozufozu.flywheel.light.LightPacking; import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.LightUpdater; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyLighter.java index b959b2ca4..2a1faf43c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyLighter.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.pulley; -import com.jozufozu.flywheel.light.GridAlignedBB; +import com.jozufozu.flywheel.util.box.GridAlignedBB; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/EmptyLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/EmptyLighter.java index da4a5384b..c922a2ccd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/EmptyLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/EmptyLighter.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.render; -import com.jozufozu.flywheel.light.GridAlignedBB; +import com.jozufozu.flywheel.util.box.GridAlignedBB; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java index a3b438224..e6376222b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java @@ -8,7 +8,7 @@ import com.jozufozu.flywheel.backend.RenderLayer; import com.jozufozu.flywheel.backend.gl.GlTextureUnit; import com.jozufozu.flywheel.backend.gl.GlVertexArray; import com.jozufozu.flywheel.event.RenderLayerEvent; -import com.jozufozu.flywheel.util.TextureBinder; +import com.jozufozu.flywheel.util.Textures; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.foundation.render.AllProgramSpecs; import com.simibubi.create.foundation.render.CreateContexts; @@ -44,7 +44,7 @@ public class FlwContraptionManager extends ContraptionRenderManager, Translate, Rotate, TStack { - private final ModelReader template; + private final VertexList template; // Vertex Position private final PoseStack transforms; @@ -64,7 +64,7 @@ public class SuperByteBuffer implements Scale, Translate Date: Wed, 22 Dec 2021 02:45:46 -0800 Subject: [PATCH 14/42] Finally safe vertex formats - true to false for Pepper - IBufferedModel -> BufferedModel - VertexFormat -> BufferLayout - Use ImmutableList in BufferLayout - LayoutItem naming consistency - Try to reduce usage of raw BufferLayouts - Move vertex interfaces to api package - #createWriter and #createReader in VertexType - Some documentation --- .../contraptions/base/flwdata/BeltType.java | 6 ++-- ...eBeltWriter.java => BeltWriterUnsafe.java} | 4 +-- ...icWriter.java => KineticWriterUnsafe.java} | 6 ++-- .../base/flwdata/RotatingType.java | 6 ++-- ...gWriter.java => RotatingWriterUnsafe.java} | 4 +-- .../components/actors/flwdata/ActorType.java | 4 +-- .../structureMovement/glue/GlueModel.java | 12 +++---- .../logistics/block/flap/FlapType.java | 4 +-- .../foundation/render/AllInstanceFormats.java | 36 +++++++++---------- .../foundation/render/SuperByteBuffer.java | 2 +- .../shaders/contraption_structure.vert | 4 +-- 11 files changed, 44 insertions(+), 44 deletions(-) rename src/main/java/com/simibubi/create/content/contraptions/base/flwdata/{UnsafeBeltWriter.java => BeltWriterUnsafe.java} (87%) rename src/main/java/com/simibubi/create/content/contraptions/base/flwdata/{UnsafeKineticWriter.java => KineticWriterUnsafe.java} (73%) rename src/main/java/com/simibubi/create/content/contraptions/base/flwdata/{UnsafeRotatingWriter.java => RotatingWriterUnsafe.java} (81%) diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java index 5356f0306..2a1e7ae85 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.base.flwdata; import com.jozufozu.flywheel.api.struct.Batched; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; +import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; import com.jozufozu.flywheel.core.model.ModelTransformer; import com.jozufozu.flywheel.util.RenderMath; @@ -22,13 +22,13 @@ public class BeltType implements Instanced, Batched { } @Override - public VertexFormat format() { + public BufferLayout getLayout() { return AllInstanceFormats.BELT; } @Override public StructWriter getWriter(VecBuffer backing) { - return new UnsafeBeltWriter(backing, this); + return new BeltWriterUnsafe(backing, this); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeBeltWriter.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltWriterUnsafe.java similarity index 87% rename from src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeBeltWriter.java rename to src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltWriterUnsafe.java index 59ba5203f..1cf570be5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeBeltWriter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltWriterUnsafe.java @@ -5,8 +5,8 @@ import org.lwjgl.system.MemoryUtil; import com.jozufozu.flywheel.api.struct.StructType; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -public class UnsafeBeltWriter extends UnsafeKineticWriter { - public UnsafeBeltWriter(VecBuffer backingBuffer, StructType vertexType) { +public class BeltWriterUnsafe extends KineticWriterUnsafe { + public BeltWriterUnsafe(VecBuffer backingBuffer, StructType vertexType) { super(backingBuffer, vertexType); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeKineticWriter.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/KineticWriterUnsafe.java similarity index 73% rename from src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeKineticWriter.java rename to src/main/java/com/simibubi/create/content/contraptions/base/flwdata/KineticWriterUnsafe.java index f6fbeebfc..d450b1d6a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeKineticWriter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/KineticWriterUnsafe.java @@ -4,10 +4,10 @@ import org.lwjgl.system.MemoryUtil; import com.jozufozu.flywheel.api.struct.StructType; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.core.materials.UnsafeBasicWriter; +import com.jozufozu.flywheel.core.materials.BasicWriterUnsafe; -public abstract class UnsafeKineticWriter extends UnsafeBasicWriter { - public UnsafeKineticWriter(VecBuffer backingBuffer, StructType vertexType) { +public abstract class KineticWriterUnsafe extends BasicWriterUnsafe { + public KineticWriterUnsafe(VecBuffer backingBuffer, StructType vertexType) { super(backingBuffer, vertexType); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java index fd1f444b5..84e8f5d9a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.base.flwdata; import com.jozufozu.flywheel.api.struct.Batched; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; +import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; import com.jozufozu.flywheel.core.model.ModelTransformer; import com.jozufozu.flywheel.util.RenderMath; @@ -22,13 +22,13 @@ public class RotatingType implements Instanced, Batched getWriter(VecBuffer backing) { - return new UnsafeRotatingWriter(backing, this); + return new RotatingWriterUnsafe(backing, this); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeRotatingWriter.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingWriterUnsafe.java similarity index 81% rename from src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeRotatingWriter.java rename to src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingWriterUnsafe.java index b477c8e20..b57e21d2a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/UnsafeRotatingWriter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingWriterUnsafe.java @@ -5,8 +5,8 @@ import org.lwjgl.system.MemoryUtil; import com.jozufozu.flywheel.api.struct.StructType; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -public class UnsafeRotatingWriter extends UnsafeKineticWriter { - public UnsafeRotatingWriter(VecBuffer backingBuffer, StructType vertexType) { +public class RotatingWriterUnsafe extends KineticWriterUnsafe { + public RotatingWriterUnsafe(VecBuffer backingBuffer, StructType vertexType) { super(backingBuffer, vertexType); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java index 8978472ae..ad55be8cc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.components.actors.flwdata; import com.jozufozu.flywheel.api.struct.Batched; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; +import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; import com.jozufozu.flywheel.core.model.ModelTransformer; import com.simibubi.create.foundation.render.AllInstanceFormats; @@ -18,7 +18,7 @@ public class ActorType implements Instanced, Batched { } @Override - public VertexFormat format() { + public BufferLayout getLayout() { return AllInstanceFormats.ACTOR; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java index c5530c8b1..0c8cd46df 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java @@ -1,9 +1,9 @@ package com.simibubi.create.content.contraptions.components.structureMovement.glue; +import com.jozufozu.flywheel.core.Formats; import com.jozufozu.flywheel.core.model.Model; -import com.jozufozu.flywheel.core.vertex.PosTexNormalVertexListUnsafe; -import com.jozufozu.flywheel.core.vertex.PosTexNormalWriter; -import com.jozufozu.flywheel.core.vertex.VertexList; +import com.jozufozu.flywheel.core.vertex.PosTexNormalWriterUnsafe; +import com.jozufozu.flywheel.api.vertex.VertexList; import com.mojang.blaze3d.platform.MemoryTracker; import com.simibubi.create.AllStitchedTextures; import com.simibubi.create.foundation.utility.VecHelper; @@ -21,10 +21,10 @@ public class GlueModel implements Model { return INSTANCE; } - private final PosTexNormalVertexListUnsafe reader; + private final VertexList reader; private GlueModel() { - PosTexNormalWriter writer = new PosTexNormalWriter(MemoryTracker.create(size())); + PosTexNormalWriterUnsafe writer = Formats.POS_TEX_NORMAL.createWriter(MemoryTracker.create(size())); createGlueModel(writer); reader = writer.intoReader(); } @@ -44,7 +44,7 @@ public class GlueModel implements Model { return reader; } - public static void createGlueModel(PosTexNormalWriter buffer) { + public static void createGlueModel(PosTexNormalWriterUnsafe buffer) { Vec3 diff = Vec3.atLowerCornerOf(Direction.SOUTH.getNormal()); Vec3 extension = diff.normalize() .scale(1 / 32f - 1 / 128f); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java index 8eecc5662..5e1696ad9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.logistics.block.flap; import com.jozufozu.flywheel.api.struct.Batched; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; +import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; import com.jozufozu.flywheel.core.model.ModelTransformer; import com.simibubi.create.foundation.render.AllInstanceFormats; @@ -18,7 +18,7 @@ public class FlapType implements Instanced, Batched { } @Override - public VertexFormat format() { + public BufferLayout getLayout() { return AllInstanceFormats.FLAP; } diff --git a/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java b/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java index e0ecfaefa..95a76206c 100644 --- a/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java +++ b/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java @@ -1,33 +1,33 @@ package com.simibubi.create.foundation.render; -import com.jozufozu.flywheel.backend.gl.attrib.CommonAttributes; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; +import com.jozufozu.flywheel.core.layout.CommonItems; +import com.jozufozu.flywheel.core.layout.BufferLayout; public class AllInstanceFormats { - public static VertexFormat ROTATING = kineticInstance() - .addAttributes(CommonAttributes.NORMAL) + public static BufferLayout ROTATING = kineticInstance() + .addItems(CommonItems.NORMAL) .build(); - public static VertexFormat BELT = kineticInstance() - .addAttributes(CommonAttributes.QUATERNION, CommonAttributes.UV, CommonAttributes.VEC4, - CommonAttributes.NORMALIZED_BYTE) + public static BufferLayout BELT = kineticInstance() + .addItems(CommonItems.QUATERNION, CommonItems.UV, CommonItems.VEC4, + CommonItems.NORMALIZED_BYTE) .build(); - public static VertexFormat ACTOR = VertexFormat.builder() - .addAttributes(CommonAttributes.VEC3, CommonAttributes.LIGHT, CommonAttributes.FLOAT, - CommonAttributes.NORMAL, CommonAttributes.QUATERNION, CommonAttributes.NORMAL, - CommonAttributes.FLOAT) + public static BufferLayout ACTOR = BufferLayout.builder() + .addItems(CommonItems.VEC3, CommonItems.LIGHT, CommonItems.FLOAT, + CommonItems.NORMAL, CommonItems.QUATERNION, CommonItems.NORMAL, + CommonItems.FLOAT) .build(); - public static VertexFormat FLAP = VertexFormat.builder() - .addAttributes(CommonAttributes.VEC3, CommonAttributes.LIGHT, CommonAttributes.VEC3, CommonAttributes.VEC3, - CommonAttributes.FLOAT, CommonAttributes.FLOAT, CommonAttributes.FLOAT, CommonAttributes.FLOAT) + public static BufferLayout FLAP = BufferLayout.builder() + .addItems(CommonItems.VEC3, CommonItems.LIGHT, CommonItems.VEC3, CommonItems.VEC3, + CommonItems.FLOAT, CommonItems.FLOAT, CommonItems.FLOAT, CommonItems.FLOAT) .build(); - private static VertexFormat.Builder kineticInstance() { - return VertexFormat.builder() - .addAttributes(CommonAttributes.LIGHT, CommonAttributes.RGBA) - .addAttributes(CommonAttributes.VEC3, CommonAttributes.FLOAT, CommonAttributes.FLOAT); + private static BufferLayout.Builder kineticInstance() { + return BufferLayout.builder() + .addItems(CommonItems.LIGHT, CommonItems.RGBA) + .addItems(CommonItems.VEC3, CommonItems.FLOAT, CommonItems.FLOAT); } } diff --git a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java index b06ee41ae..a8628aa59 100644 --- a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java +++ b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java @@ -1,7 +1,7 @@ package com.simibubi.create.foundation.render; import com.jozufozu.flywheel.core.vertex.BlockVertexList; -import com.jozufozu.flywheel.core.vertex.VertexList; +import com.jozufozu.flywheel.api.vertex.VertexList; import com.jozufozu.flywheel.util.transform.Rotate; import com.jozufozu.flywheel.util.transform.Scale; import com.jozufozu.flywheel.util.transform.TStack; diff --git a/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert b/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert index 66db67682..2460a76fc 100644 --- a/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert +++ b/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert @@ -5,10 +5,10 @@ struct Vertex { vec3 pos; - vec3 normal; - vec2 texCoords; vec4 color; + vec2 texCoords; vec2 modelLight; + vec3 normal; }; #use "flywheel:block.frag" From 748c25b3eccbb204d4059aebc6283e1d9b825b8f Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Wed, 22 Dec 2021 21:35:49 -0800 Subject: [PATCH 15/42] Better config/backend to account for multiple engines - Rename probably too many things - Needs to be tested with Optifine --- .../contraptions/base/KineticTileEntityRenderer.java | 4 ++-- .../components/actors/DrillMovementBehaviour.java | 2 +- .../components/actors/HarvesterMovementBehaviour.java | 3 +-- .../components/crafter/MechanicalCrafterRenderer.java | 3 +-- .../components/crank/HandCrankRenderer.java | 2 +- .../deployer/DeployerMovementBehaviour.java | 2 +- .../components/deployer/DeployerRenderer.java | 8 ++++---- .../components/fan/EncasedFanRenderer.java | 2 +- .../components/flywheel/FlywheelRenderer.java | 2 +- .../components/flywheel/engine/EngineRenderer.java | 2 +- .../components/mixer/MechanicalMixerRenderer.java | 2 +- .../components/press/MechanicalPressRenderer.java | 2 +- .../contraptions/components/saw/SawRenderer.java | 3 +-- .../structureMovement/bearing/BearingRenderer.java | 2 +- .../bearing/StabilizedBearingMovementBehaviour.java | 2 +- .../structureMovement/chassis/StickerRenderer.java | 2 +- .../gantry/GantryCarriageRenderer.java | 2 +- .../pulley/AbstractPulleyRenderer.java | 3 +-- .../render/ContraptionRenderDispatcher.java | 2 +- .../render/FlwContraptionManager.java | 2 +- .../structureMovement/render/RenderedContraption.java | 2 +- .../contraptions/fluids/pipes/FluidValveRenderer.java | 2 +- .../relays/advanced/SpeedControllerRenderer.java | 2 +- .../contraptions/relays/belt/BeltRenderer.java | 2 +- .../elementary/BracketedKineticTileInstance.java | 11 ++++++----- .../elementary/BracketedKineticTileRenderer.java | 3 +-- .../relays/encased/EncasedCogRenderer.java | 3 +-- .../relays/encased/SplitShaftRenderer.java | 2 +- .../contraptions/relays/gauge/GaugeRenderer.java | 2 +- .../contraptions/relays/gearbox/GearboxRenderer.java | 2 +- .../block/belts/tunnel/BeltTunnelRenderer.java | 2 +- .../logistics/block/depot/EjectorRenderer.java | 2 +- .../logistics/block/funnel/FunnelRenderer.java | 2 +- .../logistics/block/mechanicalArm/ArmRenderer.java | 2 +- .../logistics/block/redstone/AnalogLeverRenderer.java | 2 +- .../schematics/block/SchematicannonRenderer.java | 3 +-- .../foundation/render/TileEntityRenderHelper.java | 2 +- .../renderer/ColoredOverlayTileEntityRenderer.java | 2 +- 38 files changed, 47 insertions(+), 53 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntityRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntityRenderer.java index fdae33fc3..eb287ad25 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntityRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntityRenderer.java @@ -38,7 +38,7 @@ public class KineticTileEntityRenderer extends SafeTileEntityRenderer renderItem(te, partialTicks, ms, buffer, light, overlay); FilteringRenderer.renderOnTileEntity(te, partialTicks, ms, buffer, light, overlay); - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; renderComponents(te, partialTicks, ms, buffer, light, overlay); } @@ -113,7 +113,7 @@ public class DeployerRenderer extends SafeTileEntityRenderer protected void renderComponents(DeployerTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { VertexConsumer vb = buffer.getBuffer(RenderType.solid()); - if (!Backend.getInstance().canUseInstancing(te.getLevel())) { + if (!Backend.canUseInstancing(te.getLevel())) { KineticTileEntityRenderer.renderRotatingKineticBlock(te, getRenderedBlockState(te), ms, vb, light); } @@ -193,10 +193,10 @@ public class DeployerRenderer extends SafeTileEntityRenderer IRotate def = (IRotate) context.state.getBlock(); axis = def.getRotationAxis(context.state); } - + float time = AnimationTickHolder.getRenderTime(context.world) / 20; float angle = (time * speed) % 360; - + new MatrixTransformStack(m) .centre() .rotateY(axis == Axis.Z ? 90 : 0) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java index 274f95237..73b918fa7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java @@ -28,7 +28,7 @@ public class EncasedFanRenderer extends KineticTileEntityRenderer { @Override protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; Direction direction = te.getBlockState() .getValue(FACING); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java index c816de46d..0b11588ba 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java @@ -36,7 +36,7 @@ public class FlywheelRenderer extends KineticTileEntityRenderer { int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; BlockState blockState = te.getBlockState(); FlywheelTileEntity wte = (FlywheelTileEntity) te; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java index 1c9c904bd..64984443a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java @@ -22,7 +22,7 @@ public class EngineRenderer extends SafeTileEntityRe protected void renderSafe(T te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; Block block = te.getBlockState() .getBlock(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerRenderer.java index 83d05442f..ec59b2037 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerRenderer.java @@ -31,7 +31,7 @@ public class MechanicalMixerRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; BlockState blockState = te.getBlockState(); MechanicalMixerTileEntity mixer = (MechanicalMixerTileEntity) te; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressRenderer.java index 5523a7b2e..43e315100 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressRenderer.java @@ -31,7 +31,7 @@ public class MechanicalPressRenderer extends KineticTileEntityRenderer { int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; BlockState blockState = te.getBlockState(); float renderedHeadOffset = ((MechanicalPressTileEntity) te).getRenderedHeadOffset(partialTicks); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java index 149be2e09..5896963ab 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java @@ -46,8 +46,7 @@ public class SawRenderer extends SafeTileEntityRenderer { renderItems(te, partialTicks, ms, buffer, light, overlay); FilteringRenderer.renderOnTileEntity(te, partialTicks, ms, buffer, light, overlay); - if (Backend.getInstance() - .canUseInstancing(te.getLevel())) + if (Backend.canUseInstancing(te.getLevel())) return; renderShaft(te, ms, buffer, light, overlay); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java index b3961f558..ed76b3d05 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java @@ -26,7 +26,7 @@ public class BearingRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; super.renderSafe(te, partialTicks, ms, buffer, light, overlay); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java index f00e600f3..91735760f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java @@ -34,7 +34,7 @@ public class StabilizedBearingMovementBehaviour extends MovementBehaviour { @OnlyIn(Dist.CLIENT) public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { - if (Backend.getInstance().canUseInstancing()) return; + if (Backend.isOn()) return; Direction facing = context.state.getValue(BlockStateProperties.FACING); PartialModel top = AllBlockPartials.BEARING_TOP; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java index f4c3c8c27..cfb6a1d0e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java @@ -25,7 +25,7 @@ public class StickerRenderer extends SafeTileEntityRenderer { protected void renderSafe(StickerTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; BlockState state = te.getBlockState(); SuperByteBuffer head = CachedBufferer.partial(AllBlockPartials.STICKER_HEAD, state); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java index 9e52ea3ea..6e3e6fd44 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java @@ -31,7 +31,7 @@ public class GantryCarriageRenderer extends KineticTileEntityRenderer { int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; BlockState state = te.getBlockState(); Direction facing = state.getValue(GantryCarriageBlock.FACING); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java index f60c903ab..dfa6dcd0c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java @@ -44,8 +44,7 @@ public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance() - .canUseInstancing(te.getLevel())) + if (Backend.canUseInstancing(te.getLevel())) return; super.renderSafe(te, partialTicks, ms, buffer, light, overlay); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java index 59ef2e7eb..c6ae0310d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java @@ -178,7 +178,7 @@ public class ContraptionRenderDispatcher { public static void reset() { WORLDS.empty(ContraptionRenderManager::delete); - if (Backend.getInstance().available()) { + if (Backend.isOn()) { WORLDS = new WorldAttached<>(FlwContraptionManager::new); } else { WORLDS = new WorldAttached<>(SBBContraptionManager::new); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java index e6376222b..f2c9c8ee1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java @@ -58,7 +58,7 @@ public class FlwContraptionManager extends ContraptionRenderManager { protected void renderSafe(BeltTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (!Backend.getInstance().canUseInstancing(te.getLevel())) { + if (!Backend.canUseInstancing(te.getLevel())) { BlockState blockState = te.getBlockState(); if (!AllBlocks.BELT.has(blockState)) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileInstance.java index 7733d54e7..127addf7f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileInstance.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.relays.elementary; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Vector3f; import com.simibubi.create.AllBlockPartials; @@ -59,10 +59,11 @@ public class BracketedKineticTileInstance extends SingleRotatingInstance { private PoseStack rotateToAxis(Axis axis) { Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE); PoseStack poseStack = new PoseStack(); - new MatrixTransformStack(poseStack).centre() - .rotateToFace(facing) - .multiply(Vector3f.XN.rotationDegrees(-90)) - .unCentre(); + TransformStack.cast(poseStack) + .centre() + .rotateToFace(facing) + .multiply(Vector3f.XN.rotationDegrees(-90)) + .unCentre(); return poseStack; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileRenderer.java index f8f5754a1..8e0e86660 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileRenderer.java @@ -28,8 +28,7 @@ public class BracketedKineticTileRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance() - .canUseInstancing(te.getLevel())) + if (Backend.canUseInstancing(te.getLevel())) return; if (!AllBlocks.LARGE_COGWHEEL.has(te.getBlockState())) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogRenderer.java index b7f423b22..12f83e86e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogRenderer.java @@ -39,8 +39,7 @@ public class EncasedCogRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - if (Backend.getInstance() - .canUseInstancing(te.getLevel())) + if (Backend.canUseInstancing(te.getLevel())) return; BlockState blockState = te.getBlockState(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java index dd7dce660..ba38d1481 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java @@ -28,7 +28,7 @@ public class SplitShaftRenderer extends KineticTileEntityRenderer { @Override protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; Block block = te.getBlockState().getBlock(); final Axis boxAxis = ((IRotate) block).getRotationAxis(te.getBlockState()); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java index ce495f0bd..a5872e8b3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java @@ -39,7 +39,7 @@ public class GaugeRenderer extends KineticTileEntityRenderer { @Override protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; super.renderSafe(te, partialTicks, ms, buffer, light, overlay); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java index 56194ec81..04671bcad 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java @@ -27,7 +27,7 @@ public class GearboxRenderer extends KineticTileEntityRenderer { @Override protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; final Axis boxAxis = te.getBlockState().getValue(BlockStateProperties.AXIS); final BlockPos pos = te.getBlockPos(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java index 708853df2..f5f137b2b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java @@ -31,7 +31,7 @@ public class BeltTunnelRenderer extends SmartTileEntityRenderer { int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - if (!te.hasFlap() || Backend.getInstance().canUseInstancing(te.getLevel())) + if (!te.hasFlap() || Backend.canUseInstancing(te.getLevel())) return; BlockState blockState = te.getBlockState(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java index aa513be83..42fb0e55f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java @@ -44,7 +44,7 @@ public class ArmRenderer extends KineticTileEntityRenderer { ArmTileEntity arm = (ArmTileEntity) te; ItemStack item = arm.heldItem; boolean hasItem = !item.isEmpty(); - boolean usingFlywheel = Backend.getInstance().canUseInstancing(te.getLevel()); + boolean usingFlywheel = Backend.canUseInstancing(te.getLevel()); if (usingFlywheel && !hasItem) return; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverRenderer.java index 481e3dda7..2d6026c16 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverRenderer.java @@ -26,7 +26,7 @@ public class AnalogLeverRenderer extends SafeTileEntityRenderer iterator = customRenderTEs.iterator(); while (iterator.hasNext()) { BlockEntity tileEntity = iterator.next(); - if (Backend.getInstance().canUseInstancing(renderWorld) && InstancedRenderRegistry.getInstance() + if (Backend.canUseInstancing(renderWorld) && InstancedRenderRegistry.getInstance() .shouldSkipRender(tileEntity)) continue; BlockEntityRenderer renderer = Minecraft.getInstance().getBlockEntityRenderDispatcher().getRenderer(tileEntity); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/ColoredOverlayTileEntityRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/ColoredOverlayTileEntityRenderer.java index 310bbeb6e..8ba1894ac 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/ColoredOverlayTileEntityRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/ColoredOverlayTileEntityRenderer.java @@ -18,7 +18,7 @@ public abstract class ColoredOverlayTileEntityRenderer ex protected void renderSafe(T te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getLevel())) return; + if (Backend.canUseInstancing(te.getLevel())) return; SuperByteBuffer render = render(getOverlayBuffer(te), getColor(te, partialTicks), light); render.renderInto(ms, buffer.getBuffer(RenderType.solid())); From 2d095995e4309f113390d026bcd71d9234881ebc Mon Sep 17 00:00:00 2001 From: git-async <86495664+git-async@users.noreply.github.com> Date: Thu, 23 Dec 2021 17:38:02 -0500 Subject: [PATCH 16/42] Fix Stockpile Switch prioritizing item inventories --- .../redstone/StockpileSwitchTileEntity.java | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 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 9f678da7a..7381a2bed 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 @@ -78,23 +78,24 @@ public class StockpileSwitchTileEntity extends SmartTileEntity { float totalSpace = 0; observedInventory.findNewCapability(); - if (observedInventory.hasInventory()) { - // Item inventory - IItemHandler inv = observedInventory.getInventory(); - for (int slot = 0; slot < inv.getSlots(); slot++) { - ItemStack stackInSlot = inv.getStackInSlot(slot); - int space = Math.min(stackInSlot.getMaxStackSize(), inv.getSlotLimit(slot)); - int count = stackInSlot.getCount(); - if (space == 0) - continue; + observedTank.findNewCapability(); + if (observedInventory.hasInventory() || observedTank.hasInventory()) { + if (observedInventory.hasInventory()) { + // Item inventory + IItemHandler inv = observedInventory.getInventory(); + for (int slot = 0; slot < inv.getSlots(); slot++) { + ItemStack stackInSlot = inv.getStackInSlot(slot); + int space = Math.min(stackInSlot.getMaxStackSize(), inv.getSlotLimit(slot)); + int count = stackInSlot.getCount(); + if (space == 0) + continue; - totalSpace += 1; - if (filtering.test(stackInSlot)) - occupied += count * (1f / space); + totalSpace += 1; + if (filtering.test(stackInSlot)) + occupied += count * (1f / space); + } } - } else { - observedTank.findNewCapability(); if (observedTank.hasInventory()) { // Fluid inventory IFluidHandler tank = observedTank.getInventory(); @@ -109,18 +110,17 @@ public class StockpileSwitchTileEntity extends SmartTileEntity { if (filtering.test(stackInSlot)) occupied += count * (1f / space); } - - } else { - // No compatible inventories found - if (currentLevel == -1) - return; - level.setBlock(worldPosition, getBlockState().setValue(StockpileSwitchBlock.INDICATOR, 0), 3); - currentLevel = -1; - redstoneState = false; - sendData(); - scheduleBlockTick(); - return; } + } else { + // No compatible inventories found + if (currentLevel == -1) + return; + level.setBlock(worldPosition, getBlockState().setValue(StockpileSwitchBlock.INDICATOR, 0), 3); + currentLevel = -1; + redstoneState = false; + sendData(); + scheduleBlockTick(); + return; } float stockLevel = occupied / totalSpace; From 0a4311b51efc7186da90fd9119ce0ccce7789c79 Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Thu, 23 Dec 2021 14:41:10 -0800 Subject: [PATCH 17/42] Contraptions and engines - Sort of get the batching engine working for contraptions but this feels wrong - TaskEngine gets passed in methods - Better naming for TaskEngines - Do BufferSource ourselves - Change BufferBuilderMixin to allow for injection into BufferBuilder objects --- .../render/ContraptionGroup.java | 6 +- .../render/ContraptionInstanceManager.java | 22 ++--- .../render/ContraptionRenderDispatcher.java | 7 +- .../render/ContraptionRenderInfo.java | 1 + ...er.java => ContraptionRenderingWorld.java} | 4 +- ...edContraption.java => FlwContraption.java} | 83 +++++++++++++++---- .../render/FlwContraptionManager.java | 19 +++-- .../render/SBBContraptionManager.java | 2 +- .../curiosities/TreeFertilizerItem.java | 2 +- .../content/schematics/SchematicWorld.java | 8 +- .../worldWrappers/DummyStatusListener.java | 4 +- .../PlacementSimulationWorld.java | 42 ++++++---- .../utility/worldWrappers/RayTraceWorld.java | 4 +- .../worldWrappers/WrappedChunkProvider.java | 6 +- .../utility/worldWrappers/WrappedWorld.java | 11 ++- .../utility/worldWrappers/package-info.java | 6 ++ 16 files changed, 143 insertions(+), 84 deletions(-) rename src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/{ContraptionRenderManager.java => ContraptionRenderingWorld.java} (95%) rename src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/{RenderedContraption.java => FlwContraption.java} (63%) create mode 100644 src/main/java/com/simibubi/create/foundation/utility/worldWrappers/package-info.java diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionGroup.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionGroup.java index ead1523c2..c52a7d882 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionGroup.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionGroup.java @@ -7,9 +7,9 @@ import net.minecraft.client.renderer.RenderType; public class ContraptionGroup

extends InstancedMaterialGroup

{ - private final RenderedContraption contraption; + private final FlwContraption contraption; - public ContraptionGroup(RenderedContraption contraption, InstancingEngine

owner, RenderType type) { + public ContraptionGroup(FlwContraption contraption, InstancingEngine

owner, RenderType type) { super(owner, type); this.contraption = contraption; @@ -20,7 +20,7 @@ public class ContraptionGroup

extends InstancedMat contraption.setup(program); } - public static

InstancingEngine.GroupFactory

forContraption(RenderedContraption c) { + public static

InstancingEngine.GroupFactory

forContraption(FlwContraption c) { return (materialManager, type) -> new ContraptionGroup<>(c, materialManager, type); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java index 96e9b6f00..927207f91 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.contraptions.components.structureMovement.render; -import java.lang.ref.WeakReference; import java.util.ArrayList; import javax.annotation.Nullable; @@ -8,11 +7,12 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.tuple.Pair; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.backend.instancing.ImmediateExecutor; +import com.jozufozu.flywheel.backend.instancing.TaskEngine; import com.jozufozu.flywheel.backend.instancing.tile.TileInstanceManager; import com.simibubi.create.AllMovementBehaviours; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.Camera; import net.minecraft.core.BlockPos; @@ -22,11 +22,11 @@ public class ContraptionInstanceManager extends TileInstanceManager { protected ArrayList actors = new ArrayList<>(); - private final WeakReference contraption; + private final PlacementSimulationWorld renderWorld; - ContraptionInstanceManager(RenderedContraption contraption, MaterialManager materialManager) { - super(ImmediateExecutor.INSTANCE, materialManager); - this.contraption = new WeakReference<>(contraption); + ContraptionInstanceManager(MaterialManager materialManager, PlacementSimulationWorld contraption) { + super(materialManager); + this.renderWorld = contraption; } public void tick() { @@ -34,8 +34,8 @@ public class ContraptionInstanceManager extends TileInstanceManager { } @Override - public void beginFrame(Camera info) { - super.beginFrame(info); + public void beginFrame(TaskEngine taskEngine, Camera info) { + super.beginFrame(taskEngine, info); actors.forEach(ActorInstance::beginFrame); } @@ -53,7 +53,7 @@ public class ContraptionInstanceManager extends TileInstanceManager { MovementBehaviour movementBehaviour = AllMovementBehaviours.of(blockInfo.state); if (movementBehaviour != null && movementBehaviour.hasSpecialInstancedRendering()) { - ActorInstance instance = movementBehaviour.createInstance(materialManager, getContraption().renderWorld, context); + ActorInstance instance = movementBehaviour.createInstance(materialManager, renderWorld, context); actors.add(instance); @@ -62,9 +62,5 @@ public class ContraptionInstanceManager extends TileInstanceManager { return null; } - - public RenderedContraption getContraption() { - return contraption.get(); - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java index c6ae0310d..ea4b1d9ed 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java @@ -43,7 +43,7 @@ import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber(Dist.CLIENT) public class ContraptionRenderDispatcher { - private static WorldAttached> WORLDS = new WorldAttached<>(SBBContraptionManager::new); + private static WorldAttached> WORLDS = new WorldAttached<>(SBBContraptionManager::new); /** * Reset a contraption's renderer. @@ -113,8 +113,7 @@ public class ContraptionRenderDispatcher { // Skip individual lighting updates to prevent lag with large contraptions renderWorld.setBlock(info.pos, info.state, Block.UPDATE_SUPPRESS_LIGHT); - renderWorld.updateLightSources(); - renderWorld.lighter.runUpdates(Integer.MAX_VALUE, false, false); + renderWorld.runLightingEngine(); return renderWorld; } @@ -176,7 +175,7 @@ public class ContraptionRenderDispatcher { } public static void reset() { - WORLDS.empty(ContraptionRenderManager::delete); + WORLDS.empty(ContraptionRenderingWorld::delete); if (Backend.isOn()) { WORLDS = new WorldAttached<>(FlwContraptionManager::new); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java index 648311387..13724e05b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java @@ -1,5 +1,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.render; +import com.jozufozu.flywheel.backend.instancing.TaskEngine; import com.jozufozu.flywheel.event.BeginFrameEvent; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderingWorld.java similarity index 95% rename from src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderManager.java rename to src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderingWorld.java index a5ae70382..072b8842d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderingWorld.java @@ -17,7 +17,7 @@ import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; -public abstract class ContraptionRenderManager { +public abstract class ContraptionRenderingWorld { protected final Level world; private int removalTimer; @@ -25,7 +25,7 @@ public abstract class ContraptionRenderManager protected final Int2ObjectMap renderInfos = new Int2ObjectOpenHashMap<>(); protected final List visible = new ObjectArrayList<>(); - public ContraptionRenderManager(LevelAccessor world) { + public ContraptionRenderingWorld(LevelAccessor world) { this.world = (Level) world; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java similarity index 63% rename from src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java rename to src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java index 8c9195b34..9b68b06fe 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java @@ -7,13 +7,18 @@ import java.util.Map; import java.util.function.Supplier; import com.jozufozu.flywheel.backend.Backend; +import com.jozufozu.flywheel.backend.instancing.Engine; import com.jozufozu.flywheel.backend.instancing.InstancedRenderRegistry; +import com.jozufozu.flywheel.backend.instancing.SerialTaskEngine; +import com.jozufozu.flywheel.backend.instancing.TaskEngine; +import com.jozufozu.flywheel.backend.instancing.batching.BatchingEngine; import com.jozufozu.flywheel.backend.instancing.instancing.InstancingEngine; import com.jozufozu.flywheel.backend.model.ArrayModelRenderer; import com.jozufozu.flywheel.backend.model.ModelRenderer; import com.jozufozu.flywheel.core.model.Model; import com.jozufozu.flywheel.core.model.WorldModel; import com.jozufozu.flywheel.event.BeginFrameEvent; +import com.jozufozu.flywheel.event.RenderLayerEvent; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix4f; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; @@ -30,29 +35,23 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -public class RenderedContraption extends ContraptionRenderInfo { +public class FlwContraption extends ContraptionRenderInfo { private final ContraptionLighter lighter; - public final InstancingEngine engine; - public final ContraptionInstanceManager kinetics; - private final Map renderLayers = new HashMap<>(); private final Matrix4f modelViewPartial = new Matrix4f(); + private final ContraptionInstanceWorld instanceWorld; private boolean modelViewPartialReady; - // floats because we're uploading this to the gpu + // floats because we upload this to the gpu private AABB lightBox; - public RenderedContraption(Contraption contraption, PlacementSimulationWorld renderWorld) { + public FlwContraption(Contraption contraption, PlacementSimulationWorld renderWorld) { super(contraption, renderWorld); this.lighter = contraption.makeLighter(); - this.engine = InstancingEngine.builder(CreateContexts.CWORLD) - .setGroupFactory(ContraptionGroup.forContraption(this)) - .setIgnoreOriginCoordinate(true) - .build(); - this.kinetics = new ContraptionInstanceManager(this, engine); - this.engine.addListener(this.kinetics); + + instanceWorld = new ContraptionInstanceWorld(this); buildLayers(); if (Backend.isOn()) { @@ -65,7 +64,7 @@ public class RenderedContraption extends ContraptionRenderInfo { return lighter; } - public void doRenderLayer(RenderType layer, ContraptionProgram shader) { + public void renderStructureLayer(RenderType layer, ContraptionProgram shader) { ModelRenderer structure = renderLayers.get(layer); if (structure != null) { setup(shader); @@ -73,6 +72,21 @@ public class RenderedContraption extends ContraptionRenderInfo { } } + public void renderInstanceLayer(RenderLayerEvent event) { + + event.stack.pushPose(); + float partialTicks = AnimationTickHolder.getPartialTicks(); + AbstractContraptionEntity entity = contraption.entity; + double x = Mth.lerp(partialTicks, entity.xOld, entity.getX()); + double y = Mth.lerp(partialTicks, entity.yOld, entity.getY()); + double z = Mth.lerp(partialTicks, entity.zOld, entity.getZ()); + event.stack.translate(x - event.camX, y - event.camY, z - event.camZ); + ContraptionMatrices.transform(event.stack, getMatrices().getModel()); + instanceWorld.engine.render(SerialTaskEngine.INSTANCE, event); + + event.stack.popPose(); + } + public void beginFrame(BeginFrameEvent event) { super.beginFrame(event); @@ -81,7 +95,7 @@ public class RenderedContraption extends ContraptionRenderInfo { if (!isVisible()) return; - kinetics.beginFrame(event.getInfo()); + instanceWorld.tileInstanceManager.beginFrame(SerialTaskEngine.INSTANCE, event.getInfo()); Vec3 cameraPos = event.getCameraPos(); @@ -113,8 +127,7 @@ public class RenderedContraption extends ContraptionRenderInfo { lighter.delete(); - engine.delete(); - kinetics.invalidate(); + instanceWorld.delete(); } private void buildLayers() { @@ -141,7 +154,7 @@ public class RenderedContraption extends ContraptionRenderInfo { .canInstance(te.getType())) { Level world = te.getLevel(); te.setLevel(renderWorld); - kinetics.add(te); + instanceWorld.tileInstanceManager.add(te); te.setLevel(world); } } @@ -149,7 +162,7 @@ public class RenderedContraption extends ContraptionRenderInfo { } private void buildActors() { - contraption.getActors().forEach(kinetics::createActor); + contraption.getActors().forEach(instanceWorld.tileInstanceManager::createActor); } public static void setupModelViewPartial(Matrix4f matrix, Matrix4f modelMatrix, AbstractContraptionEntity entity, double camX, double camY, double camZ, float pt) { @@ -160,4 +173,38 @@ public class RenderedContraption extends ContraptionRenderInfo { matrix.multiply(modelMatrix); } + public void tick() { + instanceWorld.tileInstanceManager.tick(); + } + + public static class ContraptionInstanceWorld { + + private final Engine engine; + private final ContraptionInstanceManager tileInstanceManager; + + public ContraptionInstanceWorld(FlwContraption parent) { + switch (Backend.getInstance().getEngine()) { + case INSTANCING -> { + InstancingEngine engine = InstancingEngine.builder(CreateContexts.CWORLD) + .setGroupFactory(ContraptionGroup.forContraption(parent)) + .setIgnoreOriginCoordinate(true) + .build(); + tileInstanceManager = new ContraptionInstanceManager(engine, parent.renderWorld); + engine.addListener(tileInstanceManager); + + this.engine = engine; + } + case BATCHING -> { + engine = new BatchingEngine(); + tileInstanceManager = new ContraptionInstanceManager(engine, parent.renderWorld); + } + default -> throw new IllegalArgumentException("Unknown engine type"); + } + } + + public void delete() { + engine.delete(); + tileInstanceManager.invalidate(); + } + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java index f2c9c8ee1..f7a596670 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java @@ -17,7 +17,7 @@ import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationW import net.minecraft.client.renderer.RenderType; import net.minecraft.world.level.LevelAccessor; -public class FlwContraptionManager extends ContraptionRenderManager { +public class FlwContraptionManager extends ContraptionRenderingWorld { public FlwContraptionManager(LevelAccessor world) { super(world); @@ -27,8 +27,8 @@ public class FlwContraptionManager extends ContraptionRenderManager { +public class SBBContraptionManager extends ContraptionRenderingWorld { public static final SuperByteBufferCache.Compartment> CONTRAPTION = new SuperByteBufferCache.Compartment<>(); public SBBContraptionManager(LevelAccessor world) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java b/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java index 8477f6578..efc548e31 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java @@ -76,7 +76,7 @@ public class TreeFertilizerItem extends Item { return super.useOn(context); } - private class TreesDreamWorld extends PlacementSimulationServerWorld { + private static class TreesDreamWorld extends PlacementSimulationServerWorld { private final BlockPos saplingPos; private final BlockState soil; 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 80c7bc4d9..9c662be2b 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java @@ -45,7 +45,7 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor protected List renderedTileEntities; protected List entities; protected BoundingBox bounds; - + public BlockPos anchor; public boolean renderMode; @@ -149,12 +149,12 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor public int getBrightness(LightLayer p_226658_1_, BlockPos p_226658_2_) { return 10; } - + @Override public LevelTickAccess getBlockTicks() { return BlackholeTickAccess.emptyLevelList(); } - + @Override public LevelTickAccess getFluidTicks() { return BlackholeTickAccess.emptyLevelList(); @@ -170,7 +170,7 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor Predicate arg2) { return Collections.emptyList(); } - + @Override public List players() { return Collections.emptyList(); diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/DummyStatusListener.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/DummyStatusListener.java index d6dfda197..b54485931 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/DummyStatusListener.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/DummyStatusListener.java @@ -1,5 +1,7 @@ package com.simibubi.create.foundation.utility.worldWrappers; +import javax.annotation.Nullable; + import net.minecraft.server.level.progress.ChunkProgressListener; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.chunk.ChunkStatus; @@ -10,7 +12,7 @@ public class DummyStatusListener implements ChunkProgressListener { public void updateSpawnPos(ChunkPos pCenter) {} @Override - public void onStatusChange(ChunkPos pChunkPosition, ChunkStatus pNewStatus) {} + public void onStatusChange(ChunkPos pChunkPosition, @Nullable ChunkStatus pNewStatus) {} @Override public void start() {} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java index e97ec1adc..9ef910057 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java @@ -7,6 +7,8 @@ import java.util.Map; import java.util.Set; import java.util.function.Predicate; +import javax.annotation.Nullable; + import com.jozufozu.flywheel.api.FlywheelWorld; import net.minecraft.core.BlockPos; @@ -19,33 +21,31 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.lighting.LevelLightEngine; public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWorld { - public Map blocksAdded; - public Map tesAdded; + public Map blocksAdded = new HashMap<>(); + public Map tesAdded = new HashMap<>(); - public Set spannedSections; + public Set spannedSections = new HashSet<>(); public LevelLightEngine lighter; - public WrappedChunkProvider chunkProvider; + public final WrappedChunkProvider chunkSource; private final BlockPos.MutableBlockPos scratch = new BlockPos.MutableBlockPos(); public PlacementSimulationWorld(Level wrapped) { this(wrapped, new WrappedChunkProvider()); } - public PlacementSimulationWorld(Level wrapped, WrappedChunkProvider chunkProvider) { - super(wrapped, chunkProvider); - this.chunkProvider = chunkProvider.setPlacementWorld(this); - spannedSections = new HashSet<>(); - lighter = new LevelLightEngine(chunkProvider, true, false); // blockLight, skyLight - blocksAdded = new HashMap<>(); - tesAdded = new HashMap<>(); + public PlacementSimulationWorld(Level wrapped, WrappedChunkProvider chunkSource) { + super(wrapped, chunkSource); + // You can't leak this before the super ctor is called. + // You can't create inner classes before super ctor is called. + chunkSource.setPlacementWorld(this); + this.chunkSource = chunkSource; + lighter = new LevelLightEngine(chunkSource, true, false); } - @Override - public LevelLightEngine getLightEngine() { - return lighter; - } - - public void updateLightSources() { + /** + * Run this after you're done using setBlock(). + */ + public void runLightingEngine() { for (Map.Entry entry : blocksAdded.entrySet()) { BlockPos pos = entry.getKey(); BlockState state = entry.getValue(); @@ -54,6 +54,13 @@ public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWo lighter.onBlockEmissionIncrease(pos, light); } } + + lighter.runUpdates(Integer.MAX_VALUE, false, false); + } + + @Override + public LevelLightEngine getLightEngine() { + return lighter; } public void setTileEntities(Collection tileEntities) { @@ -87,6 +94,7 @@ public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWo } @Override + @Nullable public BlockEntity getBlockEntity(BlockPos pos) { return tesAdded.get(pos); } diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/RayTraceWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/RayTraceWorld.java index 20a7a9f5f..cc6d567c0 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/RayTraceWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/RayTraceWorld.java @@ -11,8 +11,8 @@ import net.minecraft.world.level.material.FluidState; public class RayTraceWorld implements BlockGetter { - private LevelAccessor template; - private BiFunction stateGetter; + private final LevelAccessor template; + private final BiFunction stateGetter; public RayTraceWorld(LevelAccessor template, BiFunction stateGetter) { this.template = template; diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java index 9b82e8c21..8b4b48a6e 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java @@ -29,11 +29,11 @@ public class WrappedChunkProvider extends ChunkSource { fallbackWorld = world; return this; } - - public WrappedChunkProvider setPlacementWorld(PlacementSimulationWorld world) { + + // VirtualChunkSource is created before VirtualRenderWorld, so we can't initialize it in the ctor. + public void setPlacementWorld(PlacementSimulationWorld world) { fallbackWorld = this.world = world; this.chunks = new HashMap<>(); - return this; } public Stream getLightSources() { diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java index fe405971a..499fb619e 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java @@ -32,8 +32,6 @@ import net.minecraft.world.level.storage.WritableLevelData; import net.minecraft.world.scores.Scoreboard; import net.minecraft.world.ticks.LevelTickAccess; -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault public class WrappedWorld extends Level { protected Level world; @@ -67,17 +65,18 @@ public class WrappedWorld extends Level { } @Override - public boolean isStateAtPosition(@Nullable BlockPos p_217375_1_, @Nullable Predicate p_217375_2_) { + public boolean isStateAtPosition(BlockPos p_217375_1_, Predicate p_217375_2_) { return world.isStateAtPosition(p_217375_1_, p_217375_2_); } @Override - public BlockEntity getBlockEntity(@Nullable BlockPos pos) { + @Nullable + public BlockEntity getBlockEntity(BlockPos pos) { return world.getBlockEntity(pos); } @Override - public boolean setBlock(@Nullable BlockPos pos, @Nullable BlockState newState, int flags) { + public boolean setBlock(BlockPos pos, BlockState newState, int flags) { return world.setBlock(pos, newState, flags); } @@ -95,7 +94,7 @@ public class WrappedWorld extends Level { public LevelTickAccess getBlockTicks() { return world.getBlockTicks(); } - + @Override public LevelTickAccess getFluidTicks() { return world.getFluidTicks(); diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/package-info.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/package-info.java new file mode 100644 index 000000000..87851a339 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/package-info.java @@ -0,0 +1,6 @@ +@ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault +package com.simibubi.create.foundation.utility.worldWrappers; + +import javax.annotation.ParametersAreNonnullByDefault; + +import net.minecraft.MethodsReturnNonnullByDefault; From 714b926ee392cc646a6dc10980d604b10b24918f Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Fri, 24 Dec 2021 16:35:53 -0800 Subject: [PATCH 18/42] Bump Flywheel build - 0.5.0.28 --- gradle.properties | 2 +- src/main/resources/META-INF/mods.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 38c209086..dab5c2870 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,7 @@ parchment_version = 2021.12.19 # dependency versions registrate_version = MC1.18-1.0.21 -flywheel_version = 1.18-0.4.2-rc.26 +flywheel_version = 1.18-0.5.0.28 jei_minecraft_version = 1.18 jei_version = 9.0.0.40 diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 1e0a18730..d0c659484 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -32,6 +32,6 @@ Technology that empowers the player.''' [[dependencies.create]] modId="flywheel" mandatory=true - versionRange="[1.18-0.4.0,1.18-0.4.2)" + versionRange="[1.18-0.5.0,1.18-0.5.1)" ordering="AFTER" side="BOTH" From d98a07736c8b799c448dcaf57e5e5f5bb34641f3 Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Sat, 25 Dec 2021 01:01:48 -0800 Subject: [PATCH 19/42] No more diffuse divide - Move PlacementSimulationWorld to Flywheel as VirtualRenderWorld - Simplify ModelTransformer - Model doesn't need #configure - Bump Flywheel build --- build.gradle | 3 +- gradle.properties | 2 +- .../components/actors/DrillActorInstance.java | 4 +- .../actors/DrillMovementBehaviour.java | 6 +- .../components/actors/DrillRenderer.java | 4 +- .../actors/HarvesterActorInstance.java | 4 +- .../actors/HarvesterMovementBehaviour.java | 6 +- .../components/actors/HarvesterRenderer.java | 4 +- .../PortableStorageInterfaceMovement.java | 4 +- .../PortableStorageInterfaceRenderer.java | 4 +- .../actors/SawMovementBehaviour.java | 4 +- .../deployer/DeployerActorInstance.java | 4 +- .../components/deployer/DeployerHandler.java | 2 +- .../deployer/DeployerMovementBehaviour.java | 6 +- .../components/deployer/DeployerRenderer.java | 4 +- .../components/saw/SawRenderer.java | 4 +- .../structureMovement/MovementBehaviour.java | 6 +- .../bearing/StabilizedBearingInstance.java | 4 +- .../StabilizedBearingMovementBehaviour.java | 6 +- .../render/ActorInstance.java | 6 +- .../render/ContraptionInstanceManager.java | 6 +- .../render/ContraptionRenderDispatcher.java | 16 +- .../render/ContraptionRenderInfo.java | 7 +- .../render/FlwContraption.java | 5 +- .../render/FlwContraptionManager.java | 4 +- .../render/SBBContraptionManager.java | 4 +- .../BracketedKineticBlockModel.java | 2 +- .../schematics/SchematicChunkSource.java | 255 ++++++++++++++++++ .../content/schematics/SchematicWorld.java | 9 +- .../gui/element/GuiGameElement.java | 2 +- .../foundation/render/SuperByteBuffer.java | 7 +- .../render/TileEntityRenderHelper.java | 8 +- .../utility/ghost/GhostBlockRenderer.java | 2 +- .../PlacementSimulationWorld.java | 128 --------- .../worldWrappers/WrappedChunkProvider.java | 90 ------- .../utility/worldWrappers/WrappedWorld.java | 13 +- .../worldWrappers/chunk/EmptierChunk.java | 203 -------------- .../worldWrappers/chunk/WrappedChunk.java | 242 ----------------- .../chunk/WrappedChunkSection.java | 39 --- .../shaders/contraption_structure.vert | 2 +- 40 files changed, 336 insertions(+), 795 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/schematics/SchematicChunkSource.java delete mode 100644 src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java delete mode 100644 src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java delete mode 100644 src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/EmptierChunk.java delete mode 100644 src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java delete mode 100644 src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunkSection.java diff --git a/build.gradle b/build.gradle index 6d0dfe039..af3d0dfae 100644 --- a/build.gradle +++ b/build.gradle @@ -17,11 +17,10 @@ plugins { id 'com.matthewprenger.cursegradle' version "${cursegradle_version}" } apply plugin: 'net.minecraftforge.gradle' -// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. +apply plugin: 'org.parchmentmc.librarian.forgegradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' apply plugin: 'org.spongepowered.mixin' -apply plugin: 'org.parchmentmc.librarian.forgegradle' boolean dev = System.getenv('RELEASE') == null || System.getenv('RELEASE').equals('false'); // jozu: I use a gradle workspace with both projects. diff --git a/gradle.properties b/gradle.properties index dab5c2870..54ad980d4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,7 @@ parchment_version = 2021.12.19 # dependency versions registrate_version = MC1.18-1.0.21 -flywheel_version = 1.18-0.5.0.28 +flywheel_version = 1.18-0.5.0.30 jei_minecraft_version = 1.18 jei_version = 9.0.0.40 diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillActorInstance.java index 8cb457cfd..304fe9cd1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillActorInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillActorInstance.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.components.actors; import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.mojang.math.Quaternion; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.actors.flwdata.ActorData; @@ -10,7 +11,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.ren import com.simibubi.create.foundation.render.AllMaterialSpecs; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -20,7 +20,7 @@ public class DrillActorInstance extends ActorInstance { ActorData drillHead; private final Direction facing; - public DrillActorInstance(MaterialManager materialManager, PlacementSimulationWorld contraption, MovementContext context) { + public DrillActorInstance(MaterialManager materialManager, VirtualRenderWorld contraption, MovementContext context) { super(materialManager, contraption, context); Material material = materialManager.defaultSolid() diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java index b623d9200..738e868cf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java @@ -4,11 +4,11 @@ import javax.annotation.Nullable; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.Backend; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; @@ -35,7 +35,7 @@ public class DrillMovementBehaviour extends BlockBreakingMovementBehaviour { @Override @OnlyIn(value = Dist.CLIENT) - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { if (!Backend.isOn()) DrillRenderer.renderInContraption(context, renderWorld, matrices, buffer); @@ -48,7 +48,7 @@ public class DrillMovementBehaviour extends BlockBreakingMovementBehaviour { @Nullable @Override - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { + public ActorInstance createInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { return new DrillActorInstance(materialManager, simulationWorld, context); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java index 76445939d..28140233b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java @@ -1,5 +1,6 @@ package com.simibubi.create.content.contraptions.components.actors; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; @@ -11,7 +12,6 @@ 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.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -30,7 +30,7 @@ public class DrillRenderer extends KineticTileEntityRenderer { return CachedBufferer.partialFacing(AllBlockPartials.DRILL_HEAD, state); } - public static void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public static void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { BlockState state = context.state; SuperByteBuffer superBuffer = CachedBufferer.partial(AllBlockPartials.DRILL_HEAD, state); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java index 5ea50777e..de07acdd9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java @@ -4,13 +4,13 @@ import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.model.ModelData; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -31,7 +31,7 @@ public class HarvesterActorInstance extends ActorInstance { private double rotation; private double previousRotation; - public HarvesterActorInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { + public HarvesterActorInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { super(materialManager, simulationWorld, context); Material material = materialManager.defaultCutout() diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java index 3fcc935bc..f30b6f9c4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java @@ -6,6 +6,7 @@ import org.apache.commons.lang3.mutable.MutableBoolean; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.Backend; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; @@ -13,7 +14,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.ren import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; @@ -50,13 +50,13 @@ public class HarvesterMovementBehaviour extends MovementBehaviour { @Nullable @Override - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, + public ActorInstance createInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { return new HarvesterActorInstance(materialManager, simulationWorld, context); } @Override - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffers) { if (!Backend.isOn()) HarvesterRenderer.renderInContraption(context, renderWorld, matrices, buffers); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java index 4dec68c49..0fbe0c3d8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.components.actors; import static net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; @@ -13,7 +14,6 @@ import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -40,7 +40,7 @@ public class HarvesterRenderer extends SafeTileEntityRenderer mat = materialManager.defaultSolid() diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java index e16e7bd9c..e32c2a01f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java @@ -78,7 +78,7 @@ public class DeployerHandler { boolean rayMode = false; private ItemUseWorld(Level world, Direction face, BlockPos pos) { - super(world, world.getChunkSource()); + super(world); this.face = face; this.pos = pos; } 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 da606521b..92e302c8e 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 @@ -9,6 +9,7 @@ import org.apache.commons.lang3.tuple.Pair; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.Backend; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllTags.AllBlockTags; @@ -27,7 +28,6 @@ import com.simibubi.create.foundation.item.ItemHelper.ExtractionCountMode; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.NBTProcessors; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; @@ -255,7 +255,7 @@ public class DeployerMovementBehaviour extends MovementBehaviour { } @Override - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffers) { if (!Backend.isOn()) DeployerRenderer.renderInContraption(context, renderWorld, matrices, buffers); @@ -268,7 +268,7 @@ public class DeployerMovementBehaviour extends MovementBehaviour { @Nullable @Override - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { + public ActorInstance createInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { return new DeployerActorInstance(materialManager, simulationWorld, context); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java index 00d3a0ee7..2c45c235c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java @@ -5,6 +5,7 @@ import static com.simibubi.create.content.contraptions.base.DirectionalKineticBl import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.PartialModel; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.util.transform.MatrixTransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -26,7 +27,6 @@ import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; @@ -155,7 +155,7 @@ public class DeployerRenderer extends SafeTileEntityRenderer return buffer; } - public static void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public static void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { VertexConsumer builder = buffer.getBuffer(RenderType.solid()); BlockState blockState = context.state; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java index 5896963ab..6da19d6a5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java @@ -4,6 +4,7 @@ import static net.minecraft.world.level.block.state.properties.BlockStatePropert import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.PartialModel; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Vector3f; import com.simibubi.create.AllBlockPartials; @@ -18,7 +19,6 @@ import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringRe import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; @@ -157,7 +157,7 @@ public class SawRenderer extends SafeTileEntityRenderer { return KineticTileEntityRenderer.shaft(KineticTileEntityRenderer.getRotationAxisOf(te)); } - public static void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public static void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { BlockState state = context.state; Direction facing = state.getValue(SawBlock.FACING); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java index 291a8dd7c..21a3db6ee 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java @@ -3,10 +3,10 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import javax.annotation.Nullable; import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; @@ -66,12 +66,12 @@ public abstract class MovementBehaviour { } @OnlyIn(Dist.CLIENT) - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) {} @OnlyIn(Dist.CLIENT) @Nullable - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { + public ActorInstance createInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { return null; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingInstance.java index 2de04743b..8860950ff 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingInstance.java @@ -3,13 +3,13 @@ package com.simibubi.create.content.contraptions.components.structureMovement.be import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.mojang.math.Quaternion; import com.mojang.math.Vector3f; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -23,7 +23,7 @@ public class StabilizedBearingInstance extends ActorInstance { final Vector3f rotationAxis; final Quaternion blockOrientation; - public StabilizedBearingInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { + public StabilizedBearingInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { super(materialManager, simulationWorld, context); BlockState blockState = context.state; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java index 91735760f..feb82bd90 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java @@ -5,6 +5,7 @@ import javax.annotation.Nullable; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.PartialModel; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.mojang.math.Quaternion; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; @@ -18,7 +19,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.ren import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -32,7 +32,7 @@ public class StabilizedBearingMovementBehaviour extends MovementBehaviour { @Override @OnlyIn(Dist.CLIENT) - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, + public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { if (Backend.isOn()) return; @@ -70,7 +70,7 @@ public class StabilizedBearingMovementBehaviour extends MovementBehaviour { @Nullable @Override - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { + public ActorInstance createInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { return new StabilizedBearingInstance(materialManager, simulationWorld, context); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ActorInstance.java index 697aee777..6ce2d95a5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ActorInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ActorInstance.java @@ -1,17 +1,17 @@ package com.simibubi.create.content.contraptions.components.structureMovement.render; import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.world.level.LightLayer; public abstract class ActorInstance { protected final MaterialManager materialManager; - protected final PlacementSimulationWorld simulationWorld; + protected final VirtualRenderWorld simulationWorld; protected final MovementContext context; - public ActorInstance(MaterialManager materialManager, PlacementSimulationWorld world, MovementContext context) { + public ActorInstance(MaterialManager materialManager, VirtualRenderWorld world, MovementContext context) { this.materialManager = materialManager; this.simulationWorld = world; this.context = context; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java index 927207f91..ce999d473 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java @@ -9,10 +9,10 @@ import org.apache.commons.lang3.tuple.Pair; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.instancing.TaskEngine; import com.jozufozu.flywheel.backend.instancing.tile.TileInstanceManager; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.AllMovementBehaviours; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.Camera; import net.minecraft.core.BlockPos; @@ -22,9 +22,9 @@ public class ContraptionInstanceManager extends TileInstanceManager { protected ArrayList actors = new ArrayList<>(); - private final PlacementSimulationWorld renderWorld; + private final VirtualRenderWorld renderWorld; - ContraptionInstanceManager(MaterialManager materialManager, PlacementSimulationWorld contraption) { + ContraptionInstanceManager(MaterialManager materialManager, VirtualRenderWorld contraption) { super(materialManager); this.renderWorld = contraption; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java index ea4b1d9ed..47486e234 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java @@ -7,6 +7,7 @@ import org.apache.commons.lang3.tuple.Pair; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.backend.gl.error.GlError; import com.jozufozu.flywheel.core.model.ModelUtil; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.event.BeginFrameEvent; import com.jozufozu.flywheel.event.GatherContextEvent; import com.jozufozu.flywheel.event.ReloadRenderersEvent; @@ -22,7 +23,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Mov import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.render.TileEntityRenderHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LevelRenderer; @@ -93,7 +93,7 @@ public class ContraptionRenderDispatcher { // something went wrong with the other rendering if (!matrices.isReady()) return; - PlacementSimulationWorld renderWorld = renderInfo.renderWorld; + VirtualRenderWorld renderWorld = renderInfo.renderWorld; renderTileEntities(world, renderWorld, contraption, matrices, buffers); @@ -103,8 +103,8 @@ public class ContraptionRenderDispatcher { renderActors(world, renderWorld, contraption, matrices, buffers); } - public static PlacementSimulationWorld setupRenderWorld(Level world, Contraption c) { - PlacementSimulationWorld renderWorld = new PlacementSimulationWorld(world); + public static VirtualRenderWorld setupRenderWorld(Level world, Contraption c) { + VirtualRenderWorld renderWorld = new VirtualRenderWorld(world); renderWorld.setTileEntities(c.presentTileEntities.values()); @@ -118,13 +118,13 @@ public class ContraptionRenderDispatcher { return renderWorld; } - public static void renderTileEntities(Level world, PlacementSimulationWorld renderWorld, Contraption c, + public static void renderTileEntities(Level world, VirtualRenderWorld renderWorld, Contraption c, ContraptionMatrices matrices, MultiBufferSource buffer) { TileEntityRenderHelper.renderTileEntities(world, renderWorld, c.specialRenderedTileEntities, matrices.getModelViewProjection(), matrices.getLight(), buffer); } - protected static void renderActors(Level world, PlacementSimulationWorld renderWorld, Contraption c, + protected static void renderActors(Level world, VirtualRenderWorld renderWorld, Contraption c, ContraptionMatrices matrices, MultiBufferSource buffer) { PoseStack m = matrices.getModel(); @@ -147,7 +147,7 @@ public class ContraptionRenderDispatcher { } } - public static SuperByteBuffer buildStructureBuffer(PlacementSimulationWorld renderWorld, Contraption c, RenderType layer) { + public static SuperByteBuffer buildStructureBuffer(VirtualRenderWorld renderWorld, Contraption c, RenderType layer) { Collection values = c.getBlocks() .values(); BufferBuilder builder = ModelUtil.getBufferBuilderFromTemplate(renderWorld, layer, values); @@ -170,7 +170,7 @@ public class ContraptionRenderDispatcher { return LightTexture.pack((int) block, (int) sky); } - public static int getContraptionWorldLight(MovementContext context, PlacementSimulationWorld renderWorld) { + public static int getContraptionWorldLight(MovementContext context, VirtualRenderWorld renderWorld) { return LevelRenderer.getLightColor(renderWorld, context.localPos); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java index 13724e05b..edbd00dd3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java @@ -1,23 +1,22 @@ package com.simibubi.create.content.contraptions.components.structureMovement.render; -import com.jozufozu.flywheel.backend.instancing.TaskEngine; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.event.BeginFrameEvent; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.util.Mth; public class ContraptionRenderInfo { public final Contraption contraption; - public final PlacementSimulationWorld renderWorld; + public final VirtualRenderWorld renderWorld; private final ContraptionMatrices matrices = new ContraptionMatrices(); private boolean visible; - public ContraptionRenderInfo(Contraption contraption, PlacementSimulationWorld renderWorld) { + public ContraptionRenderInfo(Contraption contraption, VirtualRenderWorld renderWorld) { this.contraption = contraption; this.renderWorld = renderWorld; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java index 9b68b06fe..9bef13bca 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java @@ -10,13 +10,13 @@ import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.backend.instancing.Engine; import com.jozufozu.flywheel.backend.instancing.InstancedRenderRegistry; import com.jozufozu.flywheel.backend.instancing.SerialTaskEngine; -import com.jozufozu.flywheel.backend.instancing.TaskEngine; import com.jozufozu.flywheel.backend.instancing.batching.BatchingEngine; import com.jozufozu.flywheel.backend.instancing.instancing.InstancingEngine; import com.jozufozu.flywheel.backend.model.ArrayModelRenderer; import com.jozufozu.flywheel.backend.model.ModelRenderer; import com.jozufozu.flywheel.core.model.Model; import com.jozufozu.flywheel.core.model.WorldModel; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.event.BeginFrameEvent; import com.jozufozu.flywheel.event.RenderLayerEvent; import com.mojang.blaze3d.vertex.PoseStack; @@ -26,7 +26,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Con import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; import com.simibubi.create.foundation.render.CreateContexts; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.RenderType; import net.minecraft.util.Mth; @@ -47,7 +46,7 @@ public class FlwContraption extends ContraptionRenderInfo { // floats because we upload this to the gpu private AABB lightBox; - public FlwContraption(Contraption contraption, PlacementSimulationWorld renderWorld) { + public FlwContraption(Contraption contraption, VirtualRenderWorld renderWorld) { super(contraption, renderWorld); this.lighter = contraption.makeLighter(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java index f7a596670..8ad5929cc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraptionManager.java @@ -7,12 +7,12 @@ import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.backend.RenderLayer; import com.jozufozu.flywheel.backend.gl.GlTextureUnit; import com.jozufozu.flywheel.backend.gl.GlVertexArray; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.event.RenderLayerEvent; import com.jozufozu.flywheel.util.Textures; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.foundation.render.AllProgramSpecs; import com.simibubi.create.foundation.render.CreateContexts; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; import net.minecraft.client.renderer.RenderType; import net.minecraft.world.level.LevelAccessor; @@ -78,7 +78,7 @@ public class FlwContraptionManager extends ContraptionRenderingWorld p_46451_, DimensionType p_46452_, + Supplier p_46453_, boolean p_46454_, boolean p_46455_, long p_46456_) { + super(p_46450_, p_46451_, p_46452_, p_46453_, p_46454_, p_46455_, p_46456_); + } + + public Level withAccess(RegistryAccess access) { + this.access = access; + return this; + } + + @Override + public ChunkSource getChunkSource() { + return null; + } + + @Override + public void levelEvent(Player pPlayer, int pType, BlockPos pPos, int pData) {} + + @Override + public void gameEvent(Entity pEntity, GameEvent pEvent, BlockPos pPos) {} + + @Override + public RegistryAccess registryAccess() { + return access; + } + + @Override + public List players() { + return null; + } + + @Override + public Biome getUncachedNoiseBiome(int pX, int pY, int pZ) { + return null; + } + + @Override + public float getShade(Direction pDirection, boolean pShade) { + return 0; + } + + @Override + public void sendBlockUpdated(BlockPos pPos, BlockState pOldState, BlockState pNewState, int pFlags) {} + + @Override + public void playSound(Player pPlayer, double pX, double pY, double pZ, SoundEvent pSound, SoundSource pCategory, + float pVolume, float pPitch) {} + + @Override + public void playSound(Player pPlayer, Entity pEntity, SoundEvent pEvent, SoundSource pCategory, float pVolume, + float pPitch) {} + + @Override + public String gatherChunkSourceStats() { + return null; + } + + @Override + public Entity getEntity(int pId) { + return null; + } + + @Override + public MapItemSavedData getMapData(String pMapName) { + return null; + } + + @Override + public void setMapData(String pMapId, MapItemSavedData pData) {} + + @Override + public int getFreeMapId() { + return 0; + } + + @Override + public void destroyBlockProgress(int pBreakerId, BlockPos pPos, int pProgress) {} + + @Override + public Scoreboard getScoreboard() { + return null; + } + + @Override + public RecipeManager getRecipeManager() { + return null; + } + + @Override + public TagContainer getTagManager() { + return null; + } + + @Override + protected LevelEntityGetter getEntities() { + return null; + } + + @Override + public LevelTickAccess getBlockTicks() { + return BlackholeTickAccess.emptyLevelList(); + } + + @Override + public LevelTickAccess getFluidTicks() { + return BlackholeTickAccess.emptyLevelList(); + } + } + + private static final DummyLevel DUMMY_LEVEL = new DummyLevel(null, null, + ObfuscationReflectionHelper.getPrivateValue(DimensionType.class, null, "f_63848_"), null, false, false, 0); + + public EmptierChunk(RegistryAccess registryAccess) { + super(DUMMY_LEVEL.withAccess(registryAccess), null); + } + + public BlockState getBlockState(BlockPos p_180495_1_) { + return Blocks.VOID_AIR.defaultBlockState(); + } + + @Nullable + public BlockState setBlockState(BlockPos p_177436_1_, BlockState p_177436_2_, boolean p_177436_3_) { + return null; + } + + public FluidState getFluidState(BlockPos p_204610_1_) { + return Fluids.EMPTY.defaultFluidState(); + } + + public int getLightEmission(BlockPos p_217298_1_) { + return 0; + } + + @Nullable + public BlockEntity getBlockEntity(BlockPos p_177424_1_, EntityCreationType p_177424_2_) { + return null; + } + + public void addAndRegisterBlockEntity(BlockEntity p_150813_1_) {} + + public void setBlockEntity(BlockEntity p_177426_2_) {} + + public void removeBlockEntity(BlockPos p_177425_1_) {} + + public void markUnsaved() {} + + public boolean isEmpty() { + return true; + } + + public boolean isYSpaceEmpty(int p_76606_1_, int p_76606_2_) { + return true; + } + + public ChunkHolder.FullChunkStatus getFullStatus() { + return ChunkHolder.FullChunkStatus.BORDER; + } + } +} 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 9c662be2b..ec8cede76 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java @@ -10,7 +10,6 @@ import java.util.function.Predicate; import java.util.stream.Stream; import com.simibubi.create.Create; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedChunkProvider; import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; import net.minecraft.core.BlockPos; @@ -54,12 +53,8 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor } public SchematicWorld(BlockPos anchor, Level original) { - this(anchor, original,new WrappedChunkProvider()); - } - - public SchematicWorld(BlockPos anchor, Level original, WrappedChunkProvider provider) { - super(original, provider); - provider.setFallbackWorld(this); + super(original); + setChunkSource(new SchematicChunkSource(this)); this.blocks = new HashMap<>(); this.tileEntities = new HashMap<>(); this.bounds = new BoundingBox(BlockPos.ZERO); diff --git a/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java b/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java index 461a5a2b5..51050fd69 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java +++ b/src/main/java/com/simibubi/create/foundation/gui/element/GuiGameElement.java @@ -3,7 +3,7 @@ package com.simibubi.create.foundation.gui.element; import javax.annotation.Nullable; import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.util.VirtualEmptyModelData; +import com.jozufozu.flywheel.core.virtual.VirtualEmptyModelData; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager.DestFactor; import com.mojang.blaze3d.platform.GlStateManager.SourceFactor; diff --git a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java index a8628aa59..1f2863bd2 100644 --- a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java +++ b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java @@ -1,7 +1,7 @@ package com.simibubi.create.foundation.render; -import com.jozufozu.flywheel.core.vertex.BlockVertexList; import com.jozufozu.flywheel.api.vertex.VertexList; +import com.jozufozu.flywheel.core.vertex.BlockVertexList; import com.jozufozu.flywheel.util.transform.Rotate; import com.jozufozu.flywheel.util.transform.Scale; import com.jozufozu.flywheel.util.transform.TStack; @@ -127,7 +127,6 @@ public class SuperByteBuffer implements Scale, Translate, Translate customRenderTEs, PoseStack ms, @Nullable Matrix4f lightTransform, MultiBufferSource buffer) { renderTileEntities(world, renderWorld, customRenderTEs, ms, lightTransform, buffer, AnimationTickHolder.getPartialTicks()); } - public static void renderTileEntities(Level world, @Nullable PlacementSimulationWorld renderWorld, + public static void renderTileEntities(Level world, @Nullable VirtualRenderWorld renderWorld, Iterable customRenderTEs, PoseStack ms, @Nullable Matrix4f lightTransform, MultiBufferSource buffer, float pt) { Iterator iterator = customRenderTEs.iterator(); @@ -90,7 +90,7 @@ public class TileEntityRenderHelper { } } - public static int getCombinedLight(Level world, BlockPos worldPos, @Nullable PlacementSimulationWorld renderWorld, + public static int getCombinedLight(Level world, BlockPos worldPos, @Nullable VirtualRenderWorld renderWorld, BlockPos renderWorldPos) { int worldLight = LevelRenderer.getLightColor(world, worldPos); diff --git a/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java b/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java index 7cf0d0724..cd6087707 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java @@ -10,7 +10,7 @@ import javax.annotation.Nullable; import org.lwjgl.system.MemoryStack; -import com.jozufozu.flywheel.util.VirtualEmptyModelData; +import com.jozufozu.flywheel.core.virtual.VirtualEmptyModelData; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java deleted file mode 100644 index 9ef910057..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers; - -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.function.Predicate; - -import javax.annotation.Nullable; - -import com.jozufozu.flywheel.api.FlywheelWorld; - -import net.minecraft.core.BlockPos; -import net.minecraft.core.SectionPos; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.lighting.LevelLightEngine; - -public class PlacementSimulationWorld extends WrappedWorld implements FlywheelWorld { - public Map blocksAdded = new HashMap<>(); - public Map tesAdded = new HashMap<>(); - - public Set spannedSections = new HashSet<>(); - public LevelLightEngine lighter; - public final WrappedChunkProvider chunkSource; - private final BlockPos.MutableBlockPos scratch = new BlockPos.MutableBlockPos(); - - public PlacementSimulationWorld(Level wrapped) { - this(wrapped, new WrappedChunkProvider()); - } - - public PlacementSimulationWorld(Level wrapped, WrappedChunkProvider chunkSource) { - super(wrapped, chunkSource); - // You can't leak this before the super ctor is called. - // You can't create inner classes before super ctor is called. - chunkSource.setPlacementWorld(this); - this.chunkSource = chunkSource; - lighter = new LevelLightEngine(chunkSource, true, false); - } - - /** - * Run this after you're done using setBlock(). - */ - public void runLightingEngine() { - for (Map.Entry entry : blocksAdded.entrySet()) { - BlockPos pos = entry.getKey(); - BlockState state = entry.getValue(); - int light = state.getLightEmission(this, pos); - if (light > 0) { - lighter.onBlockEmissionIncrease(pos, light); - } - } - - lighter.runUpdates(Integer.MAX_VALUE, false, false); - } - - @Override - public LevelLightEngine getLightEngine() { - return lighter; - } - - public void setTileEntities(Collection tileEntities) { - tesAdded.clear(); - tileEntities.forEach(te -> tesAdded.put(te.getBlockPos(), te)); - } - - public void clear() { - blocksAdded.clear(); - } - - @Override - public boolean setBlock(BlockPos pos, BlockState newState, int flags) { - blocksAdded.put(pos, newState); - - SectionPos sectionPos = SectionPos.of(pos); - if (spannedSections.add(sectionPos)) { - lighter.updateSectionStatus(sectionPos, false); - } - - if ((flags & Block.UPDATE_SUPPRESS_LIGHT) == 0) { - lighter.checkBlock(pos); - } - - return true; - } - - @Override - public boolean setBlockAndUpdate(BlockPos pos, BlockState state) { - return setBlock(pos, state, 0); - } - - @Override - @Nullable - public BlockEntity getBlockEntity(BlockPos pos) { - return tesAdded.get(pos); - } - - @Override - public boolean isStateAtPosition(BlockPos pos, Predicate condition) { - return condition.test(getBlockState(pos)); - } - - @Override - public boolean isLoaded(BlockPos pos) { - return true; - } - - @Override - public boolean isAreaLoaded(BlockPos center, int range) { - return true; - } - - public BlockState getBlockState(int x, int y, int z) { - return getBlockState(scratch.set(x, y, z)); - } - - @Override - public BlockState getBlockState(BlockPos pos) { - BlockState state = blocksAdded.get(pos); - if (state != null) - return state; - return Blocks.AIR.defaultBlockState(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java deleted file mode 100644 index 8b4b48a6e..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers; - -import java.util.HashMap; -import java.util.Map; -import java.util.function.BooleanSupplier; -import java.util.stream.Stream; - -import javax.annotation.Nullable; - -import com.simibubi.create.foundation.utility.worldWrappers.chunk.EmptierChunk; -import com.simibubi.create.foundation.utility.worldWrappers.chunk.WrappedChunk; - -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.chunk.ChunkAccess; -import net.minecraft.world.level.chunk.ChunkSource; -import net.minecraft.world.level.chunk.ChunkStatus; -import net.minecraft.world.level.lighting.LevelLightEngine; - -public class WrappedChunkProvider extends ChunkSource { - private PlacementSimulationWorld world; - private Level fallbackWorld; - - public HashMap chunks; - - public WrappedChunkProvider setFallbackWorld(Level world) { - fallbackWorld = world; - return this; - } - - // VirtualChunkSource is created before VirtualRenderWorld, so we can't initialize it in the ctor. - public void setPlacementWorld(PlacementSimulationWorld world) { - fallbackWorld = this.world = world; - this.chunks = new HashMap<>(); - } - - public Stream getLightSources() { - return world.blocksAdded.entrySet() - .stream() - .filter(it -> it.getValue() - .getLightEmission(world, it.getKey()) != 0) - .map(Map.Entry::getKey); - } - - @Nullable - @Override - public BlockGetter getChunkForLighting(int x, int z) { - return getChunk(x, z); - } - - @Override - public Level getLevel() { - return fallbackWorld; - } - - @Nullable - @Override - public ChunkAccess getChunk(int x, int z, ChunkStatus status, boolean p_212849_4_) { - return getChunk(x, z); - } - - public ChunkAccess getChunk(int x, int z) { - long pos = ChunkPos.asLong(x, z); - - if (chunks == null) - return new EmptierChunk(fallbackWorld.registryAccess()); - - return chunks.computeIfAbsent(pos, $ -> new WrappedChunk(world, x, z)); - } - - @Override - public String gatherStats() { - return "WrappedChunkProvider"; - } - - @Override - public LevelLightEngine getLightEngine() { - return world.getLightEngine(); - } - - @Override - public void tick(BooleanSupplier pHasTimeLeft) {} - - @Override - public int getLoadedChunksCount() { - return 0; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java index 499fb619e..d6b4b418b 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java @@ -5,9 +5,7 @@ import java.util.List; import java.util.function.Predicate; import javax.annotation.Nullable; -import javax.annotation.ParametersAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.RegistryAccess; @@ -35,19 +33,18 @@ import net.minecraft.world.ticks.LevelTickAccess; public class WrappedWorld extends Level { protected Level world; - protected ChunkSource provider; + protected ChunkSource chunkSource; protected LevelEntityGetter entityGetter = new DummyLevelEntityGetter<>(); - public WrappedWorld(Level world, ChunkSource provider) { + public WrappedWorld(Level world) { super((WritableLevelData) world.getLevelData(), world.dimension(), world.dimensionType(), world::getProfiler, world.isClientSide, world.isDebug(), 0); this.world = world; - this.provider = provider; } - public WrappedWorld(Level world) { - this(world, null); + public void setChunkSource(ChunkSource source) { + this.chunkSource = source; } public Level getLevel() { @@ -102,7 +99,7 @@ public class WrappedWorld extends Level { @Override public ChunkSource getChunkSource() { - return provider; + return chunkSource != null ? chunkSource : world.getChunkSource(); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/EmptierChunk.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/EmptierChunk.java deleted file mode 100644 index a800298e9..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/EmptierChunk.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers.chunk; - -import java.util.List; -import java.util.function.Supplier; - -import javax.annotation.Nullable; - -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.ResourceKey; -import net.minecraft.server.level.ChunkHolder; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundSource; -import net.minecraft.tags.TagContainer; -import net.minecraft.util.profiling.ProfilerFiller; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.crafting.RecipeManager; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.chunk.ChunkSource; -import net.minecraft.world.level.chunk.LevelChunk; -import net.minecraft.world.level.dimension.DimensionType; -import net.minecraft.world.level.entity.LevelEntityGetter; -import net.minecraft.world.level.gameevent.GameEvent; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import net.minecraft.world.level.saveddata.maps.MapItemSavedData; -import net.minecraft.world.level.storage.WritableLevelData; -import net.minecraft.world.scores.Scoreboard; -import net.minecraft.world.ticks.BlackholeTickAccess; -import net.minecraft.world.ticks.LevelTickAccess; -import net.minecraftforge.fml.util.ObfuscationReflectionHelper; - -public class EmptierChunk extends LevelChunk { - - private static final class DummyLevel extends Level { - RegistryAccess access; - - private DummyLevel(WritableLevelData p_46450_, ResourceKey p_46451_, DimensionType p_46452_, - Supplier p_46453_, boolean p_46454_, boolean p_46455_, long p_46456_) { - super(p_46450_, p_46451_, p_46452_, p_46453_, p_46454_, p_46455_, p_46456_); - } - - public Level withAccess(RegistryAccess access) { - this.access = access; - return this; - } - - @Override - public ChunkSource getChunkSource() { - return null; - } - - @Override - public void levelEvent(Player pPlayer, int pType, BlockPos pPos, int pData) {} - - @Override - public void gameEvent(Entity pEntity, GameEvent pEvent, BlockPos pPos) {} - - @Override - public RegistryAccess registryAccess() { - return access; - } - - @Override - public List players() { - return null; - } - - @Override - public Biome getUncachedNoiseBiome(int pX, int pY, int pZ) { - return null; - } - - @Override - public float getShade(Direction pDirection, boolean pShade) { - return 0; - } - - @Override - public void sendBlockUpdated(BlockPos pPos, BlockState pOldState, BlockState pNewState, int pFlags) {} - - @Override - public void playSound(Player pPlayer, double pX, double pY, double pZ, SoundEvent pSound, SoundSource pCategory, - float pVolume, float pPitch) {} - - @Override - public void playSound(Player pPlayer, Entity pEntity, SoundEvent pEvent, SoundSource pCategory, float pVolume, - float pPitch) {} - - @Override - public String gatherChunkSourceStats() { - return null; - } - - @Override - public Entity getEntity(int pId) { - return null; - } - - @Override - public MapItemSavedData getMapData(String pMapName) { - return null; - } - - @Override - public void setMapData(String pMapId, MapItemSavedData pData) {} - - @Override - public int getFreeMapId() { - return 0; - } - - @Override - public void destroyBlockProgress(int pBreakerId, BlockPos pPos, int pProgress) {} - - @Override - public Scoreboard getScoreboard() { - return null; - } - - @Override - public RecipeManager getRecipeManager() { - return null; - } - - @Override - public TagContainer getTagManager() { - return null; - } - - @Override - protected LevelEntityGetter getEntities() { - return null; - } - - @Override - public LevelTickAccess getBlockTicks() { - return BlackholeTickAccess.emptyLevelList(); - } - - @Override - public LevelTickAccess getFluidTicks() { - return BlackholeTickAccess.emptyLevelList(); - } - } - - private static final DummyLevel DUMMY_LEVEL = new DummyLevel(null, null, - ObfuscationReflectionHelper.getPrivateValue(DimensionType.class, null, "f_63848_"), null, false, false, 0); - - public EmptierChunk(RegistryAccess registryAccess) { - super(DUMMY_LEVEL.withAccess(registryAccess), null); - } - - public BlockState getBlockState(BlockPos p_180495_1_) { - return Blocks.VOID_AIR.defaultBlockState(); - } - - @Nullable - public BlockState setBlockState(BlockPos p_177436_1_, BlockState p_177436_2_, boolean p_177436_3_) { - return null; - } - - public FluidState getFluidState(BlockPos p_204610_1_) { - return Fluids.EMPTY.defaultFluidState(); - } - - public int getLightEmission(BlockPos p_217298_1_) { - return 0; - } - - @Nullable - public BlockEntity getBlockEntity(BlockPos p_177424_1_, LevelChunk.EntityCreationType p_177424_2_) { - return null; - } - - public void addAndRegisterBlockEntity(BlockEntity p_150813_1_) {} - - public void setBlockEntity(BlockEntity p_177426_2_) {} - - public void removeBlockEntity(BlockPos p_177425_1_) {} - - public void markUnsaved() {} - - public boolean isEmpty() { - return true; - } - - public boolean isYSpaceEmpty(int p_76606_1_, int p_76606_2_) { - return true; - } - - public ChunkHolder.FullChunkStatus getFullStatus() { - return ChunkHolder.FullChunkStatus.BORDER; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java deleted file mode 100644 index fbca9d03b..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java +++ /dev/null @@ -1,242 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers.chunk; - -import java.util.Collection; -import java.util.Map; -import java.util.Set; -import java.util.stream.Stream; - -import javax.annotation.Nullable; - -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import it.unimi.dsi.fastutil.longs.LongSet; -import it.unimi.dsi.fastutil.shorts.ShortList; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Registry; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.chunk.ChunkAccess; -import net.minecraft.world.level.chunk.ChunkStatus; -import net.minecraft.world.level.chunk.LevelChunkSection; -import net.minecraft.world.level.chunk.UpgradeData; -import net.minecraft.world.level.levelgen.Heightmap; -import net.minecraft.world.level.levelgen.feature.StructureFeature; -import net.minecraft.world.level.levelgen.structure.StructureStart; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.ticks.BlackholeTickAccess; -import net.minecraft.world.ticks.TickContainerAccess; - -public class WrappedChunk extends ChunkAccess { - - final PlacementSimulationWorld world; - boolean needsLight; - final int x; - final int z; - - private final LevelChunkSection[] sections; - - public WrappedChunk(PlacementSimulationWorld world, int x, int z) { - super(new ChunkPos(x, z), UpgradeData.EMPTY, world, world.registryAccess() - .registry(Registry.BIOME_REGISTRY) - .orElseThrow(), 0L, null, null); - - this.world = world; - this.needsLight = true; - this.x = x; - this.z = z; - - this.sections = new LevelChunkSection[16]; - - for (int i = 0; i < 16; i++) { - sections[i] = new WrappedChunkSection(this, i << 4); - } - } - - @Override - public Stream getLights() { - return world.blocksAdded.entrySet() - .stream() - .filter(it -> { - BlockPos blockPos = it.getKey(); - boolean chunkContains = blockPos.getX() >> 4 == x && blockPos.getZ() >> 4 == z; - return chunkContains && it.getValue() - .getLightEmission(world, blockPos) != 0; - }) - .map(Map.Entry::getKey); - } - - @Override - public LevelChunkSection[] getSections() { - return sections; - } - - @Override - public ChunkStatus getStatus() { - return ChunkStatus.LIGHT; - } - - @Nullable - @Override - public BlockState setBlockState(BlockPos p_177436_1_, BlockState p_177436_2_, boolean p_177436_3_) { - return null; - } - - @Override - public void setBlockEntity(BlockEntity p_177426_2_) {} - - @Override - public void addEntity(Entity p_76612_1_) {} - - @Override - public Set getBlockEntitiesPos() { - return null; - } - - @Override - public Collection> getHeightmaps() { - return null; - } - - @Override - public void setHeightmap(Heightmap.Types p_201607_1_, long[] p_201607_2_) {} - - @Override - public Heightmap getOrCreateHeightmapUnprimed(Heightmap.Types p_217303_1_) { - return null; - } - - @Override - public int getHeight(Heightmap.Types p_201576_1_, int p_201576_2_, int p_201576_3_) { - return 0; - } - - @Override - public void setUnsaved(boolean p_177427_1_) {} - - @Override - public boolean isUnsaved() { - return false; - } - - @Override - public void removeBlockEntity(BlockPos p_177425_1_) {} - - @Override - public ShortList[] getPostProcessing() { - return new ShortList[0]; - } - - @Nullable - @Override - public CompoundTag getBlockEntityNbt(BlockPos p_201579_1_) { - return null; - } - - @Nullable - @Override - public CompoundTag getBlockEntityNbtForSaving(BlockPos p_223134_1_) { - return null; - } - - @Override - public UpgradeData getUpgradeData() { - return null; - } - - @Override - public void setInhabitedTime(long p_177415_1_) {} - - @Override - public long getInhabitedTime() { - return 0; - } - - @Override - public boolean isLightCorrect() { - return needsLight; - } - - @Override - public void setLightCorrect(boolean needsLight) { - this.needsLight = needsLight; - } - - @Nullable - @Override - public BlockEntity getBlockEntity(BlockPos pos) { - return null; - } - - @Override - public BlockState getBlockState(BlockPos pos) { - return world.getBlockState(pos); - } - - @Override - public FluidState getFluidState(BlockPos p_204610_1_) { - return null; - } - - @Override - public void addReferenceForFeature(StructureFeature arg0, long arg1) {} - - @Override - public Map, LongSet> getAllReferences() { - return null; - } - - @Override - public LongSet getReferencesForFeature(StructureFeature arg0) { - return null; - } - - @Override - public StructureStart getStartForFeature(StructureFeature arg0) { - return null; - } - - @Override - public void setAllReferences(Map, LongSet> arg0) {} - - @Override - public void setStartForFeature(StructureFeature arg0, StructureStart arg1) {} - - @Override - public void setAllStarts(Map, StructureStart> p_201612_1_) {} - - @Override - public Map, StructureStart> getAllStarts() { - return null; - } - - @Override - public int getHeight() { - return world.getHeight(); - } - - @Override - public int getMinBuildHeight() { - return world.getMinBuildHeight(); - } - - @Override - public TickContainerAccess getFluidTicks() { - return BlackholeTickAccess.emptyContainer(); - } - - @Override - public TicksToSave getTicksForSerialization() { - return null; - } - - @Override - public TickContainerAccess getBlockTicks() { - return BlackholeTickAccess.emptyContainer(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunkSection.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunkSection.java deleted file mode 100644 index 6478ba4ee..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunkSection.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers.chunk; - -import net.minecraft.core.Registry; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.chunk.LevelChunkSection; - -public class WrappedChunkSection extends LevelChunkSection { - - public WrappedChunk owner; - - public final int xStart; - public final int yStart; - public final int zStart; - - public WrappedChunkSection(WrappedChunk owner, int yBase) { - super(yBase, owner.world.registryAccess() - .registry(Registry.BIOME_REGISTRY) - .orElseThrow()); - this.owner = owner; - this.xStart = owner.getPos() - .getMinBlockX(); - this.yStart = yBase; - this.zStart = owner.getPos() - .getMinBlockZ(); - } - - @Override - public BlockState getBlockState(int x, int y, int z) { - // ChunkSection#getBlockState expects local chunk coordinates, so we add to get - // back into world coords. - return owner.world.getBlockState(x + xStart, y + yStart, z + zStart); - } - - @Override - public BlockState setBlockState(int p_177484_1_, int p_177484_2_, int p_177484_3_, BlockState p_177484_4_, - boolean p_177484_5_) { - throw new IllegalStateException("Chunk sections should not be mutated in a fake world."); - } -} diff --git a/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert b/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert index 2460a76fc..df222953e 100644 --- a/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert +++ b/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert @@ -29,7 +29,7 @@ BlockFrag vertex(Vertex v) { #if defined(DEBUG_NORMAL) b.color = vec4(norm, 1.); #else - b.color = vec4(v.color.rgb / diffuse(v.normal), v.color.a); + b.color = v.color; #endif return b; From ffeecfdce03a5a6166038cb4c5d8916f73a69aab Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Mon, 27 Dec 2021 19:14:20 -0800 Subject: [PATCH 20/42] Go through GlVertexArray - VAO state is now handled by GlVertexArray objects - IndexedModel no longer inherits from VBOModel - BufferedModel doesn't need #clearState - Likely fixes crash on intel drivers --- gradle.properties | 2 +- .../structureMovement/render/FlwContraption.java | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index c13670115..784b6a0fe 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,7 @@ parchment_version = 2021.12.19 # dependency versions registrate_version = MC1.18-1.0.21 -flywheel_version = 1.18-0.5.0.31 +flywheel_version = 1.18-0.5.0.33 jei_minecraft_version = 1.18 jei_version = 9.0.0.40 diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java index 9bef13bca..f02aced9f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java @@ -4,7 +4,6 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.function.Supplier; import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.backend.instancing.Engine; @@ -13,7 +12,6 @@ import com.jozufozu.flywheel.backend.instancing.SerialTaskEngine; import com.jozufozu.flywheel.backend.instancing.batching.BatchingEngine; import com.jozufozu.flywheel.backend.instancing.instancing.InstancingEngine; import com.jozufozu.flywheel.backend.model.ArrayModelRenderer; -import com.jozufozu.flywheel.backend.model.ModelRenderer; import com.jozufozu.flywheel.core.model.Model; import com.jozufozu.flywheel.core.model.WorldModel; import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; @@ -38,7 +36,7 @@ public class FlwContraption extends ContraptionRenderInfo { private final ContraptionLighter lighter; - private final Map renderLayers = new HashMap<>(); + private final Map renderLayers = new HashMap<>(); private final Matrix4f modelViewPartial = new Matrix4f(); private final ContraptionInstanceWorld instanceWorld; @@ -64,7 +62,7 @@ public class FlwContraption extends ContraptionRenderInfo { } public void renderStructureLayer(RenderType layer, ContraptionProgram shader) { - ModelRenderer structure = renderLayers.get(layer); + ArrayModelRenderer structure = renderLayers.get(layer); if (structure != null) { setup(shader); structure.draw(); @@ -119,7 +117,7 @@ public class FlwContraption extends ContraptionRenderInfo { } public void invalidate() { - for (ModelRenderer buffer : renderLayers.values()) { + for (ArrayModelRenderer buffer : renderLayers.values()) { buffer.delete(); } renderLayers.clear(); @@ -130,7 +128,7 @@ public class FlwContraption extends ContraptionRenderInfo { } private void buildLayers() { - for (ModelRenderer buffer : renderLayers.values()) { + for (ArrayModelRenderer buffer : renderLayers.values()) { buffer.delete(); } @@ -139,7 +137,7 @@ public class FlwContraption extends ContraptionRenderInfo { List blockLayers = RenderType.chunkBufferLayers(); for (RenderType layer : blockLayers) { - Supplier layerModel = () -> new WorldModel(renderWorld, layer, contraption.getBlocks().values(), layer + "_" + contraption.entity.getId()); + Model layerModel = new WorldModel(renderWorld, layer, contraption.getBlocks().values(), layer + "_" + contraption.entity.getId()); renderLayers.put(layer, new ArrayModelRenderer(layerModel)); } From 8e4dcb958d94df15b4c396020cc7203f88d4b672 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Tue, 28 Dec 2021 13:04:22 +0100 Subject: [PATCH 21/42] Stonehedge - Fixed Harvesters hard-colliding with leaves when used with pistons, pulleys or a gantry carriage - Fixed kinetic tiles not marking chunks for saving when speed or stress changes - Dedicated Servers no longer create a resourcepack folder --- gradle.properties | 2 +- src/main/java/com/simibubi/create/Create.java | 4 +- .../com/simibubi/create/CreateClient.java | 3 + .../contraptions/base/KineticTileEntity.java | 3 + .../actors/HarvesterMovementBehaviour.java | 4 +- .../BlockMovementChecks.java | 6 ++ .../ContraptionCollider.java | 57 ++++++++++++------- src/main/resources/META-INF/mods.toml | 2 +- 8 files changed, 52 insertions(+), 29 deletions(-) diff --git a/gradle.properties b/gradle.properties index 784b6a0fe..738fb9ba8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.jvmargs = -Xmx3G org.gradle.daemon = false # mod version info -mod_version = 0.4a +mod_version = 0.4b minecraft_version = 1.18.1 forge_version = 39.0.8 diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 5fcb90d8e..5a616dba1 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -58,7 +58,7 @@ public class Create { public static final String ID = "create"; public static final String NAME = "Create"; - public static final String VERSION = "0.4a"; + public static final String VERSION = "0.4b"; public static final Logger LOGGER = LogManager.getLogger(); @@ -125,8 +125,6 @@ public class Create { SchematicInstances.register(); BuiltinPotatoProjectileTypes.register(); - ShippedResourcePacks.extractFiles("Copper Legacy Pack"); - event.enqueueWork(() -> { AllTriggers.register(); SchematicProcessor.register(); diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index e0e0c7983..add42fd1f 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -25,6 +25,7 @@ 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.ModelSwapper; +import com.simibubi.create.foundation.utility.ShippedResourcePacks; import com.simibubi.create.foundation.utility.ghost.GhostBlocks; import com.simibubi.create.foundation.utility.outliner.Outliner; @@ -81,6 +82,8 @@ public class CreateClient { BUFFER_CACHE.registerCompartment(SBBContraptionManager.CONTRAPTION, 20); BUFFER_CACHE.registerCompartment(WorldSectionElement.DOC_WORLD_SECTION, 20); + ShippedResourcePacks.extractFiles("Copper Legacy Pack"); + AllKeys.register(); // AllFluids.assignRenderLayers(); AllBlockPartials.init(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java index 5b78108e3..7fcf00893 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java @@ -151,6 +151,7 @@ public class KineticTileEntity extends SmartTileEntity this.stress = currentStress; this.networkSize = networkSize; boolean overStressed = maxStress < currentStress && StressImpact.isEnabled(); + setChanged(); if (overStressed != this.overStressed) { float prevSpeed = getSpeed(); @@ -181,6 +182,7 @@ public class KineticTileEntity extends SmartTileEntity boolean directionSwap = !fromOrToZero && Math.signum(previousSpeed) != Math.signum(getSpeed()); if (fromOrToZero || directionSwap) flickerTally = getFlickerScore() + 5; + setChanged(); } @Override @@ -324,6 +326,7 @@ public class KineticTileEntity extends SmartTileEntity getOrCreateNetwork().remove(this); network = networkIn; + setChanged(); if (networkIn == null) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java index f30b6f9c4..361d07b7a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java @@ -107,7 +107,7 @@ public class HarvesterMovementBehaviour extends MovementBehaviour { world.setBlockAndUpdate(pos, cutCrop(world, pos, stateVisited)); } - private boolean isValidCrop(Level world, BlockPos pos, BlockState state) { + public boolean isValidCrop(Level world, BlockPos pos, BlockState state) { boolean harvestPartial = AllConfigs.SERVER.kinetics.harvestPartiallyGrown.get(); boolean replant = AllConfigs.SERVER.kinetics.harvesterReplants.get(); @@ -141,7 +141,7 @@ public class HarvesterMovementBehaviour extends MovementBehaviour { return false; } - private boolean isValidOther(Level world, BlockPos pos, BlockState state) { + public boolean isValidOther(Level world, BlockPos pos, BlockState state) { if (state.getBlock() instanceof CropBlock) return false; if (state.getBlock() instanceof SugarCaneBlock) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java index 53b24cac8..eee909ddb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java @@ -8,6 +8,7 @@ import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.components.actors.AttachedActorBlock; import com.simibubi.create.content.contraptions.components.actors.HarvesterBlock; +import com.simibubi.create.content.contraptions.components.actors.PloughBlock; import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceBlock; import com.simibubi.create.content.contraptions.components.crank.HandCrankBlock; import com.simibubi.create.content.contraptions.components.fan.NozzleBlock; @@ -347,6 +348,11 @@ public class BlockMovementChecks { return state.getValue(BlockStateProperties.FACING) == facing; if (AllBlocks.MECHANICAL_BEARING.has(state)) return state.getValue(BlockStateProperties.FACING) == facing; + if (AllBlocks.MECHANICAL_HARVESTER.has(state)) + return state.getValue(HarvesterBlock.FACING) == facing; + if (AllBlocks.MECHANICAL_PLOUGH.has(state)) + return state.getValue(PloughBlock.FACING) == facing; + if (AllBlocks.CART_ASSEMBLER.has(state)) return Direction.DOWN == facing; if (AllBlocks.MECHANICAL_SAW.has(state)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java index 2d788c9a0..f0ed5828a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java @@ -14,6 +14,7 @@ import com.google.common.base.Predicates; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllMovementBehaviours; import com.simibubi.create.content.contraptions.components.actors.BlockBreakingMovementBehaviour; +import com.simibubi.create.content.contraptions.components.actors.HarvesterMovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity.ContraptionRotationState; import com.simibubi.create.content.contraptions.components.structureMovement.sync.ClientMotionPacket; import com.simibubi.create.foundation.collision.ContinuousOBBCollider.ContinuousSeparationManifold; @@ -242,10 +243,10 @@ public class ContraptionCollider { boolean hasNormal = !collisionNormal.equals(Vec3.ZERO); boolean anyCollision = hardCollision || temporalCollision; - if (bounce > 0 && hasNormal && anyCollision && bounceEntity(entity, collisionNormal, contraptionEntity, bounce)) { - entity.level.playSound(playerType == PlayerType.CLIENT ? (Player) entity : null, - entity.getX(), entity.getY(), entity.getZ(), SoundEvents.SLIME_BLOCK_FALL, - SoundSource.BLOCKS, .5f, 1); + if (bounce > 0 && hasNormal && anyCollision + && bounceEntity(entity, collisionNormal, contraptionEntity, bounce)) { + entity.level.playSound(playerType == PlayerType.CLIENT ? (Player) entity : null, entity.getX(), + entity.getY(), entity.getZ(), SoundEvents.SLIME_BLOCK_FALL, SoundSource.BLOCKS, .5f, 1); continue; } @@ -339,25 +340,30 @@ public class ContraptionCollider { return false; Vec3 contactPointMotion = contraption.getContactPointMotion(entity.position()); - Vec3 motion = entity.getDeltaMovement().subtract(contactPointMotion); - Vec3 deltav = normal.scale(factor*2*motion.dot(normal)); + Vec3 motion = entity.getDeltaMovement() + .subtract(contactPointMotion); + Vec3 deltav = normal.scale(factor * 2 * motion.dot(normal)); if (deltav.dot(deltav) < 0.1f) - return false; - entity.setDeltaMovement(entity.getDeltaMovement().subtract(deltav)); + return false; + entity.setDeltaMovement(entity.getDeltaMovement() + .subtract(deltav)); return true; } public static Vec3 getWorldToLocalTranslation(Entity entity, AbstractContraptionEntity contraptionEntity) { - return getWorldToLocalTranslation(entity, contraptionEntity.getAnchorVec(), contraptionEntity.getRotationState()); + return getWorldToLocalTranslation(entity, contraptionEntity.getAnchorVec(), + contraptionEntity.getRotationState()); } public static Vec3 getWorldToLocalTranslation(Entity entity, Vec3 anchorVec, ContraptionRotationState rotation) { return getWorldToLocalTranslation(entity, anchorVec, rotation.asMatrix(), rotation.getYawOffset()); } - public static Vec3 getWorldToLocalTranslation(Entity entity, Vec3 anchorVec, Matrix3d rotationMatrix, float yawOffset) { + public static Vec3 getWorldToLocalTranslation(Entity entity, Vec3 anchorVec, Matrix3d rotationMatrix, + float yawOffset) { Vec3 entityPosition = entity.position(); - Vec3 centerY = new Vec3(0, entity.getBoundingBox().getYsize() / 2, 0); + Vec3 centerY = new Vec3(0, entity.getBoundingBox() + .getYsize() / 2, 0); Vec3 position = entityPosition; position = position.add(centerY); position = position.subtract(VecHelper.CENTER_OF_ORIGIN); @@ -371,14 +377,16 @@ public class ContraptionCollider { } public static Vec3 getWorldToLocalTranslation(Vec3 entity, AbstractContraptionEntity contraptionEntity) { - return getWorldToLocalTranslation(entity, contraptionEntity.getAnchorVec(), contraptionEntity.getRotationState()); + return getWorldToLocalTranslation(entity, contraptionEntity.getAnchorVec(), + contraptionEntity.getRotationState()); } public static Vec3 getWorldToLocalTranslation(Vec3 inPos, Vec3 anchorVec, ContraptionRotationState rotation) { return getWorldToLocalTranslation(inPos, anchorVec, rotation.asMatrix(), rotation.getYawOffset()); } - public static Vec3 getWorldToLocalTranslation(Vec3 inPos, Vec3 anchorVec, Matrix3d rotationMatrix, float yawOffset) { + public static Vec3 getWorldToLocalTranslation(Vec3 inPos, Vec3 anchorVec, Matrix3d rotationMatrix, + float yawOffset) { Vec3 position = inPos; position = position.subtract(VecHelper.CENTER_OF_ORIGIN); position = position.subtract(anchorVec); @@ -436,8 +444,7 @@ public class ContraptionCollider { return entity instanceof LocalPlayer; } - private static List getPotentiallyCollidedShapes(Level world, Contraption contraption, - AABB localBB) { + private static List getPotentiallyCollidedShapes(Level world, Contraption contraption, AABB localBB) { double height = localBB.getYsize(); double width = localBB.getXsize(); @@ -536,16 +543,24 @@ public class ContraptionCollider { BlockState collidedState = world.getBlockState(colliderPos); StructureBlockInfo blockInfo = contraption.getBlocks() .get(pos); + boolean emptyCollider = collidedState.getCollisionShape(world, pos) + .isEmpty(); if (AllMovementBehaviours.contains(blockInfo.state.getBlock())) { MovementBehaviour movementBehaviour = AllMovementBehaviours.of(blockInfo.state.getBlock()); if (movementBehaviour instanceof BlockBreakingMovementBehaviour) { BlockBreakingMovementBehaviour behaviour = (BlockBreakingMovementBehaviour) movementBehaviour; - if (!behaviour.canBreak(world, colliderPos, collidedState) - && !collidedState.getCollisionShape(world, pos) - .isEmpty()) { + if (!behaviour.canBreak(world, colliderPos, collidedState) && !emptyCollider) + return true; + continue; + } + if (movementBehaviour instanceof HarvesterMovementBehaviour) { + HarvesterMovementBehaviour harvesterMovementBehaviour = + (HarvesterMovementBehaviour) movementBehaviour; + if (!harvesterMovementBehaviour.isValidCrop(world, colliderPos, collidedState) + && !harvesterMovementBehaviour.isValidOther(world, colliderPos, collidedState) + && !emptyCollider) return true; - } continue; } } @@ -556,9 +571,7 @@ public class ContraptionCollider { if (collidedState.getBlock() instanceof CocoaBlock) continue; if (!collidedState.getMaterial() - .isReplaceable() - && !collidedState.getCollisionShape(world, colliderPos) - .isEmpty()) { + .isReplaceable() && !emptyCollider) { return true; } diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index d0c659484..bd4ff898d 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -5,7 +5,7 @@ license="MIT" [[mods]] modId="create" -version="0.4a" +version="0.4b" displayName="Create" #updateJSONURL="" displayURL="https://www.curseforge.com/minecraft/mc-mods/create" From 3deb23303d36ece1a10d2caa30e3f15cd26b1e6e Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Tue, 28 Dec 2021 13:48:30 +0100 Subject: [PATCH 22/42] Moss, Paper, Scissors - Dripstone and Lush Caves can now replace exposed create stone types with their own generated blocks --- src/generated/resources/.cache/cache | 6 +++++- .../data/create/advancements/aesthetics.json | 4 ++-- .../tags/blocks/azalea_root_replaceable.json | 12 ++++++++++++ .../blocks/dripstone_replaceable_blocks.json | 12 ++++++++++++ .../tags/blocks/lush_ground_replaceable.json | 12 ++++++++++++ .../tags/blocks/moss_replaceable.json | 12 ++++++++++++ .../content/palettes/PaletteBlockPattern.java | 18 ------------------ .../foundation/data/CreateRegistrate.java | 5 +++++ 8 files changed, 60 insertions(+), 21 deletions(-) create mode 100644 src/generated/resources/data/minecraft/tags/blocks/azalea_root_replaceable.json create mode 100644 src/generated/resources/data/minecraft/tags/blocks/dripstone_replaceable_blocks.json create mode 100644 src/generated/resources/data/minecraft/tags/blocks/lush_ground_replaceable.json create mode 100644 src/generated/resources/data/minecraft/tags/blocks/moss_replaceable.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 44ee6b84e..0dcfc8f70 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -2125,7 +2125,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json 5049f72c327a88f175f6f9425909e098fc711100 assets/create/sounds.json -0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json +5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json 613e64b44bed959da899fdd54c1cacb227fb33f2 data/create/advancements/andesite_alloy.json 81885c6bfb85792c88aaa7c9b70f58832945d31f data/create/advancements/andesite_casing.json 83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json @@ -5207,10 +5207,14 @@ fb9bfb4c84ed9cf2da8c4b2fbc4cd4d9f37d3016 data/forge/tags/items/plates/gold.json 9f7a428085b1aac66da32a43e9d51c7efc1f0d81 data/forge/tags/items/storage_blocks.json ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/items/storage_blocks/brass.json 7f71a774800111e50b42de0e6159ed2d2a807d32 data/forge/tags/items/storage_blocks/zinc.json +2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/azalea_root_replaceable.json 9f7a428085b1aac66da32a43e9d51c7efc1f0d81 data/minecraft/tags/blocks/beacon_base_blocks.json +2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/dripstone_replaceable_blocks.json 69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json +2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/lush_ground_replaceable.json 59681910c06f8b7385c6641a409d352056235506 data/minecraft/tags/blocks/mineable/axe.json f8c66b3808efb61d2d928748783bb7eb8a1357f9 data/minecraft/tags/blocks/mineable/pickaxe.json +2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/moss_replaceable.json e157c1d3af30e409e34bbefbe15a037e6e1c8daa data/minecraft/tags/blocks/needs_iron_tool.json a08f67865337f62601c5e333b4011382d10020e4 data/minecraft/tags/blocks/needs_stone_tool.json 6bcabbc1c0479caa80a0ebc676bb34ce0052efb0 data/minecraft/tags/blocks/rails.json diff --git a/src/generated/resources/data/create/advancements/aesthetics.json b/src/generated/resources/data/create/advancements/aesthetics.json index d723cbe38..59a86f429 100644 --- a/src/generated/resources/data/create/advancements/aesthetics.json +++ b/src/generated/resources/data/create/advancements/aesthetics.json @@ -28,8 +28,8 @@ "trigger": "create:bracket_apply", "conditions": { "accepted_entries": [ - "create:cogwheel", - "create:large_cogwheel" + "create:large_cogwheel", + "create:cogwheel" ] } }, diff --git a/src/generated/resources/data/minecraft/tags/blocks/azalea_root_replaceable.json b/src/generated/resources/data/minecraft/tags/blocks/azalea_root_replaceable.json new file mode 100644 index 000000000..caf90849c --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/azalea_root_replaceable.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "create:asurine", + "create:crimsite", + "create:limestone", + "create:ochrum", + "create:scoria", + "create:scorchia", + "create:veridium" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/dripstone_replaceable_blocks.json b/src/generated/resources/data/minecraft/tags/blocks/dripstone_replaceable_blocks.json new file mode 100644 index 000000000..caf90849c --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/dripstone_replaceable_blocks.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "create:asurine", + "create:crimsite", + "create:limestone", + "create:ochrum", + "create:scoria", + "create:scorchia", + "create:veridium" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/lush_ground_replaceable.json b/src/generated/resources/data/minecraft/tags/blocks/lush_ground_replaceable.json new file mode 100644 index 000000000..caf90849c --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/lush_ground_replaceable.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "create:asurine", + "create:crimsite", + "create:limestone", + "create:ochrum", + "create:scoria", + "create:scorchia", + "create:veridium" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/moss_replaceable.json b/src/generated/resources/data/minecraft/tags/blocks/moss_replaceable.json new file mode 100644 index 000000000..caf90849c --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/moss_replaceable.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "create:asurine", + "create:crimsite", + "create:limestone", + "create:ochrum", + "create:scoria", + "create:scorchia", + "create:veridium" + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPattern.java b/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPattern.java index 9c1ce95ea..0296cc5b4 100644 --- a/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPattern.java +++ b/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPattern.java @@ -153,24 +153,6 @@ public class PaletteBlockPattern { return this; } -// @SafeVarargs -// private final PaletteBlockPattern blockTags(Tag.Named... tags) { -// blockTags = tags; -// return this; -// } -// -// @SafeVarargs -// private final PaletteBlockPattern itemTags(Tag.Named... tags) { -// itemTags = tags; -// return this; -// } -// -// private PaletteBlockPattern addRecipes( -// NonNullFunction, NonNullBiConsumer, RegistrateRecipeProvider>> func) { -// this.additionalRecipes = func; -// return this; -// } - private PaletteBlockPattern connectedTextures(Function factory) { this.ctFactory = Optional.of(factory); return this; 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 df0b9d11b..292641cf9 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java @@ -33,6 +33,7 @@ import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullSupplier; import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.tags.BlockTags; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; @@ -146,6 +147,10 @@ public class CreateRegistrate extends AbstractRegistrate { p.simpleBlock(c.get(), p.models() .cubeAll(c.getName(), p.modLoc(location))); }) + .tag(BlockTags.DRIPSTONE_REPLACEABLE) + .tag(BlockTags.AZALEA_ROOT_REPLACEABLE) + .tag(BlockTags.MOSS_REPLACEABLE) + .tag(BlockTags.LUSH_GROUND_REPLACEABLE) .item() .build(); return builder; From 77efe8750bb098a383c1ed591ea057dae49a66ed Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Wed, 29 Dec 2021 18:49:19 -0800 Subject: [PATCH 23/42] Add 0.4.0b to bug report yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 930143f56..2e20ab325 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.4.0b" - "0.4.0a" - "0.4.0" - "0.3.2g" From a12708b3369eb4353fb2fed096c303c2cd828d09 Mon Sep 17 00:00:00 2001 From: Aeiou <3160746+AeiouEnigma@users.noreply.github.com> Date: Thu, 30 Dec 2021 13:51:48 -0500 Subject: [PATCH 24/42] big brain fix c: --- .../components/structureMovement/ContraptionWorld.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java index 8e48ab7cd..6f8991549 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java @@ -55,6 +55,6 @@ public class ContraptionWorld extends WrappedWorld { @Override public int getMinBuildHeight() { - return - (int) contraption.bounds.getYsize() + 1; + return - (int) contraption.bounds.getYsize(); } } From 345b83ee905d8c1b6513fff565ef1f89f1c3e00e Mon Sep 17 00:00:00 2001 From: Aeiou <3160746+AeiouEnigma@users.noreply.github.com> Date: Thu, 30 Dec 2021 15:32:55 -0500 Subject: [PATCH 25/42] Improve comment clarity on height-related methods in ContraptionWorld and WrappedWorld --- .../components/structureMovement/ContraptionWorld.java | 3 ++- .../foundation/utility/worldWrappers/WrappedWorld.java | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java index 6f8991549..592b0a538 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java @@ -46,7 +46,8 @@ public class ContraptionWorld extends WrappedWorld { world.playLocalSound(x, y, z, p_184134_7_, p_184134_8_, p_184134_9_, p_184134_10_, p_184134_11_); } - // Calculate lazily to avoid issues on load when the bounds are yet to be determined. + // Ensure that we provide accurate information about ContraptionWorld height to mods (such as Starlight) which + // expect Levels to only have blocks located in chunks within their height range. @Override public int getHeight() { diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java index f9dfd055e..e27910d2e 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java @@ -200,7 +200,10 @@ public class WrappedWorld extends Level { return entityGetter; } - // Intentionally copied from LevelHeightAccessor. Lithium overrides these methods so we need to, too. + // Intentionally copied from LevelHeightAccessor. Workaround for issues caused when other mods (such as Lithium) + // override the vanilla implementations in ways which cause WrappedWorlds to return incorrect, default height info. + // WrappedWorld subclasses should implement their own getMinBuildHeight and getHeight overrides where they deviate + // from the defaults for their dimension. @Override public int getMaxBuildHeight() { From 8145014847f32dec353e392f5b28d79edce32e0c Mon Sep 17 00:00:00 2001 From: MRH0 Date: Fri, 31 Dec 2021 03:17:56 +0100 Subject: [PATCH 26/42] Disconnecting the Furnace Engine from AbstractFurnaceBlock Adds the abillity to register any block as a power source to the furnace engine. This will allow for more flexability and remove the need to implement AbstractFurnaceBlock and AbstractFurnaceBlockEntity. --- .../flywheel/engine/FurnaceEngineBlock.java | 2 +- .../engine/FurnaceEngineModifiers.java | 38 ++++++++++++++++++- .../engine/FurnaceEngineTileEntity.java | 7 ++-- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java index 04d95e7d2..09629ecf5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java @@ -33,7 +33,7 @@ public class FurnaceEngineBlock extends EngineBlock implements ITE, Float> blockModifiers = new HashMap<>(); + protected Map, Function> blockActivators = new HashMap<>(); public void register(IRegistryDelegate block, float modifier) { this.blockModifiers.put(block, modifier); } + + public void register(IRegistryDelegate block, float modifier, Function engineState) { + this.blockModifiers.put(block, modifier); + this.blockActivators.put(block, engineState); + } - public float getModifierOrDefault(BlockState state, float defaultValue) { + private float getModifierOrDefault(BlockState state, float defaultValue) { return blockModifiers.getOrDefault(state.getBlock().delegate, defaultValue); } + + private Function getEngineStateOrDefault(BlockState state, Function engineState) { + return blockActivators.getOrDefault(state.getBlock().delegate, engineState); + } public float getModifier(BlockState state) { return getModifierOrDefault(state, 1f); } + + public EngineState getEngineState(BlockState state) { + return getEngineStateOrDefault(state, s -> s.getBlock() instanceof AbstractFurnaceBlock && s.hasProperty(AbstractFurnaceBlock.LIT) ? (s.getValue(AbstractFurnaceBlock.LIT) ? EngineState.ACTIVE : EngineState.VALID) : EngineState.EMPTY).apply(state); + } public static void register() { INSTANCE.register(Blocks.BLAST_FURNACE.delegate, 2f); + //INSTANCE.register(Blocks.REDSTONE_LAMP.delegate, 1f, s -> s.getBlock() instanceof RedstoneLampBlock && s.hasProperty(RedstoneLampBlock.LIT) ? (s.getValue(RedstoneLampBlock.LIT) ? EngineState.ACTIVE : EngineState.VALID) : EngineState.EMPTY); + } + + public enum EngineState { + EMPTY, + VALID, + ACTIVE; + + public boolean isEngine() { + return this != EMPTY; + } + + public boolean isActive() { + return this == ACTIVE; + } + + public boolean isEmpty() { + return this == EMPTY; + } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java index 1851c5878..0dbe13f2e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java @@ -1,10 +1,10 @@ package com.simibubi.create.content.contraptions.components.flywheel.engine; import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineModifiers.EngineState; import com.simibubi.create.foundation.block.BlockStressValues; import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.AbstractFurnaceBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -22,11 +22,12 @@ public class FurnaceEngineTileEntity extends EngineTileEntity { public void updateFurnace() { BlockState state = level.getBlockState(EngineBlock.getBaseBlockPos(getBlockState(), worldPosition)); - if (!(state.getBlock() instanceof AbstractFurnaceBlock)) + EngineState engineState = FurnaceEngineModifiers.INSTANCE.getEngineState(state); + if (engineState.isEmpty()) return; float modifier = FurnaceEngineModifiers.INSTANCE.getModifier(state); - boolean active = state.hasProperty(AbstractFurnaceBlock.LIT) && state.getValue(AbstractFurnaceBlock.LIT); + boolean active = engineState.isActive(); float speed = active ? 16 * modifier : 0; float capacity = (float) (active ? BlockStressValues.getCapacity(AllBlocks.FURNACE_ENGINE.get()) From 6107b939a51eb9f8d54034fef5ba242251b8e91f Mon Sep 17 00:00:00 2001 From: MRH0 Date: Fri, 31 Dec 2021 16:29:22 +0100 Subject: [PATCH 27/42] cleanup --- .../flywheel/engine/FurnaceEngineBlock.java | 2 +- .../engine/FurnaceEngineModifiers.java | 26 ++++++++++++++----- .../engine/FurnaceEngineTileEntity.java | 4 +-- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java index 09629ecf5..5aae6789f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java @@ -33,7 +33,7 @@ public class FurnaceEngineBlock extends EngineBlock implements ITE(); + blockActivators = new HashMap<>(); + } - protected Map, Float> blockModifiers = new HashMap<>(); - protected Map, Function> blockActivators = new HashMap<>(); + private final Map, Float> blockModifiers; + private final Map, Function> blockActivators; public void register(IRegistryDelegate block, float modifier) { this.blockModifiers.put(block, modifier); @@ -40,12 +44,22 @@ public class FurnaceEngineModifiers { } public EngineState getEngineState(BlockState state) { - return getEngineStateOrDefault(state, s -> s.getBlock() instanceof AbstractFurnaceBlock && s.hasProperty(AbstractFurnaceBlock.LIT) ? (s.getValue(AbstractFurnaceBlock.LIT) ? EngineState.ACTIVE : EngineState.VALID) : EngineState.EMPTY).apply(state); + return getEngineStateOrDefault(state, + s -> s.getBlock() instanceof AbstractFurnaceBlock && s.hasProperty(AbstractFurnaceBlock.LIT) ? + (s.getValue(AbstractFurnaceBlock.LIT) ? EngineState.ACTIVE : EngineState.VALID) : EngineState.EMPTY).apply(state); } public static void register() { INSTANCE.register(Blocks.BLAST_FURNACE.delegate, 2f); - //INSTANCE.register(Blocks.REDSTONE_LAMP.delegate, 1f, s -> s.getBlock() instanceof RedstoneLampBlock && s.hasProperty(RedstoneLampBlock.LIT) ? (s.getValue(RedstoneLampBlock.LIT) ? EngineState.ACTIVE : EngineState.VALID) : EngineState.EMPTY); + + // Example: + // INSTANCE.register(Blocks.REDSTONE_LAMP.delegate, 1f, + // s -> s.getBlock() instanceof RedstoneLampBlock && s.hasProperty(RedstoneLampBlock.LIT) ? + // (s.getValue(RedstoneLampBlock.LIT) ? EngineState.ACTIVE : EngineState.VALID) : EngineState.EMPTY); + } + + public static FurnaceEngineModifiers get() { + return INSTANCE; } public enum EngineState { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java index 0dbe13f2e..b838b55e6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java @@ -22,11 +22,11 @@ public class FurnaceEngineTileEntity extends EngineTileEntity { public void updateFurnace() { BlockState state = level.getBlockState(EngineBlock.getBaseBlockPos(getBlockState(), worldPosition)); - EngineState engineState = FurnaceEngineModifiers.INSTANCE.getEngineState(state); + EngineState engineState = FurnaceEngineModifiers.get().getEngineState(state); if (engineState.isEmpty()) return; - float modifier = FurnaceEngineModifiers.INSTANCE.getModifier(state); + float modifier = FurnaceEngineModifiers.get().getModifier(state); boolean active = engineState.isActive(); float speed = active ? 16 * modifier : 0; float capacity = From 2f35b76f1a4bae9226cacb9dde62126d948668bd Mon Sep 17 00:00:00 2001 From: MRH0 Date: Fri, 31 Dec 2021 16:34:48 +0100 Subject: [PATCH 28/42] Update FurnaceEngineModifiers.java --- .../flywheel/engine/FurnaceEngineModifiers.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineModifiers.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineModifiers.java index 0354e1384..6f0c38502 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineModifiers.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineModifiers.java @@ -50,12 +50,14 @@ public class FurnaceEngineModifiers { } public static void register() { - INSTANCE.register(Blocks.BLAST_FURNACE.delegate, 2f); + get().register(Blocks.BLAST_FURNACE.delegate, 2f); - // Example: - // INSTANCE.register(Blocks.REDSTONE_LAMP.delegate, 1f, - // s -> s.getBlock() instanceof RedstoneLampBlock && s.hasProperty(RedstoneLampBlock.LIT) ? - // (s.getValue(RedstoneLampBlock.LIT) ? EngineState.ACTIVE : EngineState.VALID) : EngineState.EMPTY); + /* + Example: + INSTANCE.register(Blocks.REDSTONE_LAMP.delegate, 1f, + s -> s.getBlock() instanceof RedstoneLampBlock && s.hasProperty(RedstoneLampBlock.LIT) ? + (s.getValue(RedstoneLampBlock.LIT) ? EngineState.ACTIVE : EngineState.VALID) : EngineState.EMPTY); + */ } public static FurnaceEngineModifiers get() { From 67d2d12c9b5e9afb6e5641d4bc09aa2c3703b98c Mon Sep 17 00:00:00 2001 From: MRH0 Date: Fri, 31 Dec 2021 17:32:14 +0100 Subject: [PATCH 29/42] Update FurnaceEngineModifiers.java --- .../components/flywheel/engine/FurnaceEngineModifiers.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineModifiers.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineModifiers.java index 6f0c38502..016d22b77 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineModifiers.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineModifiers.java @@ -54,7 +54,7 @@ public class FurnaceEngineModifiers { /* Example: - INSTANCE.register(Blocks.REDSTONE_LAMP.delegate, 1f, + get().register(Blocks.REDSTONE_LAMP.delegate, 1f, s -> s.getBlock() instanceof RedstoneLampBlock && s.hasProperty(RedstoneLampBlock.LIT) ? (s.getValue(RedstoneLampBlock.LIT) ? EngineState.ACTIVE : EngineState.VALID) : EngineState.EMPTY); */ From cf3dac6ad07e586a8ebd2bc67d31fb4517d95d2a Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Mon, 3 Jan 2022 15:23:42 -0800 Subject: [PATCH 30/42] Prevent loading connected textures on server - Wrap ConnectedTextureBehaviour and AllSpriteShifts instances in Suppliers where necessary - Use client connection's instead of level's RecipeManager when finding recipes for JEI - Add missing override annotations in SymmetryEffectPacket - Organize imports --- .../java/com/simibubi/create/AllBlocks.java | 40 +++--- .../com/simibubi/create/AllSpriteShifts.java | 53 ++++--- src/main/java/com/simibubi/create/Create.java | 1 - .../simibubi/create/compat/jei/CreateJEI.java | 2 +- .../contraptions/base/flwdata/BeltType.java | 2 +- .../base/flwdata/RotatingType.java | 2 +- .../components/actors/flwdata/ActorType.java | 2 +- .../AbstractContraptionEntity.java | 1 - .../structureMovement/ContraptionLighter.java | 4 +- .../NonStationaryLighter.java | 4 +- .../structureMovement/glue/GlueModel.java | 2 +- .../pulley/AbstractPulleyInstance.java | 4 +- .../relays/belt/BeltTileEntity.java | 4 +- .../symmetry/SymmetryEffectPacket.java | 2 + .../toolbox/ItemReturnInvWrapper.java | 2 - .../curiosities/tools/BlueprintEntity.java | 3 +- .../logistics/block/flap/FlapType.java | 2 +- .../content/palettes/AllPaletteBlocks.java | 16 +-- .../content/palettes/PaletteBlockPartial.java | 4 +- .../content/palettes/PaletteBlockPattern.java | 5 +- .../foundation/data/BuilderTransformers.java | 22 +-- .../foundation/data/CreateRegistrate.java | 5 +- .../create/foundation/data/WindowGen.java | 20 +-- .../foundation/render/AllInstanceFormats.java | 2 +- .../foundation/render/SuperByteBuffer.java | 134 +++++++----------- .../utility/placement/IPlacementHelper.java | 1 + 26 files changed, 156 insertions(+), 183 deletions(-) diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 7e552b7c9..4f037a837 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -294,20 +294,20 @@ public class AllBlocks { public static final BlockEntry ANDESITE_ENCASED_SHAFT = REGISTRATE.block("andesite_encased_shaft", EncasedShaftBlock::andesite) - .transform(BuilderTransformers.encasedShaft("andesite", AllSpriteShifts.ANDESITE_CASING)) + .transform(BuilderTransformers.encasedShaft("andesite", () -> AllSpriteShifts.ANDESITE_CASING)) .transform(axeOrPickaxe()) .register(); public static final BlockEntry BRASS_ENCASED_SHAFT = REGISTRATE.block("brass_encased_shaft", EncasedShaftBlock::brass) - .transform(BuilderTransformers.encasedShaft("brass", AllSpriteShifts.BRASS_CASING)) + .transform(BuilderTransformers.encasedShaft("brass", () -> AllSpriteShifts.BRASS_CASING)) .transform(axeOrPickaxe()) .register(); public static final BlockEntry ANDESITE_ENCASED_COGWHEEL = REGISTRATE.block("andesite_encased_cogwheel", p -> EncasedCogwheelBlock.andesite(false, p)) - .transform(BuilderTransformers.encasedCogwheel("andesite", AllSpriteShifts.ANDESITE_CASING)) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(AllSpriteShifts.ANDESITE_CASING, + .transform(BuilderTransformers.encasedCogwheel("andesite", () -> AllSpriteShifts.ANDESITE_CASING)) + .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCogCTBehaviour(AllSpriteShifts.ANDESITE_CASING, Couple.create(AllSpriteShifts.ANDESITE_ENCASED_COGWHEEL_SIDE, AllSpriteShifts.ANDESITE_ENCASED_COGWHEEL_OTHERSIDE)))) .transform(axeOrPickaxe()) @@ -315,8 +315,8 @@ public class AllBlocks { public static final BlockEntry BRASS_ENCASED_COGWHEEL = REGISTRATE.block("brass_encased_cogwheel", p -> EncasedCogwheelBlock.brass(false, p)) - .transform(BuilderTransformers.encasedCogwheel("brass", AllSpriteShifts.BRASS_CASING)) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(AllSpriteShifts.BRASS_CASING, + .transform(BuilderTransformers.encasedCogwheel("brass", () -> AllSpriteShifts.BRASS_CASING)) + .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCogCTBehaviour(AllSpriteShifts.BRASS_CASING, Couple.create(AllSpriteShifts.BRASS_ENCASED_COGWHEEL_SIDE, AllSpriteShifts.BRASS_ENCASED_COGWHEEL_OTHERSIDE)))) .transform(axeOrPickaxe()) @@ -324,13 +324,13 @@ public class AllBlocks { public static final BlockEntry ANDESITE_ENCASED_LARGE_COGWHEEL = REGISTRATE.block("andesite_encased_large_cogwheel", p -> EncasedCogwheelBlock.andesite(true, p)) - .transform(BuilderTransformers.encasedLargeCogwheel("andesite", AllSpriteShifts.ANDESITE_CASING)) + .transform(BuilderTransformers.encasedLargeCogwheel("andesite", () -> AllSpriteShifts.ANDESITE_CASING)) .transform(axeOrPickaxe()) .register(); public static final BlockEntry BRASS_ENCASED_LARGE_COGWHEEL = REGISTRATE.block("brass_encased_large_cogwheel", p -> EncasedCogwheelBlock.brass(true, p)) - .transform(BuilderTransformers.encasedLargeCogwheel("brass", AllSpriteShifts.BRASS_CASING)) + .transform(BuilderTransformers.encasedLargeCogwheel("brass", () -> AllSpriteShifts.BRASS_CASING)) .transform(axeOrPickaxe()) .register(); @@ -339,7 +339,7 @@ public class AllBlocks { .properties(BlockBehaviour.Properties::noOcclusion) .transform(BlockStressDefaults.setNoImpact()) .transform(axeOrPickaxe()) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(AllSpriteShifts.ANDESITE_CASING))) + .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.ANDESITE_CASING))) .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.ANDESITE_CASING, (s, f) -> f.getAxis() == s.getValue(GearboxBlock.AXIS)))) .blockstate((c, p) -> axisBlock(c, p, $ -> AssetLookup.partialBaseModel(c, p), true)) @@ -668,7 +668,7 @@ public class AllBlocks { .properties(BlockBehaviour.Properties::noOcclusion) .transform(axeOrPickaxe()) .blockstate(BlockStateGen.encasedPipe()) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING))) + .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::new)) @@ -962,7 +962,7 @@ public class AllBlocks { .transform(axeOrPickaxe()) .tag(AllBlockTags.SAFE_NBT.tag) .blockstate(BlockStateGen.linearChassis()) - .onRegister(connectedTextures(new ChassisCTBehaviour())) + .onRegister(connectedTextures(ChassisCTBehaviour::new)) .lang("Linear Chassis") .simpleItem() .register(); @@ -973,7 +973,7 @@ public class AllBlocks { .transform(axeOrPickaxe()) .tag(AllBlockTags.SAFE_NBT.tag) .blockstate(BlockStateGen.linearChassis()) - .onRegister(connectedTextures(new ChassisCTBehaviour())) + .onRegister(connectedTextures(ChassisCTBehaviour::new)) .simpleItem() .register(); @@ -1146,27 +1146,27 @@ public class AllBlocks { }); public static final BlockEntry ANDESITE_CASING = REGISTRATE.block("andesite_casing", CasingBlock::new) - .transform(BuilderTransformers.casing(AllSpriteShifts.ANDESITE_CASING)) + .transform(BuilderTransformers.casing(() -> AllSpriteShifts.ANDESITE_CASING)) .register(); public static final BlockEntry BRASS_CASING = REGISTRATE.block("brass_casing", CasingBlock::new) - .transform(BuilderTransformers.casing(AllSpriteShifts.BRASS_CASING)) + .transform(BuilderTransformers.casing(() -> AllSpriteShifts.BRASS_CASING)) .register(); public static final BlockEntry COPPER_CASING = REGISTRATE.block("copper_casing", CasingBlock::new) - .transform(BuilderTransformers.casing(AllSpriteShifts.COPPER_CASING)) + .transform(BuilderTransformers.casing(() -> AllSpriteShifts.COPPER_CASING)) .properties(p -> p.sound(SoundType.COPPER)) .register(); public static final BlockEntry SHADOW_STEEL_CASING = REGISTRATE.block("shadow_steel_casing", CasingBlock::deprecated) - .transform(BuilderTransformers.casing(AllSpriteShifts.SHADOW_STEEL_CASING)) + .transform(BuilderTransformers.casing(() -> AllSpriteShifts.SHADOW_STEEL_CASING)) .lang("Shadow Casing") .register(); public static final BlockEntry REFINED_RADIANCE_CASING = REGISTRATE.block("refined_radiance_casing", CasingBlock::deprecated) - .transform(BuilderTransformers.casing(AllSpriteShifts.REFINED_RADIANCE_CASING)) + .transform(BuilderTransformers.casing(() -> AllSpriteShifts.REFINED_RADIANCE_CASING)) .properties(p -> p.lightLevel($ -> 12)) .lang("Radiant Casing") .register(); @@ -1178,7 +1178,7 @@ public class AllBlocks { .transform(axeOrPickaxe()) .blockstate(BlockStateGen.horizontalBlockProvider(true)) .transform(BlockStressDefaults.setImpact(2.0)) - .onRegister(CreateRegistrate.connectedTextures(new CrafterCTBehaviour())) + .onRegister(CreateRegistrate.connectedTextures(CrafterCTBehaviour::new)) .addLayer(() -> RenderType::cutoutMipped) .item() .transform(customItemModel()) @@ -1257,7 +1257,7 @@ public class AllBlocks { .modelFile(AssetLookup.standardModel(c, p)) .rotationY(s.getValue(ItemVaultBlock.HORIZONTAL_AXIS) == Axis.X ? 90 : 0) .build())) - .onRegister(connectedTextures(new ItemVaultCTBehaviour())) + .onRegister(connectedTextures(ItemVaultCTBehaviour::new)) .item(ItemVaultItem::new) .build() .register(); @@ -1312,7 +1312,7 @@ public class AllBlocks { public static final BlockEntry BRASS_TUNNEL = REGISTRATE.block("brass_tunnel", BrassTunnelBlock::new) .transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block"))) - .onRegister(connectedTextures(new BrassTunnelCTBehaviour())) + .onRegister(connectedTextures(BrassTunnelCTBehaviour::new)) .register(); public static final BlockEntry CONTENT_OBSERVER = diff --git a/src/main/java/com/simibubi/create/AllSpriteShifts.java b/src/main/java/com/simibubi/create/AllSpriteShifts.java index 4763976bf..5e4549fdf 100644 --- a/src/main/java/com/simibubi/create/AllSpriteShifts.java +++ b/src/main/java/com/simibubi/create/AllSpriteShifts.java @@ -10,7 +10,6 @@ import java.util.IdentityHashMap; import java.util.Map; import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import com.simibubi.create.foundation.block.connected.CTSpriteShifter; import com.simibubi.create.foundation.block.connected.CTSpriteShifter.CTType; import com.simibubi.create.foundation.block.render.SpriteShiftEntry; import com.simibubi.create.foundation.block.render.SpriteShifter; @@ -21,7 +20,7 @@ import net.minecraft.world.level.block.state.properties.WoodType; public class AllSpriteShifts { - static final Map WOODEN_WINDOWS = new IdentityHashMap<>(); + private static final Map WOODEN_WINDOWS = new IdentityHashMap<>(); public static final Map DYED_BELTS = new IdentityHashMap<>(), DYED_OFFSET_BELTS = new IdentityHashMap<>(), DYED_DIAGONAL_BELTS = new IdentityHashMap<>(); @@ -33,22 +32,22 @@ public class AllSpriteShifts { ORNATE_IRON_WINDOW = vertical("palettes/ornate_iron_window"); public static final CTSpriteShiftEntry CRAFTER_FRONT = getCT(CTType.OMNIDIRECTIONAL, "crafter_top", "brass_casing"), - CRAFTER_SIDE = getCT(CTType.VERTICAL, "crafter_side"), - CRAFTER_OTHERSIDE = getCT(CTType.HORIZONTAL, "crafter_side"), - ANDESITE_ENCASED_COGWHEEL_SIDE = getCT(CTType.VERTICAL, "andesite_encased_cogwheel_side"), - ANDESITE_ENCASED_COGWHEEL_OTHERSIDE = getCT(CTType.HORIZONTAL, "andesite_encased_cogwheel_side"), - BRASS_ENCASED_COGWHEEL_SIDE = getCT(CTType.VERTICAL, "brass_encased_cogwheel_side"), - BRASS_ENCASED_COGWHEEL_OTHERSIDE = getCT(CTType.HORIZONTAL, "brass_encased_cogwheel_side"); + CRAFTER_SIDE = vertical("crafter_side"), + CRAFTER_OTHERSIDE = horizontal("crafter_side"), + ANDESITE_ENCASED_COGWHEEL_SIDE = vertical("andesite_encased_cogwheel_side"), + ANDESITE_ENCASED_COGWHEEL_OTHERSIDE = horizontal("andesite_encased_cogwheel_side"), + BRASS_ENCASED_COGWHEEL_SIDE = vertical("brass_encased_cogwheel_side"), + BRASS_ENCASED_COGWHEEL_OTHERSIDE = horizontal("brass_encased_cogwheel_side"); public static final CTSpriteShiftEntry ANDESITE_CASING = omni("andesite_casing"), BRASS_CASING = omni("brass_casing"), COPPER_CASING = omni("copper_casing"), SHADOW_STEEL_CASING = omni("shadow_steel_casing"), REFINED_RADIANCE_CASING = omni("refined_radiance_casing"), CREATIVE_CASING = getCT(CTType.CROSS, "creative_casing"); - public static final CTSpriteShiftEntry CHASSIS_SIDE = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_side"), - SECONDARY_CHASSIS_SIDE = getCT(CTType.OMNIDIRECTIONAL, "secondary_linear_chassis_side"), - CHASSIS = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end"), - CHASSIS_STICKY = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end_sticky"); + public static final CTSpriteShiftEntry CHASSIS_SIDE = omni("linear_chassis_side"), + SECONDARY_CHASSIS_SIDE = omni("secondary_linear_chassis_side"), + CHASSIS = omni("linear_chassis_end"), + CHASSIS_STICKY = omni("linear_chassis_end_sticky"); public static final CTSpriteShiftEntry BRASS_TUNNEL_TOP = vertical("brass_tunnel_top"), FLUID_TANK = getCT(CTType.CROSS, "fluid_tank"), @@ -67,14 +66,6 @@ public class AllSpriteShifts { populateMaps(); } - // - - public static CTSpriteShiftEntry getWoodenWindow(WoodType woodType) { - return WOODEN_WINDOWS.get(woodType); - } - - // - private static void populateMaps() { WoodType[] supportedWoodTypes = new WoodType[] { WoodType.OAK, WoodType.SPRUCE, WoodType.BIRCH, WoodType.ACACIA, WoodType.JUNGLE, WoodType.DARK_OAK, WoodType.CRIMSON, WoodType.WARPED }; @@ -90,24 +81,30 @@ public class AllSpriteShifts { } } - static Couple vault(String name) { + private static Couple vault(String name) { final String prefixed = "vault_" + name; return Couple - .createWithContext(b -> getCT(CTSpriteShifter.CTType.CROSS, prefixed, b ? prefixed : prefixed + "_large")); + .createWithContext(b -> getCT(CTType.CROSS, prefixed, b ? prefixed : prefixed + "_large")); } // - static CTSpriteShiftEntry omni(String name) { + private static CTSpriteShiftEntry omni(String name) { return getCT(OMNIDIRECTIONAL, name); } - static CTSpriteShiftEntry vertical(String name) { - return getCT(VERTICAL, name); - } - - static CTSpriteShiftEntry horizontal(String name) { + private static CTSpriteShiftEntry horizontal(String name) { return getCT(HORIZONTAL, name); } + private static CTSpriteShiftEntry vertical(String name) { + return getCT(VERTICAL, name); + } + + // + + public static CTSpriteShiftEntry getWoodenWindow(WoodType woodType) { + return WOODEN_WINDOWS.get(woodType); + } + } diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 5a616dba1..e1f6cfd7f 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -30,7 +30,6 @@ 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.ShippedResourcePacks; import com.simibubi.create.foundation.worldgen.AllWorldFeatures; import com.tterrag.registrate.util.NonNullLazyValue; 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 58abac194..6cea78d56 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -369,7 +369,7 @@ public class CreateJEI implements IModPlugin { } public static List> findRecipes(Predicate> predicate) { - return Minecraft.getInstance().level.getRecipeManager() + return Minecraft.getInstance().getConnection().getRecipeManager() .getRecipes() .stream() .filter(predicate) diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java index 2a1e7ae85..b7ab909ce 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/BeltType.java @@ -3,8 +3,8 @@ package com.simibubi.create.content.contraptions.base.flwdata; import com.jozufozu.flywheel.api.struct.Batched; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; -import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; +import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.core.model.ModelTransformer; import com.jozufozu.flywheel.util.RenderMath; import com.mojang.math.Quaternion; diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java index 84e8f5d9a..bef2e4722 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/flwdata/RotatingType.java @@ -3,8 +3,8 @@ package com.simibubi.create.content.contraptions.base.flwdata; import com.jozufozu.flywheel.api.struct.Batched; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; -import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; +import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.core.model.ModelTransformer; import com.jozufozu.flywheel.util.RenderMath; import com.mojang.math.Vector3f; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java index ad55be8cc..edcb0d54d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/flwdata/ActorType.java @@ -3,8 +3,8 @@ package com.simibubi.create.content.contraptions.components.actors.flwdata; import com.jozufozu.flywheel.api.struct.Batched; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; -import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; +import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.core.model.ModelTransformer; import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; 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 e5e405999..119a41f73 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 @@ -2,7 +2,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import java.io.IOException; import java.util.IdentityHashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java index 76ac67287..f55daf85c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java @@ -1,12 +1,12 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import com.jozufozu.flywheel.light.GPULightVolume; -import com.jozufozu.flywheel.util.box.GridAlignedBB; -import com.jozufozu.flywheel.util.box.ImmutableBox; import com.jozufozu.flywheel.light.LightListener; import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.LightUpdater; import com.jozufozu.flywheel.light.ListenerStatus; +import com.jozufozu.flywheel.util.box.GridAlignedBB; +import com.jozufozu.flywheel.util.box.ImmutableBox; import net.minecraft.world.level.LightLayer; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java index 1e0cd0d8a..1249efaa8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java @@ -1,9 +1,9 @@ package com.simibubi.create.content.contraptions.components.structureMovement; -import com.jozufozu.flywheel.util.box.GridAlignedBB; -import com.jozufozu.flywheel.util.box.ImmutableBox; import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.MovingListener; +import com.jozufozu.flywheel.util.box.GridAlignedBB; +import com.jozufozu.flywheel.util.box.ImmutableBox; import com.simibubi.create.foundation.config.AllConfigs; public class NonStationaryLighter extends ContraptionLighter implements MovingListener { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java index 0c8cd46df..0c279a640 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueModel.java @@ -1,9 +1,9 @@ package com.simibubi.create.content.contraptions.components.structureMovement.glue; +import com.jozufozu.flywheel.api.vertex.VertexList; import com.jozufozu.flywheel.core.Formats; import com.jozufozu.flywheel.core.model.Model; import com.jozufozu.flywheel.core.vertex.PosTexNormalWriterUnsafe; -import com.jozufozu.flywheel.api.vertex.VertexList; import com.mojang.blaze3d.platform.MemoryTracker; import com.simibubi.create.AllStitchedTextures; import com.simibubi.create.foundation.utility.VecHelper; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java index f4c600ebf..2cc6fd82f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java @@ -7,13 +7,13 @@ import com.jozufozu.flywheel.core.instancing.ConditionalInstance; import com.jozufozu.flywheel.core.instancing.GroupInstance; import com.jozufozu.flywheel.core.instancing.SelectInstance; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; -import com.jozufozu.flywheel.util.box.GridAlignedBB; -import com.jozufozu.flywheel.util.box.ImmutableBox; import com.jozufozu.flywheel.light.LightPacking; import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.LightUpdater; import com.jozufozu.flywheel.light.LightVolume; import com.jozufozu.flywheel.light.MovingListener; +import com.jozufozu.flywheel.util.box.GridAlignedBB; +import com.jozufozu.flywheel.util.box.ImmutableBox; import com.mojang.math.Vector3f; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index 75a669d27..d540627ad 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -13,12 +13,12 @@ import java.util.Optional; import java.util.function.Function; import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; -import com.jozufozu.flywheel.util.box.GridAlignedBB; -import com.jozufozu.flywheel.util.box.ImmutableBox; import com.jozufozu.flywheel.light.LightListener; import com.jozufozu.flywheel.light.LightProvider; import com.jozufozu.flywheel.light.LightUpdater; import com.jozufozu.flywheel.light.ListenerStatus; +import com.jozufozu.flywheel.util.box.GridAlignedBB; +import com.jozufozu.flywheel.util.box.ImmutableBox; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileEntity; diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryEffectPacket.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryEffectPacket.java index 2f084fca5..9ddd7f21c 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryEffectPacket.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryEffectPacket.java @@ -33,6 +33,7 @@ public class SymmetryEffectPacket extends SimplePacketBase { } } + @Override public void write(FriendlyByteBuf buffer) { buffer.writeBlockPos(mirror); buffer.writeInt(positions.size()); @@ -41,6 +42,7 @@ public class SymmetryEffectPacket extends SimplePacketBase { } } + @Override public void handle(Supplier ctx) { ctx.get().enqueueWork(() -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { if (Minecraft.getInstance().player.position().distanceTo(Vec3.atLowerCornerOf(mirror)) > 100) diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ItemReturnInvWrapper.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ItemReturnInvWrapper.java index e70e7a36c..24346ff20 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ItemReturnInvWrapper.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ItemReturnInvWrapper.java @@ -1,9 +1,7 @@ package com.simibubi.create.content.curiosities.toolbox; -import net.minecraft.world.Container; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.wrapper.InvWrapper; import net.minecraftforge.items.wrapper.PlayerMainInvWrapper; /** diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java index b45ff29da..43f97c05b 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java @@ -7,8 +7,6 @@ import java.util.Optional; import javax.annotation.Nullable; -import net.minecraft.nbt.Tag; - import org.apache.commons.lang3.Validate; import com.simibubi.create.AllEntityTypes; @@ -28,6 +26,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TranslatableComponent; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java index 5e1696ad9..1745d78db 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/flap/FlapType.java @@ -3,8 +3,8 @@ package com.simibubi.create.content.logistics.block.flap; import com.jozufozu.flywheel.api.struct.Batched; import com.jozufozu.flywheel.api.struct.Instanced; import com.jozufozu.flywheel.api.struct.StructWriter; -import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; +import com.jozufozu.flywheel.core.layout.BufferLayout; import com.jozufozu.flywheel.core.model.ModelTransformer; import com.simibubi.create.foundation.render.AllInstanceFormats; import com.simibubi.create.foundation.render.AllProgramSpecs; diff --git a/src/main/java/com/simibubi/create/content/palettes/AllPaletteBlocks.java b/src/main/java/com/simibubi/create/content/palettes/AllPaletteBlocks.java index 9adfc2ff9..84c97a77d 100644 --- a/src/main/java/com/simibubi/create/content/palettes/AllPaletteBlocks.java +++ b/src/main/java/com/simibubi/create/content/palettes/AllPaletteBlocks.java @@ -47,22 +47,22 @@ public class AllPaletteBlocks { .register(); public static final BlockEntry FRAMED_GLASS = - framedGlass("framed_glass", new StandardCTBehaviour(AllSpriteShifts.FRAMED_GLASS)), + framedGlass("framed_glass", () -> new StandardCTBehaviour(AllSpriteShifts.FRAMED_GLASS)), HORIZONTAL_FRAMED_GLASS = framedGlass("horizontal_framed_glass", - new HorizontalCTBehaviour(AllSpriteShifts.HORIZONTAL_FRAMED_GLASS, AllSpriteShifts.FRAMED_GLASS)), + () -> new HorizontalCTBehaviour(AllSpriteShifts.HORIZONTAL_FRAMED_GLASS, AllSpriteShifts.FRAMED_GLASS)), VERTICAL_FRAMED_GLASS = - framedGlass("vertical_framed_glass", new HorizontalCTBehaviour(AllSpriteShifts.VERTICAL_FRAMED_GLASS)); + framedGlass("vertical_framed_glass", () -> new HorizontalCTBehaviour(AllSpriteShifts.VERTICAL_FRAMED_GLASS)); public static final BlockEntry TILED_GLASS_PANE = WindowGen.standardGlassPane("tiled_glass", TILED_GLASS, Create.asResource("block/palettes/tiled_glass"), new ResourceLocation("block/glass_pane_top"), () -> RenderType::cutoutMipped); public static final BlockEntry FRAMED_GLASS_PANE = - framedGlassPane("framed_glass", FRAMED_GLASS, AllSpriteShifts.FRAMED_GLASS), + framedGlassPane("framed_glass", FRAMED_GLASS, () -> AllSpriteShifts.FRAMED_GLASS), HORIZONTAL_FRAMED_GLASS_PANE = framedGlassPane("horizontal_framed_glass", HORIZONTAL_FRAMED_GLASS, - AllSpriteShifts.HORIZONTAL_FRAMED_GLASS), + () -> AllSpriteShifts.HORIZONTAL_FRAMED_GLASS), VERTICAL_FRAMED_GLASS_PANE = - framedGlassPane("vertical_framed_glass", VERTICAL_FRAMED_GLASS, AllSpriteShifts.VERTICAL_FRAMED_GLASS); + framedGlassPane("vertical_framed_glass", VERTICAL_FRAMED_GLASS, () -> AllSpriteShifts.VERTICAL_FRAMED_GLASS); public static final BlockEntry OAK_WINDOW = woodenWindowBlock(WoodType.OAK, Blocks.OAK_PLANKS), SPRUCE_WINDOW = woodenWindowBlock(WoodType.SPRUCE, Blocks.SPRUCE_PLANKS), @@ -73,7 +73,7 @@ public class AllPaletteBlocks { CRIMSON_WINDOW = woodenWindowBlock(WoodType.CRIMSON, Blocks.CRIMSON_PLANKS), WARPED_WINDOW = woodenWindowBlock(WoodType.WARPED, Blocks.WARPED_PLANKS), ORNATE_IRON_WINDOW = customWindowBlock("ornate_iron_window", AllItems.ANDESITE_ALLOY, - AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::cutoutMipped); + () -> AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::cutoutMipped); public static final BlockEntry OAK_WINDOW_PANE = woodenWindowPane(WoodType.OAK, OAK_WINDOW), @@ -85,7 +85,7 @@ public class AllPaletteBlocks { CRIMSON_WINDOW_PANE = woodenWindowPane(WoodType.CRIMSON, CRIMSON_WINDOW), WARPED_WINDOW_PANE = woodenWindowPane(WoodType.WARPED, WARPED_WINDOW), ORNATE_IRON_WINDOW_PANE = customWindowPane("ornate_iron_window", ORNATE_IRON_WINDOW, - AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::cutoutMipped); + () -> AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::cutoutMipped); static { AllPaletteStoneTypes.register(REGISTRATE); diff --git a/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPartial.java b/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPartial.java index 1524bf620..835a07c36 100644 --- a/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPartial.java +++ b/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPartial.java @@ -1,5 +1,7 @@ package com.simibubi.create.content.palettes; +import static com.simibubi.create.AllTags.pickaxeOnly; + import java.util.Arrays; import java.util.function.Supplier; @@ -31,8 +33,6 @@ import net.minecraft.world.level.block.WallBlock; import net.minecraft.world.level.block.state.BlockBehaviour.Properties; import net.minecraftforge.client.model.generators.ModelFile; -import static com.simibubi.create.AllTags.pickaxeOnly; - public abstract class PaletteBlockPartial { public static final PaletteBlockPartial STAIR = new Stairs(); diff --git a/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPattern.java b/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPattern.java index 0296cc5b4..64a483349 100644 --- a/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPattern.java +++ b/src/main/java/com/simibubi/create/content/palettes/PaletteBlockPattern.java @@ -8,6 +8,7 @@ import static com.simibubi.create.content.palettes.PaletteBlockPattern.PatternNa import java.util.Optional; import java.util.function.Function; +import java.util.function.Supplier; import com.simibubi.create.Create; import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; @@ -132,8 +133,8 @@ public class PaletteBlockPattern { .accept(c, p); } - public Optional createCTBehaviour(String variant) { - return ctFactory.map(d -> d.apply(variant)); + public Optional> createCTBehaviour(String variant) { + return ctFactory.map(d -> () -> d.apply(variant)); } // Builder 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 8b4b649c3..b5a42c54a 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -51,10 +51,10 @@ import net.minecraftforge.client.model.generators.ModelFile; public class BuilderTransformers { public static NonNullUnaryOperator> encasedShaft(String casing, - CTSpriteShiftEntry casingShift) { + Supplier casingShift) { return builder -> encasedBase(builder, () -> AllBlocks.SHAFT.get()) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(casingShift))) - .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift, + .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(casingShift.get()))) + .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift.get(), (s, f) -> f.getAxis() != s.getValue(EncasedShaftBlock.AXIS)))) .blockstate((c, p) -> axisBlock(c, p, blockState -> p.models() .getExistingFile(p.modLoc("block/encased_shaft/block_" + casing)), true)) @@ -64,24 +64,24 @@ public class BuilderTransformers { } public static NonNullUnaryOperator> encasedCogwheel( - String casing, CTSpriteShiftEntry casingShift) { + String casing, Supplier casingShift) { return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.COGWHEEL.get(), false); } public static NonNullUnaryOperator> encasedLargeCogwheel( - String casing, CTSpriteShiftEntry casingShift) { + String casing, Supplier casingShift) { return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.LARGE_COGWHEEL.get(), true) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(casingShift))); + .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCogCTBehaviour(casingShift.get()))); } private static BlockBuilder encasedCogwheelBase(BlockBuilder b, - String casing, CTSpriteShiftEntry casingShift, Supplier drop, boolean large) { + String casing, Supplier casingShift, Supplier drop, boolean large) { String encasedSuffix = "_encased_cogwheel_side" + (large ? "_connected" : ""); String blockFolder = large ? "encased_large_cogwheel" : "encased_cogwheel"; String wood = casing.equals("brass") ? "dark_oak" : "spruce"; return encasedBase(b, drop) .addLayer(() -> RenderType::cutoutMipped) - .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift, + .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift.get(), (s, f) -> f.getAxis() == s.getValue(EncasedCogwheelBlock.AXIS) && !s.getValue(f.getAxisDirection() == AxisDirection.POSITIVE ? EncasedCogwheelBlock.TOP_SHAFT : EncasedCogwheelBlock.BOTTOM_SHAFT)))) @@ -138,12 +138,12 @@ public class BuilderTransformers { } public static NonNullUnaryOperator> casing( - CTSpriteShiftEntry ct) { + Supplier ct) { return b -> b.initialProperties(SharedProperties::stone) .transform(axeOrPickaxe()) .blockstate((c, p) -> p.simpleBlock(c.get())) - .onRegister(connectedTextures(new EncasedCTBehaviour(ct))) - .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, ct))) + .onRegister(connectedTextures(() -> new EncasedCTBehaviour(ct.get()))) + .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, ct.get()))) .simpleItem(); } 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 292641cf9..f69cee7ce 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java @@ -189,7 +189,7 @@ public class CreateRegistrate extends AbstractRegistrate { /* Util */ - public static NonNullConsumer connectedTextures(ConnectedTextureBehaviour behavior) { + public static NonNullConsumer connectedTextures(Supplier behavior) { return entry -> onClient(() -> () -> registerCTBehviour(entry, behavior)); } @@ -217,7 +217,8 @@ public class CreateRegistrate extends AbstractRegistrate { } @OnlyIn(Dist.CLIENT) - private static void registerCTBehviour(Block entry, ConnectedTextureBehaviour behavior) { + private static void registerCTBehviour(Block entry, Supplier behaviorSupplier) { + ConnectedTextureBehaviour behavior = behaviorSupplier.get(); CreateClient.MODEL_SWAPPER.getCustomBlockModels() .register(entry.delegate, model -> new CTModel(model, behavior)); } diff --git a/src/main/java/com/simibubi/create/foundation/data/WindowGen.java b/src/main/java/com/simibubi/create/foundation/data/WindowGen.java index 2c5a4626b..86df5b333 100644 --- a/src/main/java/com/simibubi/create/foundation/data/WindowGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/WindowGen.java @@ -65,7 +65,7 @@ public class WindowGen { } public static BlockEntry customWindowBlock(String name, Supplier ingredient, - CTSpriteShiftEntry ct, Supplier> renderType) { + Supplier ct, Supplier> renderType) { NonNullFunction end_texture = n -> Create.asResource(palettesDir() + name + "_end"); NonNullFunction side_texture = n -> Create.asResource(palettesDir() + n); return windowBlock(name, ingredient, ct, renderType, end_texture, side_texture); @@ -78,15 +78,15 @@ public class WindowGen { NonNullFunction end_texture = $ -> new ResourceLocation("block/" + woodName + "_planks"); NonNullFunction side_texture = n -> Create.asResource(palettesDir() + n); - return windowBlock(name, () -> planksBlock, AllSpriteShifts.getWoodenWindow(woodType), renderType, end_texture, + return windowBlock(name, () -> planksBlock, () -> AllSpriteShifts.getWoodenWindow(woodType), renderType, end_texture, side_texture); } public static BlockEntry windowBlock(String name, Supplier ingredient, - CTSpriteShiftEntry ct, Supplier> renderType, + Supplier ct, Supplier> renderType, NonNullFunction endTexture, NonNullFunction sideTexture) { return REGISTRATE.block(name, WindowBlock::new) - .onRegister(connectedTextures(new HorizontalCTBehaviour(ct))) + .onRegister(connectedTextures(() -> new HorizontalCTBehaviour(ct.get()))) .addLayer(renderType) .recipe((c, p) -> ShapedRecipeBuilder.shaped(c.get(), 2) .pattern(" # ") @@ -105,7 +105,7 @@ public class WindowGen { .register(); } - public static BlockEntry framedGlass(String name, ConnectedTextureBehaviour behaviour) { + public static BlockEntry framedGlass(String name, Supplier behaviour) { return REGISTRATE.block(name, ConnectedGlassBlock::new) .onRegister(connectedTextures(behaviour)) .addLayer(() -> RenderType::translucent) @@ -124,7 +124,7 @@ public class WindowGen { } public static BlockEntry framedGlassPane(String name, Supplier parent, - CTSpriteShiftEntry ctshift) { + Supplier ctshift) { ResourceLocation sideTexture = Create.asResource(palettesDir() + "framed_glass"); ResourceLocation itemSideTexture = Create.asResource(palettesDir() + name); ResourceLocation topTexture = Create.asResource(palettesDir() + "framed_glass_pane_top"); @@ -133,7 +133,7 @@ public class WindowGen { } public static BlockEntry customWindowPane(String name, Supplier parent, - CTSpriteShiftEntry ctshift, Supplier> renderType) { + Supplier ctshift, Supplier> renderType) { ResourceLocation topTexture = Create.asResource(palettesDir() + name + "_pane_top"); ResourceLocation sideTexture = Create.asResource(palettesDir() + name); return connectedGlassPane(name, parent, ctshift, sideTexture, sideTexture, topTexture, renderType); @@ -150,7 +150,7 @@ public class WindowGen { String name = woodName + "_window"; ResourceLocation topTexture = new ResourceLocation("block/" + woodName + "_planks"); ResourceLocation sideTexture = Create.asResource(palettesDir() + name); - return connectedGlassPane(name, parent, AllSpriteShifts.getWoodenWindow(woodType), sideTexture, sideTexture, + return connectedGlassPane(name, parent, () -> AllSpriteShifts.getWoodenWindow(woodType), sideTexture, sideTexture, topTexture, renderType); } @@ -163,10 +163,10 @@ public class WindowGen { } private static BlockEntry connectedGlassPane(String name, Supplier parent, - CTSpriteShiftEntry ctshift, ResourceLocation sideTexture, ResourceLocation itemSideTexture, + Supplier ctshift, ResourceLocation sideTexture, ResourceLocation itemSideTexture, ResourceLocation topTexture, Supplier> renderType) { NonNullConsumer connectedTextures = - connectedTextures(new GlassPaneCTBehaviour(ctshift)); + connectedTextures(() -> new GlassPaneCTBehaviour(ctshift.get())); String CGPparents = "block/connected_glass_pane/"; String prefix = name + "_pane_"; diff --git a/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java b/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java index 95a76206c..db8dddb0a 100644 --- a/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java +++ b/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java @@ -1,7 +1,7 @@ package com.simibubi.create.foundation.render; -import com.jozufozu.flywheel.core.layout.CommonItems; import com.jozufozu.flywheel.core.layout.BufferLayout; +import com.jozufozu.flywheel.core.layout.CommonItems; public class AllInstanceFormats { diff --git a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java index 1f2863bd2..58c03710d 100644 --- a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java +++ b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java @@ -40,7 +40,6 @@ public class SuperByteBuffer implements Scale, Translate, Translate, Translate, Translate, Translate, Translate, Translate, Translate, Translate, Translate, Translate LevelRenderer.getLightColor(world, pos)); } - @Override - public SuperByteBuffer scale(float factorX, float factorY, float factorZ) { - transforms.scale(factorX, factorY, factorZ); - return this; - } - - @Override - public SuperByteBuffer pushPose() { - transforms.pushPose(); - return this; - } - - @Override - public SuperByteBuffer popPose() { - transforms.popPose(); - return this; - } - @FunctionalInterface public interface SpriteShiftFunc { void shift(VertexConsumer builder, float u, float v); diff --git a/src/main/java/com/simibubi/create/foundation/utility/placement/IPlacementHelper.java b/src/main/java/com/simibubi/create/foundation/utility/placement/IPlacementHelper.java index 7e8a20b55..914189e25 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/placement/IPlacementHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/placement/IPlacementHelper.java @@ -7,6 +7,7 @@ import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; +import com.jozufozu.flywheel.repack.joml.Vector3i; import com.simibubi.create.CreateClient; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Pair; From c8ba7b88cc6e9b8ec4c6055daa90f011a202cdef Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Mon, 3 Jan 2022 23:52:36 -0800 Subject: [PATCH 31/42] Update to Flywheel 0.5.1 --- gradle.properties | 2 +- .../com/simibubi/create/AllEntityTypes.java | 2 +- .../com/simibubi/create/AllTileEntities.java | 54 +++++++++---------- .../base/BackHalfShaftInstance.java | 2 +- .../contraptions/base/KineticTileEntity.java | 3 +- .../base/KineticTileInstance.java | 10 ++-- .../components/actors/DrillInstance.java | 2 +- .../clock/CuckooClockTileEntity.java | 5 -- .../crafter/MechanicalCrafterTileEntity.java | 5 -- .../components/crank/HandCrankInstance.java | 4 +- .../components/crank/HandCrankTileEntity.java | 5 -- .../components/deployer/DeployerInstance.java | 8 +-- .../deployer/DeployerTileEntity.java | 5 -- .../components/fan/FanInstance.java | 2 +- .../components/flywheel/FlyWheelInstance.java | 8 +-- .../flywheel/engine/EngineInstance.java | 4 +- .../flywheel/engine/EngineTileEntity.java | 3 +- .../millstone/MillStoneCogInstance.java | 2 +- .../components/mixer/MixerInstance.java | 6 +-- .../components/press/PressInstance.java | 4 +- .../components/saw/SawInstance.java | 2 +- .../components/saw/SawTileEntity.java | 5 -- .../bearing/BearingInstance.java | 4 +- .../bearing/ClockworkBearingTileEntity.java | 5 -- .../bearing/MechanicalBearingTileEntity.java | 5 -- .../chassis/StickerInstance.java | 10 ++-- .../chassis/StickerTileEntity.java | 3 +- .../gantry/GantryCarriageInstance.java | 6 +-- .../gantry/GantryCarriageTileEntity.java | 5 -- .../structureMovement/glue/GlueInstance.java | 4 +- .../glue/SuperGlueEntity.java | 3 +- .../pulley/AbstractPulleyInstance.java | 4 +- .../pulley/HosePulleyInstance.java | 2 +- .../pulley/PulleyTileEntity.java | 5 -- .../pulley/RopePulleyInstance.java | 4 +- .../render/ContraptionInstanceManager.java | 4 +- .../render/ContraptionRenderDispatcher.java | 2 +- .../render/FlwContraption.java | 3 +- .../contraptions/fluids/PumpCogInstance.java | 2 +- .../contraptions/fluids/PumpTileEntity.java | 5 -- .../fluids/actors/HosePulleyTileEntity.java | 5 -- .../fluids/pipes/FluidValveInstance.java | 4 +- .../fluids/pipes/FluidValveTileEntity.java | 5 -- .../processing/BasinOperatingTileEntity.java | 5 -- .../advanced/SpeedControllerTileEntity.java | 5 -- .../relays/belt/BeltInstance.java | 8 +-- .../relays/belt/BeltTileEntity.java | 1 - .../BracketedKineticTileInstance.java | 12 ++--- .../relays/encased/EncasedCogInstance.java | 4 +- .../relays/encased/SplitShaftInstance.java | 2 +- .../relays/gauge/GaugeInstance.java | 6 +-- .../relays/gauge/GaugeTileEntity.java | 5 -- .../relays/gearbox/GearboxInstance.java | 6 +-- .../armor/CopperBacktankTileEntity.java | 5 -- .../curiosities/toolbox/ToolBoxInstance.java | 14 ++--- .../toolbox/ToolboxTileEntity.java | 3 +- .../belts/tunnel/BeltTunnelInstance.java | 10 ++-- .../belts/tunnel/BeltTunnelTileEntity.java | 8 +-- .../block/depot/EjectorInstance.java | 4 +- .../block/depot/EjectorTileEntity.java | 5 -- .../block/diodes/BrassDiodeInstance.java | 12 ++--- .../block/diodes/BrassDiodeTileEntity.java | 3 +- .../block/funnel/FunnelInstance.java | 8 +-- .../block/funnel/FunnelTileEntity.java | 8 +-- .../block/mechanicalArm/ArmInstance.java | 10 ++-- .../block/mechanicalArm/ArmTileEntity.java | 5 -- .../block/redstone/AnalogLeverInstance.java | 10 ++-- .../block/redstone/AnalogLeverTileEntity.java | 3 +- .../block/SchematicannonInstance.java | 10 ++-- .../block/SchematicannonTileEntity.java | 8 +-- .../foundation/data/CreateEntityBuilder.java | 30 ++++++++--- .../data/CreateTileEntityBuilder.java | 30 ++++++++--- .../render/RainbowDebugStateProvider.java | 4 +- .../render/TileEntityRenderHelper.java | 4 +- src/main/resources/META-INF/mods.toml | 2 +- 75 files changed, 199 insertions(+), 284 deletions(-) diff --git a/gradle.properties b/gradle.properties index 738fb9ba8..9cb801f80 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,7 @@ parchment_version = 2021.12.19 # dependency versions registrate_version = MC1.18-1.0.21 -flywheel_version = 1.18-0.5.0.33 +flywheel_version = 1.18-0.5.1.38 jei_minecraft_version = 1.18 jei_version = 9.0.0.40 diff --git a/src/main/java/com/simibubi/create/AllEntityTypes.java b/src/main/java/com/simibubi/create/AllEntityTypes.java index a79b2682e..85e64ed4e 100644 --- a/src/main/java/com/simibubi/create/AllEntityTypes.java +++ b/src/main/java/com/simibubi/create/AllEntityTypes.java @@ -40,7 +40,7 @@ public class AllEntityTypes { public static final EntityEntry SUPER_GLUE = register("super_glue", SuperGlueEntity::new, () -> SuperGlueRenderer::new, MobCategory.MISC, 10, - Integer.MAX_VALUE, false, true, SuperGlueEntity::build).instance(() -> GlueInstance::new) + Integer.MAX_VALUE, false, true, SuperGlueEntity::build).instance(() -> GlueInstance::new, false) .register(); public static final EntityEntry CRAFTING_BLUEPRINT = diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 7e8479c86..6bdae2758 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -191,56 +191,56 @@ public class AllTileEntities { // Kinetics public static final BlockEntityEntry BRACKETED_KINETIC = Create.registrate() .tileEntity("simple_kinetic", BracketedKineticTileEntity::new) - .instance(() -> BracketedKineticTileInstance::new) + .instance(() -> BracketedKineticTileInstance::new, false) .validBlocks(AllBlocks.SHAFT, AllBlocks.COGWHEEL, AllBlocks.LARGE_COGWHEEL) .renderer(() -> BracketedKineticTileRenderer::new) .register(); public static final BlockEntityEntry MOTOR = Create.registrate() .tileEntity("motor", CreativeMotorTileEntity::new) - .instance(() -> HalfShaftInstance::new) + .instance(() -> HalfShaftInstance::new, false) .validBlocks(AllBlocks.CREATIVE_MOTOR) .renderer(() -> CreativeMotorRenderer::new) .register(); public static final BlockEntityEntry GEARBOX = Create.registrate() .tileEntity("gearbox", GearboxTileEntity::new) - .instance(() -> GearboxInstance::new) + .instance(() -> GearboxInstance::new, false) .validBlocks(AllBlocks.GEARBOX) .renderer(() -> GearboxRenderer::new) .register(); public static final BlockEntityEntry ENCASED_SHAFT = Create.registrate() .tileEntity("encased_shaft", KineticTileEntity::new) - .instance(() -> ShaftInstance::new) + .instance(() -> ShaftInstance::new, false) .validBlocks(AllBlocks.ANDESITE_ENCASED_SHAFT, AllBlocks.BRASS_ENCASED_SHAFT, AllBlocks.ENCASED_CHAIN_DRIVE) .renderer(() -> ShaftRenderer::new) .register(); public static final BlockEntityEntry ENCASED_COGWHEEL = Create.registrate() .tileEntity("encased_cogwheel", SimpleKineticTileEntity::new) - .instance(() -> EncasedCogInstance::small) + .instance(() -> EncasedCogInstance::small, false) .validBlocks(AllBlocks.ANDESITE_ENCASED_COGWHEEL, AllBlocks.BRASS_ENCASED_COGWHEEL) .renderer(() -> EncasedCogRenderer::small) .register(); public static final BlockEntityEntry ENCASED_LARGE_COGWHEEL = Create.registrate() .tileEntity("encased_large_cogwheel", SimpleKineticTileEntity::new) - .instance(() -> EncasedCogInstance::large) + .instance(() -> EncasedCogInstance::large, false) .validBlocks(AllBlocks.ANDESITE_ENCASED_LARGE_COGWHEEL, AllBlocks.BRASS_ENCASED_LARGE_COGWHEEL) .renderer(() -> EncasedCogRenderer::large) .register(); public static final BlockEntityEntry ADJUSTABLE_PULLEY = Create.registrate() .tileEntity("adjustable_pulley", AdjustablePulleyTileEntity::new) - .instance(() -> ShaftInstance::new) + .instance(() -> ShaftInstance::new, false) .validBlocks(AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT) .renderer(() -> ShaftRenderer::new) .register(); public static final BlockEntityEntry ENCASED_FAN = Create.registrate() .tileEntity("encased_fan", EncasedFanTileEntity::new) - .instance(() -> FanInstance::new) + .instance(() -> FanInstance::new, false) .validBlocks(AllBlocks.ENCASED_FAN) .renderer(() -> EncasedFanRenderer::new) .register(); @@ -253,21 +253,21 @@ public class AllTileEntities { public static final BlockEntityEntry CLUTCH = Create.registrate() .tileEntity("clutch", ClutchTileEntity::new) - .instance(() -> SplitShaftInstance::new) + .instance(() -> SplitShaftInstance::new, false) .validBlocks(AllBlocks.CLUTCH) .renderer(() -> SplitShaftRenderer::new) .register(); public static final BlockEntityEntry GEARSHIFT = Create.registrate() .tileEntity("gearshift", GearshiftTileEntity::new) - .instance(() -> SplitShaftInstance::new) + .instance(() -> SplitShaftInstance::new, false) .validBlocks(AllBlocks.GEARSHIFT) .renderer(() -> SplitShaftRenderer::new) .register(); public static final BlockEntityEntry TURNTABLE = Create.registrate() .tileEntity("turntable", TurntableTileEntity::new) - .instance(() -> SingleRotatingInstance::new) + .instance(() -> SingleRotatingInstance::new, false) .validBlocks(AllBlocks.TURNTABLE) .renderer(() -> KineticTileEntityRenderer::new) .register(); @@ -289,7 +289,7 @@ public class AllTileEntities { public static final BlockEntityEntry GANTRY_SHAFT = Create.registrate() .tileEntity("gantry_shaft", GantryShaftTileEntity::new) - .instance(() -> SingleRotatingInstance::new) + .instance(() -> SingleRotatingInstance::new, false) .validBlocks(AllBlocks.GANTRY_SHAFT) .renderer(() -> KineticTileEntityRenderer::new) .register(); @@ -370,7 +370,7 @@ public class AllTileEntities { public static final BlockEntityEntry BELT = Create.registrate() .tileEntity("belt", BeltTileEntity::new) - .instance(() -> BeltInstance::new) + .instance(() -> BeltInstance::new, BeltTileEntity::shouldRenderNormally) .validBlocks(AllBlocks.BELT) .renderer(() -> BeltRenderer::new) .register(); @@ -415,7 +415,7 @@ public class AllTileEntities { public static final BlockEntityEntry MECHANICAL_PISTON = Create.registrate() .tileEntity("mechanical_piston", MechanicalPistonTileEntity::new) - .instance(() -> ShaftInstance::new) + .instance(() -> ShaftInstance::new, false) .validBlocks(AllBlocks.MECHANICAL_PISTON, AllBlocks.STICKY_MECHANICAL_PISTON) .renderer(() -> MechanicalPistonRenderer::new) .register(); @@ -443,7 +443,7 @@ public class AllTileEntities { public static final BlockEntityEntry ROPE_PULLEY = Create.registrate() .tileEntity("rope_pulley", PulleyTileEntity::new) - .instance(() -> RopePulleyInstance::new) + .instance(() -> RopePulleyInstance::new, false) .validBlocks(AllBlocks.ROPE_PULLEY) .renderer(() -> PulleyRenderer::new) .register(); @@ -456,14 +456,14 @@ public class AllTileEntities { public static final BlockEntityEntry STICKER = Create.registrate() .tileEntity("sticker", StickerTileEntity::new) - .instance(() -> StickerInstance::new) + .instance(() -> StickerInstance::new, false) .validBlocks(AllBlocks.STICKER) .renderer(() -> StickerRenderer::new) .register(); public static final BlockEntityEntry DRILL = Create.registrate() .tileEntity("drill", DrillTileEntity::new) - .instance(() -> DrillInstance::new) + .instance(() -> DrillInstance::new, false) .validBlocks(AllBlocks.MECHANICAL_DRILL) .renderer(() -> DrillRenderer::new) .register(); @@ -496,28 +496,28 @@ public class AllTileEntities { public static final BlockEntityEntry FLYWHEEL = Create.registrate() .tileEntity("flywheel", FlywheelTileEntity::new) - .instance(() -> FlyWheelInstance::new) + .instance(() -> FlyWheelInstance::new, false) .validBlocks(AllBlocks.FLYWHEEL) .renderer(() -> FlywheelRenderer::new) .register(); public static final BlockEntityEntry FURNACE_ENGINE = Create.registrate() .tileEntity("furnace_engine", FurnaceEngineTileEntity::new) - .instance(() -> EngineInstance::new) + .instance(() -> EngineInstance::new, false) .validBlocks(AllBlocks.FURNACE_ENGINE) .renderer(() -> EngineRenderer::new) .register(); public static final BlockEntityEntry MILLSTONE = Create.registrate() .tileEntity("millstone", MillstoneTileEntity::new) - .instance(() -> MillStoneCogInstance::new) + .instance(() -> MillStoneCogInstance::new, false) .validBlocks(AllBlocks.MILLSTONE) .renderer(() -> MillstoneRenderer::new) .register(); public static final BlockEntityEntry CRUSHING_WHEEL = Create.registrate() .tileEntity("crushing_wheel", CrushingWheelTileEntity::new) - .instance(() -> CutoutRotatingInstance::new) + .instance(() -> CutoutRotatingInstance::new, false) .validBlocks(AllBlocks.CRUSHING_WHEEL) .renderer(() -> KineticTileEntityRenderer::new) .register(); @@ -531,7 +531,7 @@ public class AllTileEntities { public static final BlockEntityEntry WATER_WHEEL = Create.registrate() .tileEntity("water_wheel", WaterWheelTileEntity::new) - .instance(() -> CutoutRotatingInstance::new) + .instance(() -> CutoutRotatingInstance::new, false) .validBlocks(AllBlocks.WATER_WHEEL) .renderer(() -> KineticTileEntityRenderer::new) .register(); @@ -578,7 +578,7 @@ public class AllTileEntities { public static final BlockEntityEntry SEQUENCED_GEARSHIFT = Create.registrate() .tileEntity("sequenced_gearshift", SequencedGearshiftTileEntity::new) - .instance(() -> SplitShaftInstance::new) + .instance(() -> SplitShaftInstance::new, false) .validBlocks(AllBlocks.SEQUENCED_GEARSHIFT) .renderer(() -> SplitShaftRenderer::new) .register(); @@ -606,7 +606,7 @@ public class AllTileEntities { public static final BlockEntityEntry ANALOG_LEVER = Create.registrate() .tileEntity("analog_lever", AnalogLeverTileEntity::new) - .instance(() -> AnalogLeverInstance::new) + .instance(() -> AnalogLeverInstance::new, false) .validBlocks(AllBlocks.ANALOG_LEVER) .renderer(() -> AnalogLeverRenderer::new) .register(); @@ -672,7 +672,7 @@ public class AllTileEntities { public static final BlockEntityEntry PULSE_EXTENDER = Create.registrate() .tileEntity("pulse_extender", PulseExtenderTileEntity::new) - .instance(() -> BrassDiodeInstance::new) + .instance(() -> BrassDiodeInstance::new, false) .validBlocks(AllBlocks.PULSE_EXTENDER) .renderer(() -> BrassDiodeRenderer::new) .register(); @@ -680,7 +680,7 @@ public class AllTileEntities { public static final BlockEntityEntry PULSE_REPEATER = Create.registrate() .tileEntity("pulse_repeater", PulseRepeaterTileEntity::new) - .instance(() -> BrassDiodeInstance::new) + .instance(() -> BrassDiodeInstance::new, false) .validBlocks(AllBlocks.PULSE_REPEATER) .renderer(() -> BrassDiodeRenderer::new) .register(); @@ -714,7 +714,7 @@ public class AllTileEntities { public static final BlockEntityEntry TOOLBOX = Create.registrate() .tileEntity("toolbox", ToolboxTileEntity::new) - .instance(() -> ToolBoxInstance::new) + .instance(() -> ToolBoxInstance::new, false) .validBlocks(AllBlocks.TOOLBOXES.toArray()) .renderer(() -> ToolboxRenderer::new) .register(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/BackHalfShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/BackHalfShaftInstance.java index 61d5e9601..de23bb2c9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/BackHalfShaftInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/BackHalfShaftInstance.java @@ -12,6 +12,6 @@ public class BackHalfShaftInstance extends HalfShaftInstance { @Override protected Direction getShaftDirection() { - return tile.getBlockState().getValue(BlockStateProperties.FACING).getOpposite(); + return blockEntity.getBlockState().getValue(BlockStateProperties.FACING).getOpposite(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java index 7fcf00893..1a8c1dfa6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java @@ -7,7 +7,6 @@ import java.util.List; import javax.annotation.Nullable; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.KineticNetwork; @@ -49,7 +48,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; public class KineticTileEntity extends SmartTileEntity - implements IHaveGoggleInformation, IHaveHoveringInformation, FlywheelRendered { + implements IHaveGoggleInformation, IHaveHoveringInformation { public @Nullable Long network; public @Nullable BlockPos source; diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileInstance.java index c9f4b3a5b..a0553a25e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileInstance.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.base; import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.flwdata.RotatingData; import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; @@ -12,7 +12,7 @@ import com.simibubi.create.foundation.render.AllMaterialSpecs; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; -public abstract class KineticTileInstance extends TileEntityInstance { +public abstract class KineticTileInstance extends BlockEntityInstance { protected final Direction.Axis axis; @@ -38,7 +38,7 @@ public abstract class KineticTileInstance extends T instance.setRotationAxis(axis) .setRotationOffset(getRotationOffset(axis)) .setRotationalSpeed(speed) - .setColor(tile); + .setColor(blockEntity); } protected final RotatingData setup(RotatingData key) { @@ -57,7 +57,7 @@ public abstract class KineticTileInstance extends T key.setRotationAxis(axis) .setRotationalSpeed(speed) .setRotationOffset(getRotationOffset(axis)) - .setColor(tile) + .setColor(blockEntity) .setPosition(getInstancePosition()); return key; @@ -78,7 +78,7 @@ public abstract class KineticTileInstance extends T } protected float getTileSpeed() { - return tile.getSpeed(); + return blockEntity.getSpeed(); } protected BlockState shaft() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java index 206e8ba30..cf949ebd4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java @@ -19,7 +19,7 @@ public class DrillInstance extends SingleRotatingInstance { @Override protected Instancer getModel() { - BlockState referenceState = tile.getBlockState(); + BlockState referenceState = blockEntity.getBlockState(); Direction facing = referenceState.getValue(BlockStateProperties.FACING); return getRotatingMaterial().getModel(AllBlockPartials.DRILL_HEAD, referenceState, facing); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java index fd0f6f56d..2efaec4a4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java @@ -187,9 +187,4 @@ public class CuckooClockTileEntity extends KineticTileEntity { Vec3 vec = VecHelper.getCenterOf(worldPosition); level.playLocalSound(vec.x, vec.y, vec.z, sound, SoundSource.BLOCKS, volume, pitch, false); } - - @Override - public boolean shouldRenderNormally() { - return true; - } } 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 364fbfddb..f759aac8c 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 @@ -523,11 +523,6 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { return inventory; } - @Override - public boolean shouldRenderNormally() { - return true; - } - public void setScriptedResult(ItemStack scriptedResult) { this.scriptedResult = scriptedResult; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java index 1517cb5be..c3eaeb218 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.components.crank; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; @@ -12,7 +12,7 @@ import net.minecraft.core.Direction; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -public class HandCrankInstance extends SingleRotatingInstance implements IDynamicInstance { +public class HandCrankInstance extends SingleRotatingInstance implements DynamicInstance { private final HandCrankTileEntity tile; private ModelData crank; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java index 716523aa6..4ef31339f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java @@ -79,11 +79,6 @@ public class HandCrankTileEntity extends GeneratingKineticTileEntity { return AllBlocks.HAND_CRANK.get(); } - @Override - public boolean shouldRenderNormally() { - return true; - } - @Override @OnlyIn(Dist.CLIENT) public void tickAudio() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java index 48dc47c10..eceeebf59 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java @@ -4,8 +4,8 @@ import static com.simibubi.create.content.contraptions.base.DirectionalAxisKinet import static com.simibubi.create.content.contraptions.base.DirectionalKineticBlock.FACING; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.api.instance.ITickableInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.api.instance.TickableInstance; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.mojang.math.Quaternion; @@ -20,7 +20,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; import net.minecraft.util.Mth; -public class DeployerInstance extends ShaftInstance implements IDynamicInstance, ITickableInstance { +public class DeployerInstance extends ShaftInstance implements DynamicInstance, TickableInstance { final DeployerTileEntity tile; final Direction facing; @@ -39,7 +39,7 @@ public class DeployerInstance extends ShaftInstance implements IDynamicInstance, public DeployerInstance(MaterialManager dispatcher, KineticTileEntity tile) { super(dispatcher, tile); - this.tile = (DeployerTileEntity) super.tile; + this.tile = (DeployerTileEntity) super.blockEntity; facing = blockState.getValue(FACING); boolean rotatePole = blockState.getValue(AXIS_ALONG_FIRST_COORDINATE) ^ facing.getAxis() == Direction.Axis.Z; 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 35d1ef873..4af84f819 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 @@ -424,11 +424,6 @@ public class DeployerTileEntity extends KineticTileEntity { return true; } - @Override - public boolean shouldRenderNormally() { - return true; - } - public float getHandOffset(float partialTicks) { if (isVirtual()) return animatedOffset.getValue(partialTicks); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java index 3bc3f9b6c..9a7dfa93b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java @@ -36,7 +36,7 @@ public class FanInstance extends KineticTileInstance { } private float getFanSpeed() { - float speed = tile.getSpeed() * 5; + float speed = blockEntity.getSpeed() * 5; if (speed > 0) speed = Mth.clamp(speed, 80, 64 * 20); if (speed < 0) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java index caa0c1232..30e087aae 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java @@ -10,7 +10,7 @@ import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; @@ -25,7 +25,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.state.BlockState; -public class FlyWheelInstance extends KineticTileInstance implements IDynamicInstance { +public class FlyWheelInstance extends KineticTileInstance implements DynamicInstance { protected final Direction facing; protected final Direction connection; @@ -90,8 +90,8 @@ public class FlyWheelInstance extends KineticTileInstance im float partialTicks = AnimationTickHolder.getPartialTicks(); - float speed = tile.visualSpeed.get(partialTicks) * 3 / 10f; - float angle = tile.angle + speed * partialTicks; + float speed = blockEntity.visualSpeed.get(partialTicks) * 3 / 10f; + float angle = blockEntity.angle + speed * partialTicks; if (Math.abs(angle - lastAngle) < 0.001) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java index 5587bbc13..60115d9a9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.contraptions.components.flywheel.engine; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.foundation.utility.AngleHelper; @@ -10,7 +10,7 @@ import net.minecraft.core.Direction; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -public class EngineInstance extends TileEntityInstance { +public class EngineInstance extends BlockEntityInstance { protected ModelData frame; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java index d96a4827b..9ecdc12f9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java @@ -2,7 +2,6 @@ package com.simibubi.create.content.contraptions.components.flywheel.engine; import java.util.List; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock; import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity; @@ -18,7 +17,7 @@ import net.minecraft.world.phys.AABB; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -public class EngineTileEntity extends SmartTileEntity implements FlywheelRendered { +public class EngineTileEntity extends SmartTileEntity { public float appliedCapacity; public float appliedSpeed; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java index 112abe5fb..1e8831261 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java @@ -15,6 +15,6 @@ public class MillStoneCogInstance extends SingleRotatingInstance { @Override protected Instancer getModel() { - return getRotatingMaterial().getModel(AllBlockPartials.MILLSTONE_COG, tile.getBlockState()); + return getRotatingMaterial().getModel(AllBlockPartials.MILLSTONE_COG, blockEntity.getBlockState()); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java index 9ce98dd3b..8104dd20b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.components.mixer; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.flwdata.RotatingData; @@ -12,7 +12,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.core.Direction; -public class MixerInstance extends EncasedCogInstance implements IDynamicInstance { +public class MixerInstance extends EncasedCogInstance implements DynamicInstance { private final RotatingData mixerHead; private final OrientedData mixerPole; @@ -42,7 +42,7 @@ public class MixerInstance extends EncasedCogInstance implements IDynamicInstanc protected Instancer getCogModel() { return materialManager.defaultSolid() .material(AllMaterialSpecs.ROTATING) - .getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, tile.getBlockState()); + .getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, blockEntity.getBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/PressInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/PressInstance.java index fc3430acc..ff842943e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/PressInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/PressInstance.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.contraptions.components.press; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.mojang.math.Quaternion; @@ -11,7 +11,7 @@ import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; -public class PressInstance extends ShaftInstance implements IDynamicInstance { +public class PressInstance extends ShaftInstance implements DynamicInstance { private final OrientedData pressHead; private final MechanicalPressTileEntity press; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java index 336977777..bba424cbf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java @@ -23,7 +23,7 @@ public class SawInstance extends SingleRotatingInstance { if (blockState.getValue(BlockStateProperties.FACING) .getAxis() .isHorizontal()) { - BlockState referenceState = blockState.rotate(tile.getLevel(), tile.getBlockPos(), Rotation.CLOCKWISE_180); + BlockState referenceState = blockState.rotate(blockEntity.getLevel(), blockEntity.getBlockPos(), Rotation.CLOCKWISE_180); Direction facing = referenceState.getValue(BlockStateProperties.FACING); return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, referenceState, facing); } else { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java index aa2fffc3f..9403c13de 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java @@ -499,9 +499,4 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { return false; } - @Override - public boolean shouldRenderNormally() { - return true; - } - } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java index 8f325b8b9..e4f303402 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.bearing; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.PartialModel; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.mojang.math.Quaternion; @@ -15,7 +15,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -public class BearingInstance extends BackHalfShaftInstance implements IDynamicInstance { +public class BearingInstance extends BackHalfShaftInstance implements DynamicInstance { final B bearing; final OrientedData topInstance; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java index 633495afc..bd1ddb2b4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java @@ -420,11 +420,6 @@ public class ClockworkBearingTileEntity extends KineticTileEntity return worldPosition; } - @Override - public boolean shouldRenderNormally() { - return true; - } - public void setAngle(float forcedAngle) { hourAngle = forcedAngle; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java index 19d35104a..1f659aecd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java @@ -321,11 +321,6 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity return true; } - @Override - public boolean shouldRenderNormally() { - return true; - } - public void setAngle(float forcedAngle) { angle = forcedAngle; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java index 76df6195b..e94e2b5ce 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java @@ -1,8 +1,8 @@ package com.simibubi.create.content.contraptions.components.structureMovement.chassis; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.utility.AngleHelper; @@ -12,7 +12,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.core.Direction; import net.minecraft.util.Mth; -public class StickerInstance extends TileEntityInstance implements IDynamicInstance { +public class StickerInstance extends BlockEntityInstance implements DynamicInstance { float lastOffset = Float.NaN; final Direction facing; @@ -35,7 +35,7 @@ public class StickerInstance extends TileEntityInstance imple @Override public void beginFrame() { - float offset = tile.piston.getValue(AnimationTickHolder.getPartialTicks()); + float offset = blockEntity.piston.getValue(AnimationTickHolder.getPartialTicks()); if (fakeWorld) offset = this.offset; @@ -51,7 +51,7 @@ public class StickerInstance extends TileEntityInstance imple private void animateHead(float offset) { head.loadIdentity() .translate(getInstancePosition()) - .nudge(tile.hashCode()) + .nudge(blockEntity.hashCode()) .centre() .rotateY(AngleHelper.horizontalAngle(facing)) .rotateX(AngleHelper.verticalAngle(facing) + 90) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java index 698a5b77c..697380f14 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java @@ -2,7 +2,6 @@ package com.simibubi.create.content.contraptions.components.structureMovement.ch import java.util.List; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllSoundEvents; @@ -23,7 +22,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; -public class StickerTileEntity extends SmartTileEntity implements FlywheelRendered { +public class StickerTileEntity extends SmartTileEntity { LerpedFloat piston; boolean update; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java index 51558e887..f84270b53 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.gantry; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; @@ -14,7 +14,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.Mth; -public class GantryCarriageInstance extends ShaftInstance implements IDynamicInstance { +public class GantryCarriageInstance extends ShaftInstance implements DynamicInstance { private final ModelData gantryCogs; @@ -56,7 +56,7 @@ public class GantryCarriageInstance extends ShaftInstance implements IDynamicIns } private float getCogAngle() { - return GantryCarriageRenderer.getAngleForTe(tile, visualPos, rotationAxis) * rotationMult; + return GantryCarriageRenderer.getAngleForTe(blockEntity, visualPos, rotationAxis) * rotationMult; } private void animateCogs(float cogAngle) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java index f4a65dfe2..da1ef0c91 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java @@ -171,9 +171,4 @@ public class GantryCarriageTileEntity extends KineticTileEntity implements IDisp BlockEntity te = level.getBlockEntity(worldPosition.relative(facing)); return te instanceof GantryShaftTileEntity && ((GantryShaftTileEntity) te).canAssembleOn(); } - - @Override - public boolean shouldRenderNormally() { - return true; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java index dd7c8c3d1..7282da1e1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.gl import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialGroup; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.ITickableInstance; +import com.jozufozu.flywheel.api.instance.TickableInstance; import com.jozufozu.flywheel.backend.instancing.entity.EntityInstance; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.instancing.ConditionalInstance; @@ -21,7 +21,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.LightLayer; -public class GlueInstance extends EntityInstance implements ITickableInstance { +public class GlueInstance extends EntityInstance implements TickableInstance { private static final ResourceLocation TEXTURE = Create.asResource("textures/entity/super_glue/slime.png"); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java index 8f622be50..767c66f88 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java @@ -4,7 +4,6 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.Validate; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllEntityTypes; import com.simibubi.create.AllItems; @@ -68,7 +67,7 @@ import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.PacketDistributor; public class SuperGlueEntity extends Entity - implements IEntityAdditionalSpawnData, ISpecialEntityItemRequirement, FlywheelRendered { + implements IEntityAdditionalSpawnData, ISpecialEntityItemRequirement { private int validationTimer; protected BlockPos hangingPosition; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java index 2cc6fd82f..8e10efb1a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.pu import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.instancing.ConditionalInstance; import com.jozufozu.flywheel.core.instancing.GroupInstance; import com.jozufozu.flywheel.core.instancing.SelectInstance; @@ -22,7 +22,7 @@ import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraft.world.level.LightLayer; -public abstract class AbstractPulleyInstance extends ShaftInstance implements IDynamicInstance, MovingListener { +public abstract class AbstractPulleyInstance extends ShaftInstance implements DynamicInstance, MovingListener { final OrientedData coil; final SelectInstance magnet; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java index 5969610e6..62d7c0e65 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java @@ -39,7 +39,7 @@ public class HosePulleyInstance extends AbstractPulleyInstance { } protected float getOffset() { - return ((HosePulleyTileEntity) tile).getInterpolatedOffset(AnimationTickHolder.getPartialTicks()); + return ((HosePulleyTileEntity) blockEntity).getInterpolatedOffset(AnimationTickHolder.getPartialTicks()); } protected boolean isRunning() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java index 265aad167..a441696f8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java @@ -236,9 +236,4 @@ public class PulleyTileEntity extends LinearActuatorTileEntity { public void animateOffset(float forcedOffset) { offset = forcedOffset; } - - @Override - public boolean shouldRenderNormally() { - return false; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java index 7bb74f913..5eac17ee0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java @@ -35,10 +35,10 @@ public class RopePulleyInstance extends AbstractPulleyInstance { protected float getOffset() { float partialTicks = AnimationTickHolder.getPartialTicks(); - return PulleyRenderer.getTileOffset(partialTicks, (PulleyTileEntity) tile); + return PulleyRenderer.getTileOffset(partialTicks, (PulleyTileEntity) blockEntity); } protected boolean isRunning() { - return ((PulleyTileEntity) tile).running || tile.isVirtual(); + return ((PulleyTileEntity) blockEntity).running || blockEntity.isVirtual(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java index ce999d473..d1d138bfc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java @@ -8,7 +8,7 @@ import org.apache.commons.lang3.tuple.Pair; import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.instancing.TaskEngine; -import com.jozufozu.flywheel.backend.instancing.tile.TileInstanceManager; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstanceManager; import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.AllMovementBehaviours; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; @@ -18,7 +18,7 @@ import net.minecraft.client.Camera; import net.minecraft.core.BlockPos; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; -public class ContraptionInstanceManager extends TileInstanceManager { +public class ContraptionInstanceManager extends BlockEntityInstanceManager { protected ArrayList actors = new ArrayList<>(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java index 906ad3170..1966cd557 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java @@ -108,7 +108,7 @@ public class ContraptionRenderDispatcher { ContraptionWorld contraptionWorld = c.getContraptionWorld(); VirtualRenderWorld renderWorld = new VirtualRenderWorld(world, contraptionWorld.getHeight(), contraptionWorld.getMinBuildHeight()); - renderWorld.setTileEntities(c.presentTileEntities.values()); + renderWorld.setBlockEntities(c.presentTileEntities.values()); for (StructureTemplate.StructureBlockInfo info : c.getBlocks() .values()) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java index f02aced9f..cf2a561a7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java @@ -147,8 +147,7 @@ public class FlwContraption extends ContraptionRenderInfo { Collection tileEntities = contraption.maybeInstancedTileEntities; if (!tileEntities.isEmpty()) { for (BlockEntity te : tileEntities) { - if (InstancedRenderRegistry.getInstance() - .canInstance(te.getType())) { + if (InstancedRenderRegistry.canInstance(te.getType())) { Level world = te.getLevel(); te.setLevel(renderWorld); instanceWorld.tileInstanceManager.add(te); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java index f76eaa677..d1c253783 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java @@ -19,7 +19,7 @@ public class PumpCogInstance extends SingleRotatingInstance { @Override protected Instancer getModel() { - BlockState referenceState = tile.getBlockState(); + BlockState referenceState = blockEntity.getBlockState(); Direction facing = referenceState.getValue(BlockStateProperties.FACING); return getRotatingMaterial().getModel(AllBlockPartials.MECHANICAL_PUMP_COG, referenceState, facing); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java index f8df35193..2bf7cbd9a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java @@ -389,9 +389,4 @@ public class PumpTileEntity extends KineticTileEntity { } } - - @Override - public boolean shouldRenderNormally() { - return true; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java index be066a98e..7e3d47a6c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java @@ -187,9 +187,4 @@ public class HosePulleyTileEntity extends KineticTileEntity { return this.capability.cast(); return super.getCapability(cap, side); } - - @Override - public boolean shouldRenderNormally() { - return true; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveInstance.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveInstance.java index 834947da9..d8d688604 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveInstance.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.contraptions.fluids.pipes; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.AllBlockPartials; @@ -14,7 +14,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.core.Direction; import net.minecraft.util.Mth; -public class FluidValveInstance extends ShaftInstance implements IDynamicInstance { +public class FluidValveInstance extends ShaftInstance implements DynamicInstance { private final FluidValveTileEntity tile; protected ModelData pointer; diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java index 79490b78d..ccb486b2f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java @@ -80,11 +80,6 @@ public class FluidValveTileEntity extends KineticTileEntity { behaviours.add(new ValvePipeBehaviour(this)); } - @Override - public boolean shouldRenderNormally() { - return true; - } - class ValvePipeBehaviour extends StraightPipeFluidTransportBehaviour { public ValvePipeBehaviour(SmartTileEntity te) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java index 62d0e2e8b..e03754473 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java @@ -149,9 +149,4 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { protected abstract boolean matchStaticFilters(Recipe recipe); protected abstract Object getRecipeCacheKey(); - - @Override - public boolean shouldRenderNormally() { - return true; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java index 9f213cafc..15f1dcb9d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java @@ -118,11 +118,6 @@ public class SpeedControllerTileEntity extends KineticTileEntity { && stateAbove.getValue(CogWheelBlock.AXIS).isHorizontal(); } - @Override - public boolean shouldRenderNormally() { - return true; - } - private class ControllerValueBoxTransform extends ValueBoxTransform.Sided { @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java index 38df5200c..0a518ce6c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java @@ -80,14 +80,14 @@ public class BeltInstance extends KineticTileInstance { @Override public void update() { - DyeColor color = tile.color.orElse(null); + DyeColor color = blockEntity.color.orElse(null); boolean bottom = true; for (BeltData key : keys) { SpriteShiftEntry spriteShiftEntry = BeltRenderer.getSpriteShiftEntry(color, diagonal, bottom); key.setScrollTexture(spriteShiftEntry) - .setColor(tile) + .setColor(blockEntity) .setRotationalSpeed(getScrollSpeed()); bottom = false; } @@ -113,7 +113,7 @@ public class BeltInstance extends KineticTileInstance { } private float getScrollSpeed() { - float speed = tile.getSpeed(); + float speed = blockEntity.getSpeed(); if (((facing.getAxisDirection() == Direction.AxisDirection.NEGATIVE) ^ upward) ^ ((alongX && !diagonal) || (alongZ && diagonal))) { speed = -speed; @@ -168,7 +168,7 @@ public class BeltInstance extends KineticTileInstance { .setRotation(q) .setRotationalSpeed(getScrollSpeed()) .setRotationOffset(bottom ? 0.5f : 0f) - .setColor(tile) + .setColor(blockEntity) .setPosition(getInstancePosition()) .setBlockLight(world.getBrightness(LightLayer.BLOCK, pos)) .setSkyLight(world.getBrightness(LightLayer.SKY, pos)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index d540627ad..eaf885e9b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -528,7 +528,6 @@ public class BeltTileEntity extends KineticTileEntity implements LightListener { itemHandler.invalidate(); } - @Override public boolean shouldRenderNormally() { if (level == null) return isController(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileInstance.java index 127addf7f..e6ab3d5ef 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileInstance.java @@ -27,15 +27,15 @@ public class BracketedKineticTileInstance extends SingleRotatingInstance { @Override public void init() { super.init(); - if (!ICogWheel.isLargeCog(tile.getBlockState())) + if (!ICogWheel.isLargeCog(blockEntity.getBlockState())) return; // Large cogs sometimes have to offset their teeth by 11.25 degrees in order to // mesh properly - float speed = tile.getSpeed(); - Axis axis = KineticTileEntityRenderer.getRotationAxisOf(tile); - BlockPos pos = tile.getBlockPos(); + float speed = blockEntity.getSpeed(); + Axis axis = KineticTileEntityRenderer.getRotationAxisOf(blockEntity); + BlockPos pos = blockEntity.getBlockPos(); float offset = BracketedKineticTileRenderer.getShaftAngleOffset(axis, pos); Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE); Instancer half = getRotatingMaterial().getModel(AllBlockPartials.COGWHEEL_SHAFT, blockState, @@ -47,10 +47,10 @@ public class BracketedKineticTileInstance extends SingleRotatingInstance { @Override protected Instancer getModel() { - if (!ICogWheel.isLargeCog(tile.getBlockState())) + if (!ICogWheel.isLargeCog(blockEntity.getBlockState())) return super.getModel(); - Axis axis = KineticTileEntityRenderer.getRotationAxisOf(tile); + Axis axis = KineticTileEntityRenderer.getRotationAxisOf(blockEntity); Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE); return getRotatingMaterial().getModel(AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL, blockState, facing, () -> this.rotateToAxis(axis)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogInstance.java index 552ccc02b..62d6f45bc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogInstance.java @@ -56,7 +56,7 @@ public class EncasedCogInstance extends KineticTileInstance { rotatingBottomShaft = Optional.empty(); for (Direction d : Iterate.directionsInAxis(axis)) { - if (!def.hasShaftTowards(tile.getLevel(), tile.getBlockPos(), blockState, d)) + if (!def.hasShaftTowards(blockEntity.getLevel(), blockEntity.getBlockPos(), blockState, d)) continue; RotatingData data = setup(getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, d) .createInstance()); @@ -89,7 +89,7 @@ public class EncasedCogInstance extends KineticTileInstance { } protected Instancer getCogModel() { - BlockState referenceState = tile.getBlockState(); + BlockState referenceState = blockEntity.getBlockState(); Direction facing = Direction.fromAxisAndDirection(referenceState.getValue(BlockStateProperties.AXIS), AxisDirection.POSITIVE); PartialModel partial = large ? AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL : AllBlockPartials.SHAFTLESS_COGWHEEL; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java index 7c9c16256..d6ded2749 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java @@ -46,7 +46,7 @@ public class SplitShaftInstance extends KineticTileInstance faces; @@ -59,7 +59,7 @@ public abstract class GaugeInstance extends ShaftInstance implements IDynamicIns @Override public void beginFrame() { - GaugeTileEntity gaugeTile = (GaugeTileEntity) tile; + GaugeTileEntity gaugeTile = (GaugeTileEntity) blockEntity; if (Mth.equal(gaugeTile.prevDialState, gaugeTile.dialState)) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java index 5df103fc8..7ea03b0e0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java @@ -52,9 +52,4 @@ public class GaugeTileEntity extends KineticTileEntity implements IHaveGoggleInf return true; } - - @Override - public boolean shouldRenderNormally() { - return true; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java index 8871111a8..ae7173155 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java @@ -56,7 +56,7 @@ public class GearboxInstance extends KineticTileInstance { } private float getSpeed(Direction direction) { - float speed = tile.getSpeed(); + float speed = blockEntity.getSpeed(); if (speed != 0 && sourceFacing != null) { if (sourceFacing.getAxis() == direction.getAxis()) @@ -68,8 +68,8 @@ public class GearboxInstance extends KineticTileInstance { } protected void updateSourceFacing() { - if (tile.hasSource()) { - BlockPos source = tile.source.subtract(pos); + if (blockEntity.hasSource()) { + BlockPos source = blockEntity.source.subtract(pos); sourceFacing = Direction.getNearest(source.getX(), source.getY(), source.getZ()); } else { sourceFacing = null; diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java index d83cd2dcc..c7a99f0b0 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java @@ -128,11 +128,6 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements Namea .getDescriptionId()); } - @Override - public boolean shouldRenderNormally() { - return true; - } - public int getAirLevel() { return airLevel; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolBoxInstance.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolBoxInstance.java index 1e9f7db99..aac661c5e 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolBoxInstance.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolBoxInstance.java @@ -2,8 +2,8 @@ package com.simibubi.create.content.curiosities.toolbox; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.AllBlockPartials; @@ -13,7 +13,7 @@ import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; -public class ToolBoxInstance extends TileEntityInstance implements IDynamicInstance { +public class ToolBoxInstance extends BlockEntityInstance implements DynamicInstance { private final Direction facing; private ModelData lid; @@ -28,7 +28,7 @@ public class ToolBoxInstance extends TileEntityInstance imple @Override public void init() { - BlockState blockState = tile.getBlockState(); + BlockState blockState = blockEntity.getBlockState(); Instancer drawerModel = materialManager.defaultSolid() .material(Materials.TRANSFORMED) @@ -37,7 +37,7 @@ public class ToolBoxInstance extends TileEntityInstance imple drawers = new ModelData[]{drawerModel.createInstance(), drawerModel.createInstance()}; lid = materialManager.defaultCutout() .material(Materials.TRANSFORMED) - .getModel(AllBlockPartials.TOOLBOX_LIDS.get(tile.getColor()), blockState) + .getModel(AllBlockPartials.TOOLBOX_LIDS.get(blockEntity.getColor()), blockState) .createInstance(); } @@ -56,8 +56,8 @@ public class ToolBoxInstance extends TileEntityInstance imple float partialTicks = AnimationTickHolder.getPartialTicks(); - float lidAngle = tile.lid.getValue(partialTicks); - float drawerOffset = tile.drawers.getValue(partialTicks); + float lidAngle = blockEntity.lid.getValue(partialTicks); + float drawerOffset = blockEntity.drawers.getValue(partialTicks); lid.loadIdentity() .translate(instancePos) diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java index 005eb09aa..e80788d53 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxTileEntity.java @@ -10,7 +10,6 @@ import java.util.Set; import java.util.UUID; import java.util.WeakHashMap; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -43,7 +42,7 @@ import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; -public class ToolboxTileEntity extends SmartTileEntity implements MenuProvider, Nameable, FlywheelRendered { +public class ToolboxTileEntity extends SmartTileEntity implements MenuProvider, Nameable { public LerpedFloat lid = LerpedFloat.linear() .startWithValue(0); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelInstance.java index 231c6706a..9f0402373 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelInstance.java @@ -8,8 +8,8 @@ import java.util.Map; import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.logistics.block.flap.FlapData; import com.simibubi.create.foundation.render.AllMaterialSpecs; @@ -19,7 +19,7 @@ import com.simibubi.create.foundation.utility.animation.InterpolatedValue; import net.minecraft.core.Direction; import net.minecraft.world.level.LightLayer; -public class BeltTunnelInstance extends TileEntityInstance implements IDynamicInstance { +public class BeltTunnelInstance extends BlockEntityInstance implements DynamicInstance { private final Map> tunnelFlaps; @@ -70,13 +70,13 @@ public class BeltTunnelInstance extends TileEntityInstance @Override public boolean shouldReset() { - return super.shouldReset() || tunnelFlaps.size() != tile.flaps.size(); + return super.shouldReset() || tunnelFlaps.size() != blockEntity.flaps.size(); } @Override public void beginFrame() { tunnelFlaps.forEach((direction, keys) -> { - InterpolatedValue flapValue = tile.flaps.get(direction); + InterpolatedValue flapValue = blockEntity.flaps.get(direction); if (flapValue == null) { return; } 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 3ff3cb53c..69cdb2cab 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 @@ -9,7 +9,6 @@ import java.util.Set; import org.apache.commons.lang3.tuple.Pair; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock.Shape; @@ -40,7 +39,7 @@ import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; -public class BeltTunnelTileEntity extends SmartTileEntity implements FlywheelRendered { +public class BeltTunnelTileEntity extends SmartTileEntity { public Map flaps; public Set sides; @@ -175,11 +174,6 @@ public class BeltTunnelTileEntity extends SmartTileEntity implements FlywheelRen flapsToSend.clear(); } - @Override - public boolean shouldRenderNormally() { - return true; - } - @Override public void addBehaviours(List behaviours) {} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorInstance.java index dc484208d..1a37a1141 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorInstance.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.logistics.block.depot; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; @@ -9,7 +9,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.util.Mth; -public class EjectorInstance extends ShaftInstance implements IDynamicInstance { +public class EjectorInstance extends ShaftInstance implements DynamicInstance { protected final EjectorTileEntity tile; 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 28e027107..7dc137587 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 @@ -576,11 +576,6 @@ public class EjectorTileEntity extends KineticTileEntity { return super.getCapability(cap, side); } - @Override - public boolean shouldRenderNormally() { - return true; - } - public float getLidProgress(float pt) { return lidProgress.getValue(pt); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeInstance.java index 04ce9ca21..450726b17 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeInstance.java @@ -1,14 +1,14 @@ package com.simibubi.create.content.logistics.block.diodes; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.ITickableInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.TickableInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.Materials; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.utility.Color; -public class BrassDiodeInstance extends TileEntityInstance implements ITickableInstance { +public class BrassDiodeInstance extends BlockEntityInstance implements TickableInstance { protected final ModelData indicator; @@ -30,11 +30,11 @@ public class BrassDiodeInstance extends TileEntityInstance @Override public void tick() { - if (previousState == tile.state) return; + if (previousState == blockEntity.state) return; indicator.setColor(getColor()); - previousState = tile.state; + previousState = blockEntity.state; } @Override @@ -48,6 +48,6 @@ public class BrassDiodeInstance extends TileEntityInstance } protected int getColor() { - return Color.mixColors(0x2c0300, 0xcd0000, tile.getProgress()); + return Color.mixColors(0x2c0300, 0xcd0000, blockEntity.getProgress()); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeTileEntity.java index 2a0e9e811..dfc2da4dc 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/diodes/BrassDiodeTileEntity.java @@ -4,7 +4,6 @@ import static com.simibubi.create.content.logistics.block.diodes.BrassDiodeBlock import java.util.List; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour; @@ -19,7 +18,7 @@ import net.minecraft.world.level.block.DiodeBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -public abstract class BrassDiodeTileEntity extends SmartTileEntity implements FlywheelRendered { +public abstract class BrassDiodeTileEntity extends SmartTileEntity { protected int state; ScrollValueBehaviour maxState; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelInstance.java index 83d36c1e6..b5fd82fd1 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelInstance.java @@ -5,8 +5,8 @@ import java.util.ArrayList; import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.PartialModel; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.logistics.block.flap.FlapData; @@ -16,7 +16,7 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.core.Direction; import net.minecraft.world.level.LightLayer; -public class FunnelInstance extends TileEntityInstance implements IDynamicInstance { +public class FunnelInstance extends BlockEntityInstance implements DynamicInstance { private final ArrayList flaps; @@ -65,7 +65,7 @@ public class FunnelInstance extends TileEntityInstance impleme public void beginFrame() { if (flaps == null) return; - float flapness = tile.flap.get(AnimationTickHolder.getPartialTicks()); + float flapness = blockEntity.flap.get(AnimationTickHolder.getPartialTicks()); for (FlapData flap : flaps) { flap.setFlapness(flapness); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java index eadb7173e..dacf89d4f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java @@ -3,7 +3,6 @@ package com.simibubi.create.content.logistics.block.funnel; import java.lang.ref.WeakReference; import java.util.List; -import com.jozufozu.flywheel.api.FlywheelRendered; import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllSoundEvents; @@ -37,7 +36,7 @@ import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.DistExecutor; -public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringInformation, FlywheelRendered { +public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringInformation { private FilteringBehaviour filtering; private InvManipulationBehaviour invManipulation; @@ -336,9 +335,4 @@ public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringIn .onFunnelTransfer(level, worldPosition, stack); } - @Override - public boolean shouldRenderNormally() { - return true; - } - } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java index 3d118c46c..2feb23b98 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java @@ -7,7 +7,7 @@ import com.jozufozu.flywheel.api.InstanceData; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; @@ -24,7 +24,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; -public class ArmInstance extends SingleRotatingInstance implements IDynamicInstance { +public class ArmInstance extends SingleRotatingInstance implements DynamicInstance { final ModelData base; final ModelData lowerBody; @@ -69,7 +69,7 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta @Override public void beginFrame() { - if (arm.phase == ArmTileEntity.Phase.DANCING && tile.getSpeed() != 0) { + if (arm.phase == ArmTileEntity.Phase.DANCING && blockEntity.getSpeed() != 0) { animateArm(true); firstRender = true; return; @@ -107,7 +107,7 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta int color; if (rave) { - float renderTick = AnimationTickHolder.getRenderTime(this.arm.getLevel()) + (tile.hashCode() % 64); + float renderTick = AnimationTickHolder.getRenderTime(this.arm.getLevel()) + (blockEntity.hashCode() % 64); baseAngle = (renderTick * 10) % 360; lowerArmAngle = Mth.lerp((Mth.sin(renderTick / 4) + 1) / 2, -45, 15); upperArmAngle = Mth.lerp((Mth.sin(renderTick / 8) + 1) / 4, -45, 95); @@ -172,7 +172,7 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta @Override protected Instancer getModel() { - return getRotatingMaterial().getModel(AllBlockPartials.ARM_COG, tile.getBlockState()); + return getRotatingMaterial().getModel(AllBlockPartials.ARM_COG, blockEntity.getBlockState()); } @Override 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 e6b97b32b..0d3ff0621 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 @@ -517,11 +517,6 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE return true; } - @Override - public boolean shouldRenderNormally() { - return true; - } - private class SelectionModeValueBox extends CenteredSideValueBoxTransform { public SelectionModeValueBox() { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverInstance.java index 7eb4a61fd..4195b9dde 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/AnalogLeverInstance.java @@ -2,8 +2,8 @@ package com.simibubi.create.content.logistics.block.redstone; import com.jozufozu.flywheel.api.Material; import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.api.instance.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.jozufozu.flywheel.core.materials.model.ModelData; import com.jozufozu.flywheel.util.transform.Rotate; import com.jozufozu.flywheel.util.transform.Translate; @@ -15,7 +15,7 @@ import com.simibubi.create.foundation.utility.Color; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.properties.AttachFace; -public class AnalogLeverInstance extends TileEntityInstance implements IDynamicInstance { +public class AnalogLeverInstance extends BlockEntityInstance implements DynamicInstance { protected final ModelData handle; protected final ModelData indicator; @@ -42,12 +42,12 @@ public class AnalogLeverInstance extends TileEntityInstance implements IDynamicInstance { +public class SchematicannonInstance extends BlockEntityInstance implements DynamicInstance { private final ModelData connector; private final ModelData pipe; @@ -30,12 +30,12 @@ public class SchematicannonInstance extends TileEntityInstance extends EntityBuilder { @Nullable - private NonNullSupplier> instanceFactory; + private NonNullSupplier>> instanceFactory; + private NonNullPredicate renderNormally; public static EntityBuilder create(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, EntityType.EntityFactory factory, MobCategory classification) { return (new CreateEntityBuilder<>(owner, parent, name, callback, factory, classification)).defaultLang(); @@ -32,23 +37,34 @@ public class CreateEntityBuilder extends EntityBuilder instance(NonNullSupplier> instanceFactory) { + public CreateEntityBuilder instance(NonNullSupplier>> instanceFactory) { + return instance(instanceFactory, true); + } + + public CreateEntityBuilder instance(NonNullSupplier>> instanceFactory, boolean renderNormally) { + return instance(instanceFactory, be -> true); + } + + public CreateEntityBuilder instance(NonNullSupplier>> instanceFactory, NonNullPredicate renderNormally) { if (this.instanceFactory == null) { DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::registerInstance); } this.instanceFactory = instanceFactory; + this.renderNormally = renderNormally; return this; } protected void registerInstance() { OneTimeEventReceiver.addModListener(FMLClientSetupEvent.class, $ -> { - NonNullSupplier> instanceFactory = this.instanceFactory; + NonNullSupplier>> instanceFactory = this.instanceFactory; if (instanceFactory != null) { - InstancedRenderRegistry.getInstance() - .entity(getEntry()) - .factory(instanceFactory.get()); + NonNullPredicate renderNormally = this.renderNormally; + InstancedRenderRegistry.configure(getEntry()) + .factory(instanceFactory.get()) + .skipRender(be -> !renderNormally.test(be)) + .apply(); } }); diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java b/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java index bcdf77e80..d336936a8 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java @@ -1,9 +1,12 @@ package com.simibubi.create.foundation.data; +import java.util.function.BiFunction; + import javax.annotation.Nullable; +import com.jozufozu.flywheel.api.MaterialManager; import com.jozufozu.flywheel.backend.instancing.InstancedRenderRegistry; -import com.jozufozu.flywheel.backend.instancing.tile.ITileInstanceFactory; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.BlockEntityBuilder; import com.tterrag.registrate.builders.BuilderCallback; @@ -12,13 +15,15 @@ import com.tterrag.registrate.util.nullness.NonNullSupplier; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.util.NonNullPredicate; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; public class CreateTileEntityBuilder extends BlockEntityBuilder { @Nullable - private NonNullSupplier> instanceFactory; + private NonNullSupplier>> instanceFactory; + private NonNullPredicate renderNormally; public static BlockEntityBuilder create(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, BlockEntityFactory factory) { @@ -30,23 +35,34 @@ public class CreateTileEntityBuilder extends BlockEnti super(owner, parent, name, callback, factory); } - public CreateTileEntityBuilder instance(NonNullSupplier> instanceFactory) { + public CreateTileEntityBuilder instance(NonNullSupplier>> instanceFactory) { + return instance(instanceFactory, true); + } + + public CreateTileEntityBuilder instance(NonNullSupplier>> instanceFactory, boolean renderNormally) { + return instance(instanceFactory, be -> renderNormally); + } + + public CreateTileEntityBuilder instance(NonNullSupplier>> instanceFactory, NonNullPredicate renderNormally) { if (this.instanceFactory == null) { DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::registerInstance); } this.instanceFactory = instanceFactory; + this.renderNormally = renderNormally; return this; } protected void registerInstance() { OneTimeEventReceiver.addModListener(FMLClientSetupEvent.class, $ -> { - NonNullSupplier> instanceFactory = this.instanceFactory; + NonNullSupplier>> instanceFactory = this.instanceFactory; if (instanceFactory != null) { - InstancedRenderRegistry.getInstance() - .tile(getEntry()) - .factory(instanceFactory.get()); + NonNullPredicate renderNormally = this.renderNormally; + InstancedRenderRegistry.configure(getEntry()) + .factory(instanceFactory.get()) + .skipRender(be -> !renderNormally.test(be)) + .apply(); } }); } diff --git a/src/main/java/com/simibubi/create/foundation/render/RainbowDebugStateProvider.java b/src/main/java/com/simibubi/create/foundation/render/RainbowDebugStateProvider.java index 9e4fd21cc..7aafc712b 100644 --- a/src/main/java/com/simibubi/create/foundation/render/RainbowDebugStateProvider.java +++ b/src/main/java/com/simibubi/create/foundation/render/RainbowDebugStateProvider.java @@ -1,12 +1,12 @@ package com.simibubi.create.foundation.render; -import com.jozufozu.flywheel.core.shader.spec.IBooleanStateProvider; +import com.jozufozu.flywheel.core.shader.spec.BooleanStateProvider; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.KineticDebugger; import net.minecraft.resources.ResourceLocation; -public class RainbowDebugStateProvider implements IBooleanStateProvider { +public class RainbowDebugStateProvider implements BooleanStateProvider { public static final RainbowDebugStateProvider INSTANCE = new RainbowDebugStateProvider(); public static final ResourceLocation NAME = Create.asResource("rainbow_debug"); 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 57ccd11b6..c6711962c 100644 --- a/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java +++ b/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java @@ -48,8 +48,8 @@ public class TileEntityRenderHelper { Iterator iterator = customRenderTEs.iterator(); while (iterator.hasNext()) { BlockEntity tileEntity = iterator.next(); - if (Backend.canUseInstancing(renderWorld) && InstancedRenderRegistry.getInstance() - .shouldSkipRender(tileEntity)) continue; + if (Backend.canUseInstancing(renderWorld) && InstancedRenderRegistry.shouldSkipRender(tileEntity)) + continue; BlockEntityRenderer renderer = Minecraft.getInstance().getBlockEntityRenderDispatcher().getRenderer(tileEntity); if (renderer == null) { diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index bd4ff898d..31637418c 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -32,6 +32,6 @@ Technology that empowers the player.''' [[dependencies.create]] modId="flywheel" mandatory=true - versionRange="[1.18-0.5.0,1.18-0.5.1)" + versionRange="[1.18-0.5.1,1.18-0.5.2)" ordering="AFTER" side="BOTH" From 5f81b31fe4a4eac09d2f927035ce5fdfb78716f4 Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Mon, 3 Jan 2022 13:55:43 -0800 Subject: [PATCH 32/42] More Instancers --- .../com/simibubi/create/AllTileEntities.java | 3 + .../components/actors/PIInstance.java | 78 +++++++++++++++++++ .../components/actors/PSIActorInstance.java | 30 +++++++ .../components/actors/PSIInstance.java | 48 ++++++++++++ .../PortableStorageInterfaceMovement.java | 19 ++++- .../PortableStorageInterfaceRenderer.java | 5 +- .../components/deployer/DeployerInstance.java | 40 ++++------ .../contraptions/fluids/PumpCogInstance.java | 59 +++++++++++++- .../contraptions/fluids/PumpRenderer.java | 2 + .../contraptions/fluids/PumpTileEntity.java | 2 +- 10 files changed, 251 insertions(+), 35 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/actors/PIInstance.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/actors/PSIActorInstance.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/actors/PSIInstance.java diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 6bdae2758..cfc775bb3 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -11,6 +11,7 @@ import com.simibubi.create.content.contraptions.components.actors.DrillRenderer; import com.simibubi.create.content.contraptions.components.actors.DrillTileEntity; import com.simibubi.create.content.contraptions.components.actors.HarvesterRenderer; import com.simibubi.create.content.contraptions.components.actors.HarvesterTileEntity; +import com.simibubi.create.content.contraptions.components.actors.PSIInstance; import com.simibubi.create.content.contraptions.components.actors.PortableFluidInterfaceTileEntity; import com.simibubi.create.content.contraptions.components.actors.PortableItemInterfaceTileEntity; import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceRenderer; @@ -484,12 +485,14 @@ public class AllTileEntities { public static final BlockEntityEntry PORTABLE_STORAGE_INTERFACE = Create.registrate() .tileEntity("portable_storage_interface", PortableItemInterfaceTileEntity::new) + .instance(() -> PSIInstance::new) .validBlocks(AllBlocks.PORTABLE_STORAGE_INTERFACE) .renderer(() -> PortableStorageInterfaceRenderer::new) .register(); public static final BlockEntityEntry PORTABLE_FLUID_INTERFACE = Create.registrate() .tileEntity("portable_fluid_interface", PortableFluidInterfaceTileEntity::new) + .instance(() -> PSIInstance::new) .validBlocks(AllBlocks.PORTABLE_FLUID_INTERFACE) .renderer(() -> PortableStorageInterfaceRenderer::new) .register(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PIInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PIInstance.java new file mode 100644 index 000000000..ec28142a6 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PIInstance.java @@ -0,0 +1,78 @@ +package com.simibubi.create.content.contraptions.components.actors; + +import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.core.Materials; +import com.jozufozu.flywheel.core.materials.model.ModelData; +import com.simibubi.create.foundation.utility.AngleHelper; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.BlockState; + +public class PIInstance { + private final MaterialManager materialManager; + private final BlockState blockState; + private final BlockPos instancePos; + private final float angleX; + private final float angleY; + + private boolean lit; + ModelData middle; + ModelData top; + + public PIInstance(MaterialManager materialManager, BlockState blockState, BlockPos instancePos) { + this.materialManager = materialManager; + this.blockState = blockState; + this.instancePos = instancePos; + Direction facing = blockState.getValue(PortableStorageInterfaceBlock.FACING); + angleX = facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90; + angleY = AngleHelper.horizontalAngle(facing); + } + + public void init(boolean lit) { + this.lit = lit; + middle = materialManager.defaultSolid() + .material(Materials.TRANSFORMED) + .getModel(PortableStorageInterfaceRenderer.getMiddleForState(blockState, lit), blockState) + .createInstance(); + top = materialManager.defaultSolid() + .material(Materials.TRANSFORMED) + .getModel(PortableStorageInterfaceRenderer.getTopForState(blockState), blockState) + .createInstance(); + } + + public void beginFrame(float progress) { + middle.loadIdentity() + .translate(instancePos) + .centre() + .rotateY(angleY) + .rotateX(angleX) + .unCentre(); + + top.loadIdentity() + .translate(instancePos) + .centre() + .rotateY(angleY) + .rotateX(angleX) + .unCentre(); + + middle.translate(0, progress * 0.5f + 0.375f, 0); + top.translate(0, progress, 0); + + } + + public void tick(boolean lit) { + if (this.lit != lit) { + this.lit = lit; + materialManager.defaultSolid() + .material(Materials.TRANSFORMED) + .getModel(PortableStorageInterfaceRenderer.getMiddleForState(blockState, lit), blockState) + .stealInstance(middle); + } + } + + public void remove() { + middle.delete(); + top.delete(); + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PSIActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PSIActorInstance.java new file mode 100644 index 000000000..90d83d44e --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PSIActorInstance.java @@ -0,0 +1,30 @@ +package com.simibubi.create.content.contraptions.components.actors; + +import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; +import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; +import com.simibubi.create.foundation.utility.AnimationTickHolder; + +public class PSIActorInstance extends ActorInstance { + + private final PIInstance instance; + + public PSIActorInstance(MaterialManager materialManager, VirtualRenderWorld world, MovementContext context) { + super(materialManager, world, context); + + instance = new PIInstance(materialManager, context.state, context.localPos); + + instance.init(false); + instance.middle.setBlockLight(localBlockLight()); + instance.top.setBlockLight(localBlockLight()); + } + + @Override + public void beginFrame() { + PortableStorageInterfaceTileEntity psi = PortableStorageInterfaceRenderer.getTargetPSI(context); + instance.tick(psi != null && psi.isConnected()); + instance.beginFrame(psi == null ? 0f : psi.getExtensionDistance(AnimationTickHolder.getPartialTicks())); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PSIInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PSIInstance.java new file mode 100644 index 000000000..5ddcac06e --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PSIInstance.java @@ -0,0 +1,48 @@ +package com.simibubi.create.content.contraptions.components.actors; + +import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.api.instance.TickableInstance; +import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance; +import com.simibubi.create.foundation.utility.AnimationTickHolder; + +public class PSIInstance extends BlockEntityInstance implements DynamicInstance, TickableInstance { + + private final PIInstance instance; + + public PSIInstance(MaterialManager materialManager, PortableStorageInterfaceTileEntity tile) { + super(materialManager, tile); + + instance = new PIInstance(materialManager, blockState, getInstancePosition()); + } + + @Override + public void init() { + instance.init(isLit()); + } + + @Override + public void tick() { + instance.tick(isLit()); + } + + @Override + public void beginFrame() { + instance.beginFrame(blockEntity.getExtensionDistance(AnimationTickHolder.getPartialTicks())); + } + + @Override + public void updateLight() { + relight(pos, instance.middle, instance.top); + } + + @Override + public void remove() { + instance.remove(); + } + + private boolean isLit() { + return blockEntity.isConnected(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java index dde358fd1..647f5bf37 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java @@ -2,9 +2,14 @@ package com.simibubi.create.content.contraptions.components.actors; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + +import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.backend.Backend; import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; import com.simibubi.create.foundation.utility.VecHelper; @@ -30,11 +35,23 @@ public class PortableStorageInterfaceMovement extends MovementBehaviour { .getNormal()).scale(1.85f); } + @Override + public boolean hasSpecialInstancedRendering() { + return true; + } + + @Nullable + @Override + public ActorInstance createInstance(MaterialManager materialManager, VirtualRenderWorld simulationWorld, MovementContext context) { + return new PSIActorInstance(materialManager, simulationWorld, context); + } + @Override @OnlyIn(Dist.CLIENT) public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { - PortableStorageInterfaceRenderer.renderInContraption(context, renderWorld, matrices, buffer); + if (!Backend.isOn()) + PortableStorageInterfaceRenderer.renderInContraption(context, renderWorld, matrices, buffer); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceRenderer.java index 7c6439b7e..39ff32874 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceRenderer.java @@ -86,17 +86,16 @@ public class PortableStorageInterfaceRenderer extends SafeTileEntityRenderer getModel() { BlockState referenceState = blockEntity.getBlockState(); Direction facing = referenceState.getValue(BlockStateProperties.FACING); return getRotatingMaterial().getModel(AllBlockPartials.MECHANICAL_PUMP_COG, referenceState, facing); } + + @Override + public void remove() { + super.remove(); + + for (ModelData arrow : arrows) { + arrow.delete(); + } + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java index a8de02eb2..23e41b42a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java @@ -1,5 +1,6 @@ package com.simibubi.create.content.contraptions.fluids; +import com.jozufozu.flywheel.backend.Backend; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; @@ -26,6 +27,7 @@ public class PumpRenderer extends KineticTileEntityRenderer { protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); + if (Backend.canUseInstancing(te.getLevel())) return; if (!(te instanceof PumpTileEntity pump)) return; Vec3 rotationOffset = new Vec3(.5, 14 / 16f, .5); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java index 2bf7cbd9a..d984b5e0c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java @@ -74,7 +74,7 @@ public class PumpTileEntity extends KineticTileEntity { if (!isVirtual()) return; } - + // if (pressureUpdate) // updatePressureChange(); From 5910ad5a034ace7323b44faad68456ee71c1e822 Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Tue, 4 Jan 2022 14:11:42 -0800 Subject: [PATCH 33/42] Move Belt LightListener to inner class --- gradle.properties | 2 +- .../relays/belt/BeltRenderer.java | 4 +- .../relays/belt/BeltTileEntity.java | 142 ++++++++++-------- 3 files changed, 83 insertions(+), 65 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9cb801f80..bbc2bd277 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,7 @@ parchment_version = 2021.12.19 # dependency versions registrate_version = MC1.18-1.0.21 -flywheel_version = 1.18-0.5.1.38 +flywheel_version = 1.18-0.5.1.39 jei_minecraft_version = 1.18 jei_version = 9.0.0.40 diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java index 59eec3bb2..6a9aa20e6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java @@ -309,10 +309,10 @@ public class BeltRenderer extends SafeTileEntityRenderer { protected int getPackedLight(BeltTileEntity controller, float beltPos) { int segment = (int) Math.floor(beltPos) * 2; - if (controller.light == null || segment >= controller.light.length || segment < 0) + if (controller.lighter.light == null || segment >= controller.lighter.light.length || segment < 0) return 0; - return LightTexture.pack(controller.light[segment], controller.light[segment + 1]); + return LightTexture.pack(controller.lighter.light[segment], controller.lighter.light[segment + 1]); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index eaf885e9b..c5fad852a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -54,6 +54,7 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.client.model.data.ModelDataMap; import net.minecraftforge.client.model.data.ModelProperty; @@ -63,7 +64,7 @@ import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; -public class BeltTileEntity extends KineticTileEntity implements LightListener { +public class BeltTileEntity extends KineticTileEntity { public Map passengers; public Optional color; @@ -78,8 +79,8 @@ public class BeltTileEntity extends KineticTileEntity implements LightListener { public CompoundTag trackerUpdateTag; - // client - public byte[] light; + @OnlyIn(Dist.CLIENT) + public BeltLighter lighter; public static enum CasingType { NONE, ANDESITE, BRASS; @@ -119,11 +120,11 @@ public class BeltTileEntity extends KineticTileEntity implements LightListener { if (!isController()) return; - if (light == null && level.isClientSide) { - initializeLight(); - LightUpdater.get(level) - .addListener(this); - } + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { + if (beltLength > 0 && lighter == null) { + lighter = new BeltLighter(); + } + }); getInventory().tick(); @@ -230,8 +231,11 @@ public class BeltTileEntity extends KineticTileEntity implements LightListener { trackerUpdateTag = compound; index = compound.getInt("Index"); beltLength = compound.getInt("Length"); - if (prevBeltLength != beltLength) - light = null; + if (prevBeltLength != beltLength) { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { + lighter = null; + }); + } } if (isController()) @@ -535,43 +539,57 @@ public class BeltTileEntity extends KineticTileEntity implements LightListener { return state != null && state.hasProperty(BeltBlock.PART) && state.getValue(BeltBlock.PART) == BeltPart.START; } - public GridAlignedBB getVolume() { - BlockPos endPos = BeltHelper.getPositionForOffset(this, beltLength - 1); - GridAlignedBB bb = GridAlignedBB.from(worldPosition, endPos); - bb.fixMinMax(); - return bb; - } + /** + * Hide this behavior in an inner class to avoid loading LightListener on servers. + */ + @OnlyIn(Dist.CLIENT) + class BeltLighter implements LightListener { + // client + public byte[] light; - @Override - public ListenerStatus status() { - return remove ? ListenerStatus.REMOVE : ListenerStatus.OKAY; - } - - @Override - public void onLightUpdate(LightProvider world, LightLayer type, ImmutableBox changed) { - if (this.remove) - return; - if (this.level == null) - return; - - GridAlignedBB beltVolume = getVolume(); - - if (beltVolume.intersects(changed)) { - if (light == null) { - initializeLight(); - return; - } - - if (type == LightLayer.BLOCK) - updateBlockLight(); - - if (type == LightLayer.SKY) - updateSkyLight(); + public BeltLighter() { + initializeLight(); + LightUpdater.get(level) + .addListener(this); } - } - private void initializeLight() { - if (beltLength > 0) { + @Override + public GridAlignedBB getVolume() { + BlockPos endPos = BeltHelper.getPositionForOffset(BeltTileEntity.this, beltLength - 1); + GridAlignedBB bb = GridAlignedBB.from(worldPosition, endPos); + bb.fixMinMax(); + return bb; + } + + @Override + public ListenerStatus status() { + return remove ? ListenerStatus.REMOVE : ListenerStatus.OKAY; + } + + @Override + public void onLightUpdate(LightProvider world, LightLayer type, ImmutableBox changed) { + if (remove) + return; + if (level == null) + return; + + GridAlignedBB beltVolume = getVolume(); + + if (beltVolume.intersects(changed)) { + if (light == null) { + initializeLight(); + return; + } + + if (type == LightLayer.BLOCK) + updateBlockLight(); + + if (type == LightLayer.SKY) + updateSkyLight(); + } + } + + private void initializeLight() { light = new byte[beltLength * 2]; Vec3i vec = getBeltFacing().getNormal(); @@ -585,31 +603,31 @@ public class BeltTileEntity extends KineticTileEntity implements LightListener { pos.move(vec.getX(), verticality, vec.getZ()); } } - } - private void updateBlockLight() { - Vec3i vec = getBeltFacing().getNormal(); - BeltSlope slope = getBlockState().getValue(BeltBlock.SLOPE); - int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; + private void updateBlockLight() { + Vec3i vec = getBeltFacing().getNormal(); + BeltSlope slope = getBlockState().getValue(BeltBlock.SLOPE); + int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - MutableBlockPos pos = new MutableBlockPos(controller.getX(), controller.getY(), controller.getZ()); - for (int i = 0; i < beltLength * 2; i += 2) { - light[i] = (byte) level.getBrightness(LightLayer.BLOCK, pos); + MutableBlockPos pos = new MutableBlockPos(controller.getX(), controller.getY(), controller.getZ()); + for (int i = 0; i < beltLength * 2; i += 2) { + light[i] = (byte) level.getBrightness(LightLayer.BLOCK, pos); - pos.move(vec.getX(), verticality, vec.getZ()); + pos.move(vec.getX(), verticality, vec.getZ()); + } } - } - private void updateSkyLight() { - Vec3i vec = getBeltFacing().getNormal(); - BeltSlope slope = getBlockState().getValue(BeltBlock.SLOPE); - int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; + private void updateSkyLight() { + Vec3i vec = getBeltFacing().getNormal(); + BeltSlope slope = getBlockState().getValue(BeltBlock.SLOPE); + int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - MutableBlockPos pos = new MutableBlockPos(controller.getX(), controller.getY(), controller.getZ()); - for (int i = 1; i < beltLength * 2; i += 2) { - light[i] = (byte) level.getBrightness(LightLayer.SKY, pos); + MutableBlockPos pos = new MutableBlockPos(controller.getX(), controller.getY(), controller.getZ()); + for (int i = 1; i < beltLength * 2; i += 2) { + light[i] = (byte) level.getBrightness(LightLayer.SKY, pos); - pos.move(vec.getX(), verticality, vec.getZ()); + pos.move(vec.getX(), verticality, vec.getZ()); + } } } } From 2cdbdfa2182cf6b979b4395e9212305098b324ee Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Wed, 5 Jan 2022 11:12:26 -0800 Subject: [PATCH 34/42] Towards client-only flywheel - Fix nullpointer with belt lighter - Remove references to GridAlignedBB and ImmutableBox in Contraption --- .../structureMovement/Contraption.java | 24 ++++++++++--------- .../relays/belt/BeltRenderer.java | 7 +++--- .../relays/belt/BeltTileEntity.java | 21 ++++++++++++++-- 3 files changed, 35 insertions(+), 17 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 312afd33c..ca52109ea 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 @@ -25,8 +25,6 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.tuple.MutablePair; import org.apache.commons.lang3.tuple.Pair; -import com.jozufozu.flywheel.util.box.GridAlignedBB; -import com.jozufozu.flywheel.util.box.ImmutableBox; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllInteractionBehaviours; import com.simibubi.create.AllMovementBehaviours; @@ -1178,21 +1176,25 @@ public abstract class Contraption { int radius = (int) (Math.ceil(Math.sqrt(getRadius(blocks, axis)))); - GridAlignedBB betterBounds = GridAlignedBB.ofRadius(radius); + int maxX = radius + 2; + int maxY = radius + 2; + int maxZ = radius + 2; + int minX = -radius - 1; + int minY = -radius - 1; + int minZ = -radius - 1; - ImmutableBox contraptionBounds = GridAlignedBB.from(bounds); if (axis == Direction.Axis.X) { - betterBounds.setMaxX(contraptionBounds.getMaxX()); - betterBounds.setMinX(contraptionBounds.getMinX()); + maxX = (int) bounds.maxX; + minX = (int) bounds.minX; } else if (axis == Direction.Axis.Y) { - betterBounds.setMaxY(contraptionBounds.getMaxY()); - betterBounds.setMinY(contraptionBounds.getMinY()); + maxY = (int) bounds.maxY; + minY = (int) bounds.minY; } else if (axis == Direction.Axis.Z) { - betterBounds.setMaxZ(contraptionBounds.getMaxZ()); - betterBounds.setMinZ(contraptionBounds.getMinZ()); + maxZ = (int) bounds.maxZ; + minZ = (int) bounds.minZ; } - bounds = betterBounds.toAABB(); + bounds = new AABB(minX, minY, minZ, maxX, maxY, maxZ); } public void addExtraInventories(Entity entity) {} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java index 6a9aa20e6..b27ed9d8b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java @@ -25,7 +25,6 @@ import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; @@ -308,11 +307,11 @@ public class BeltRenderer extends SafeTileEntityRenderer { } protected int getPackedLight(BeltTileEntity controller, float beltPos) { - int segment = (int) Math.floor(beltPos) * 2; - if (controller.lighter.light == null || segment >= controller.lighter.light.length || segment < 0) + int segment = (int) Math.floor(beltPos); + if (controller.lighter == null || segment >= controller.lighter.lightSegments() || segment < 0) return 0; - return LightTexture.pack(controller.lighter.light[segment], controller.lighter.light[segment + 1]); + return controller.lighter.getPackedLight(segment); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index c5fad852a..78aa5d9f6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -35,6 +35,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemS import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; import com.simibubi.create.foundation.utility.NBTHelper; +import net.minecraft.client.renderer.LightTexture; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -544,8 +545,7 @@ public class BeltTileEntity extends KineticTileEntity { */ @OnlyIn(Dist.CLIENT) class BeltLighter implements LightListener { - // client - public byte[] light; + private byte[] light; public BeltLighter() { initializeLight(); @@ -553,6 +553,23 @@ public class BeltTileEntity extends KineticTileEntity { .addListener(this); } + /** + * Get the number of belt segments represented by the lighter. + * @return The number of segments. + */ + public int lightSegments() { + return light == null ? 0 : light.length / 2; + } + + /** + * Get the light value for a given segment. + * @param segment The segment to get the light value for. + * @return The light value. + */ + public int getPackedLight(int segment) { + return light == null ? 0 : LightTexture.pack(light[segment * 2], light[segment * 2 + 1]); + } + @Override public GridAlignedBB getVolume() { BlockPos endPos = BeltHelper.getPositionForOffset(BeltTileEntity.this, beltLength - 1); From 0ff67382eefd09f7b915586ebcf2c29218007903 Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Wed, 5 Jan 2022 22:03:37 -0800 Subject: [PATCH 35/42] Fix visual artifacts with contraptions while using opfine. - Fix darkening of tile entities while using shaders I think the buffers from the shadow pass were bleeding into the color pass. --- gradle.properties | 2 +- .../render/ContraptionRenderInfo.java | 2 +- .../structureMovement/render/FlwContraption.java | 2 +- .../render/SBBContraptionManager.java | 15 +++++++++------ .../create/foundation/render/SuperByteBuffer.java | 3 ++- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/gradle.properties b/gradle.properties index bbc2bd277..46a3cbd9d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,7 @@ parchment_version = 2021.12.19 # dependency versions registrate_version = MC1.18-1.0.21 -flywheel_version = 1.18-0.5.1.39 +flywheel_version = 1.18-0.5.1.40 jei_minecraft_version = 1.18 jei_version = 9.0.0.40 diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java index edbd00dd3..c9e18059f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderInfo.java @@ -34,7 +34,7 @@ public class ContraptionRenderInfo { AbstractContraptionEntity entity = contraption.entity; - visible = event.getClippingHelper().isVisible(entity.getBoundingBoxForCulling().inflate(2)); + visible = event.getFrustum().isVisible(entity.getBoundingBoxForCulling().inflate(2)); } public boolean isVisible() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java index cf2a561a7..42518e8f2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/FlwContraption.java @@ -92,7 +92,7 @@ public class FlwContraption extends ContraptionRenderInfo { if (!isVisible()) return; - instanceWorld.tileInstanceManager.beginFrame(SerialTaskEngine.INSTANCE, event.getInfo()); + instanceWorld.tileInstanceManager.beginFrame(SerialTaskEngine.INSTANCE, event.getCamera()); Vec3 cameraPos = event.getCameraPos(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/SBBContraptionManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/SBBContraptionManager.java index 971ef777d..ce34578b3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/SBBContraptionManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/SBBContraptionManager.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.re import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; import com.jozufozu.flywheel.event.RenderLayerEvent; +import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.foundation.render.SuperByteBuffer; @@ -21,7 +22,12 @@ public class SBBContraptionManager extends ContraptionRenderingWorld renderContraptionLayerSBB(event, info)); + RenderType type = event.getType(); + VertexConsumer consumer = event.buffers.bufferSource() + .getBuffer(type); + visible.forEach(info -> renderContraptionLayerSBB(info, type, consumer)); + + event.buffers.bufferSource().endBatch(type); } @Override @@ -38,9 +44,7 @@ public class SBBContraptionManager extends ContraptionRenderingWorld ContraptionRenderDispatcher.buildStructureBuffer(renderInfo.renderWorld, renderInfo.contraption, layer)); @@ -51,8 +55,7 @@ public class SBBContraptionManager extends ContraptionRenderingWorld, Translate Date: Fri, 7 Jan 2022 14:18:59 -0800 Subject: [PATCH 36/42] Fix crash rendering biome-tinted blocks on contraptions - Biome colors now line up with the world --- gradle.properties | 2 +- .../structureMovement/ContraptionWorld.java | 21 ++++++++++++++----- .../render/ContraptionRenderDispatcher.java | 2 +- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index 46a3cbd9d..c6bff3a9c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,7 @@ parchment_version = 2021.12.19 # dependency versions registrate_version = MC1.18-1.0.21 -flywheel_version = 1.18-0.5.1.40 +flywheel_version = 1.18-0.5.1.42 jei_minecraft_version = 1.18 jei_version = 9.0.0.40 diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java index 592b0a538..0699bfc0a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java @@ -5,6 +5,7 @@ import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; @@ -14,14 +15,24 @@ import net.minecraft.world.phys.Vec3; public class ContraptionWorld extends WrappedWorld { final Contraption contraption; + private final int minY; + private final int height; - public ContraptionWorld(Level world, Contraption contraption) { + public ContraptionWorld(Level world, Contraption contraption) { super(world); this.contraption = contraption; - } - @Override + minY = nextMultipleOf16(contraption.bounds.minY); + height = nextMultipleOf16(contraption.bounds.maxY) - minY; + } + + // https://math.stackexchange.com/questions/291468 + private static int nextMultipleOf16(double a) { + return (((Math.abs((int) a) - 1) | 15) + 1) * Mth.sign(a); + } + + @Override public BlockState getBlockState(BlockPos pos) { StructureTemplate.StructureBlockInfo blockInfo = contraption.getBlocks().get(pos); @@ -51,11 +62,11 @@ public class ContraptionWorld extends WrappedWorld { @Override public int getHeight() { - return getMinBuildHeight() * (-2); + return height; } @Override public int getMinBuildHeight() { - return - (int) contraption.bounds.getYsize(); + return minY; } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java index 1966cd557..b86d5261f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java @@ -106,7 +106,7 @@ public class ContraptionRenderDispatcher { public static VirtualRenderWorld setupRenderWorld(Level world, Contraption c) { ContraptionWorld contraptionWorld = c.getContraptionWorld(); - VirtualRenderWorld renderWorld = new VirtualRenderWorld(world, contraptionWorld.getHeight(), contraptionWorld.getMinBuildHeight()); + VirtualRenderWorld renderWorld = new VirtualRenderWorld(world, c.anchor, contraptionWorld.getHeight(), contraptionWorld.getMinBuildHeight()); renderWorld.setBlockEntities(c.presentTileEntities.values()); From 6d7ad08518d589c92cd10f8cf183199f23f3e8d8 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sat, 8 Jan 2022 13:57:21 +0100 Subject: [PATCH 37/42] Update Localization Readme.txt --- .../resources/assets/create/lang/Localization Readme.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/assets/create/lang/Localization Readme.txt b/src/main/resources/assets/create/lang/Localization Readme.txt index c573cbded..a34e557c3 100644 --- a/src/main/resources/assets/create/lang/Localization Readme.txt +++ b/src/main/resources/assets/create/lang/Localization Readme.txt @@ -4,7 +4,7 @@ Looking to contribute with a localization? Here's how: 1. Check if your language is already present in an outdated state: -https://github.com/Creators-of-Create/Create/blob/mc1.16/dev/src/generated/resources/assets/create/lang/unfinished +https://github.com/Creators-of-Create/Create/blob/mc1.18/dev/src/generated/resources/assets/create/lang/unfinished Shows generated lang files that are composed of any old translation file in the official lang folder as well as placeholder entries of new content added since. NOTICE: this is not the true lang folder, changes to the files in that directory will be lost as they are auto-generated templates. @@ -18,7 +18,7 @@ If your locale is present here, copy the file, and translate all entries that re If you couldn't find a started translation in the previous step: Grab a copy of the full standard localization file here: -https://github.com/Creators-of-Create/Create/blob/mc1.16/dev/src/generated/resources/assets/create/lang/en_us.json +https://github.com/Creators-of-Create/Create/blob/mc1.18/dev/src/generated/resources/assets/create/lang/en_us.json Rename your copied file to the locale it is targeting, and start making your translations by replacing the english text. Once you are finished, continue with step 3. @@ -27,7 +27,7 @@ https://github.com/Creators-of-Create/Create/blob/mc1.16/dev/src/generated/resou 3. Publishing your changes Any lang file you created or changed belongs into this folder: -https://github.com/Creators-of-Create/Create/blob/mc1.16/dev/src/main/resources/assets/create/lang +https://github.com/Creators-of-Create/Create/blob/mc1.18/dev/src/main/resources/assets/create/lang This is the lang folder you found this readme in. You can either open a pull request inserting your file for us, or get in contact on the feedback & help channel linked on Create's project page (CurseForge). NOTICE: when making PRs, always target the main branch unless your changes are exclusive to a different version of minecraft than the one the main branch is on. From 77eef2ab7c4f0fa2f017ae6c6595bd9b451458ab Mon Sep 17 00:00:00 2001 From: vyhi <75101424+vyhi@users.noreply.github.com> Date: Sat, 8 Jan 2022 10:02:08 -0300 Subject: [PATCH 38/42] Updates to pt_br.json by vyhi (#2420) --- .../assets/create/lang/unfinished/pt_br.json | 1996 +---------------- 1 file changed, 124 insertions(+), 1872 deletions(-) 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 b0084498d..200c07ed2 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -2,26 +2,18 @@ "_": "Missing Localizations: 1670", "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.acacia_window": "UNLOCALIZED: Acacia Window", - "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", "block.create.adjustable_chain_gearshift": "Correia Ajustável", "block.create.analog_lever": "Alavanca Analógica", "block.create.andesite_belt_funnel": "Funil de Esteira de Andesito", "block.create.andesite_casing": "Revestimento de Andesito", - "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": "Roda dentada revestida com andesito", + "block.create.andesite_encased_large_cogwheel": "Roda dentada grande revestida com andesito", "block.create.andesite_encased_shaft": "Eixo revestido com latão", - "block.create.andesite_funnel": "Funil de Andesito", - "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.andesite_funnel": "Funil de Andesito",, "block.create.andesite_tunnel": "Tunel de Andesito", - "block.create.asurine": "UNLOCALIZED: Asurine", - "block.create.asurine_pillar": "UNLOCALIZED: Asurine Pillar", "block.create.basin": "Bacia", "block.create.belt": "Esteira Mecânica", - "block.create.birch_window": "UNLOCALIZED: Birch Window", - "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", - "block.create.black_nixie_tube": "UNLOCALIZED: Black Nixie Tube", + "block.create.black_nixie_tube": "Tubo nixie preto", "block.create.black_sail": "Vela preta", "block.create.black_seat": "Assento preto", "block.create.black_toolbox": "Caixa de ferramentas preta", @@ -35,8 +27,8 @@ "block.create.brass_belt_funnel": "Funil de Esteira de Latão", "block.create.brass_block": "Bloco de Latão", "block.create.brass_casing": "Revestimento de Latão", - "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": "Roda dentada revestida com latão", + "block.create.brass_encased_large_cogwheel": "Roda dentada grande revestida com latão", "block.create.brass_encased_shaft": "Eixo Revestido com Latão", "block.create.brass_funnel": "Funil de Latão", "block.create.brass_tunnel": "Tunel de Latão", @@ -45,7 +37,6 @@ "block.create.brown_seat": "Assento marrom", "block.create.brown_toolbox": "Caixa de ferramentas marrom", "block.create.brown_valve_handle": "Válvula marrom", - "block.create.calcite_pillar": "UNLOCALIZED: Calcite Pillar", "block.create.cart_assembler": "Montador de Carrinho de Mina", "block.create.chocolate": "Chocolate", "block.create.chute": "Calha", @@ -56,170 +47,33 @@ "block.create.controller_rail": "Trilho Controlador", "block.create.copper_backtank": "Tanque Traseiro de Cobre", "block.create.copper_casing": "Revestimento de Cobre", - "block.create.copper_shingle_slab": "UNLOCALIZED: Copper Shingle Slab", - "block.create.copper_shingle_stairs": "UNLOCALIZED: Copper Shingle Stairs", - "block.create.copper_shingles": "UNLOCALIZED: Copper Shingles", - "block.create.copper_tile_slab": "UNLOCALIZED: Copper Tile Slab", - "block.create.copper_tile_stairs": "UNLOCALIZED: Copper Tile Stairs", - "block.create.copper_tiles": "UNLOCALIZED: Copper Tiles", "block.create.copper_valve_handle": "Válvula de Cobre", "block.create.creative_crate": "Caixa Criativa", "block.create.creative_fluid_tank": "Tanque de Fluidos Criativo", "block.create.creative_motor": "Motor Criativo", - "block.create.crimsite": "UNLOCALIZED: Crimsite", - "block.create.crimsite_pillar": "UNLOCALIZED: Crimsite Pillar", - "block.create.crimson_window": "UNLOCALIZED: Crimson Window", - "block.create.crimson_window_pane": "UNLOCALIZED: Crimson Window Pane", "block.create.crushing_wheel": "Roda de Moer", - "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", - "block.create.cuckoo_clock": "Relógio Cuckok", - "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.cuckoo_clock": "Relógio Cuckoo", "block.create.cyan_nixie_tube": "Tubo nixie ciano", "block.create.cyan_sail": "Vela ciano", "block.create.cyan_seat": "Assento ciano", "block.create.cyan_toolbox": "caixa de ferramentas ciano", "block.create.cyan_valve_handle": "Válvula ciano", - "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", - "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", - "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", - "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", + "block.create.deepslate_zinc_ore": "Minério de zinco de ardósia", "block.create.deployer": "Implantador", "block.create.depot": "Depósito", - "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", - "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", "block.create.encased_chain_drive": "Correia Revestida", "block.create.encased_fan": "Ventilador Revestida", "block.create.encased_fluid_pipe": "Cano de Fluidos Revestido", - "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.fluid_pipe": "Cano de Fluido", "block.create.fluid_tank": "Tanque de fluido", "block.create.fluid_valve": "Válvula", "block.create.flywheel": "Volante de inércia", - "block.create.framed_glass": "UNLOCALIZED: Framed Glass", - "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", "block.create.furnace_engine": "Motor de Fornalha", "block.create.gantry_carriage": "Carruagem de Pórtico", "block.create.gantry_shaft": "Eixo de Pórtico", "block.create.gearbox": "Caixa de Transmissão", "block.create.gearshift": "Câmbio", "block.create.glass_fluid_pipe": "Cano de Fluido de Vidro", - "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", "block.create.gray_nixie_tube": "Tubo nixie cinza", "block.create.gray_sail": "Vela cinza", "block.create.gray_seat": "Assento cinza", @@ -233,28 +87,9 @@ "block.create.hand_crank": "Manivela", "block.create.haunted_bell": "Sino assombrado", "block.create.honey": "Mel", - "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", - "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", "block.create.hose_pulley": "Polia de Mangueira", "block.create.item_drain": "Dreno de Item", - "block.create.item_vault": "UNLOCALIZED: Item Vault", - "block.create.jungle_window": "UNLOCALIZED: Jungle Window", - "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "Roda Dentada Grande", - "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", - "block.create.layered_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": "UNLOCALIZED: Layered Diorite", - "block.create.layered_dripstone": "UNLOCALIZED: Layered Dripstone", - "block.create.layered_granite": "UNLOCALIZED: Layered Granite", - "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", - "block.create.layered_ochrum": "UNLOCALIZED: Layered Ochrum", - "block.create.layered_scorchia": "UNLOCALIZED: Layered Scorchia", - "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", - "block.create.layered_tuff": "UNLOCALIZED: Layered Tuff", - "block.create.layered_veridium": "UNLOCALIZED: Layered Veridium", + "block.create.item_vault": "Cofre de itens", "block.create.lectern_controller": "Controle de Atril", "block.create.light_blue_nixie_tube": "tubo nixie azul claro", "block.create.light_blue_sail": "Vela azul claro", @@ -292,28 +127,16 @@ "block.create.mechanical_press": "Prensa Mecânica", "block.create.mechanical_pump": "Bomba Mecânica", "block.create.mechanical_saw": "Serra Mecânica", - "block.create.metal_bracket": "UNLOCALIZED: Metal Bracket", + "block.create.metal_bracket": "Suporte de metal", "block.create.millstone": "Pedra de Moer", "block.create.minecart_anchor": "Ancóra de carrinho de Mina", "block.create.mysterious_cuckoo_clock": "Relógio cuckoo", "block.create.nixie_tube": "Tubo Nixie", "block.create.nozzle": "Bocal", - "block.create.oak_window": "UNLOCALIZED: Oak Window", - "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", - "block.create.ochrum": "UNLOCALIZED: Ochrum", - "block.create.ochrum_pillar": "UNLOCALIZED: Ochrum Pillar", "block.create.orange_sail": "Vela laranja", "block.create.orange_seat": "Assento laranja", "block.create.orange_toolbox": "Caixa de ferramentas laranja", "block.create.orange_valve_handle": "Válvula laranja", - "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", - "block.create.ornate_iron_window_pane": "UNLOCALIZED: 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": "Sino peculiar", "block.create.pink_nixie_tube": "Tubo nixie rosa", "block.create.pink_sail": "Vela rosa", @@ -321,68 +144,11 @@ "block.create.pink_toolbox": "Caixa de ferramentas rosa", "block.create.pink_valve_handle": "Válvula rosa", "block.create.piston_extension_pole": "Vara de Extensão do Pistão", - "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": "UNLOCALIZED: Portable Fluid Interface", + "block.create.portable_fluid_interface": "Interface de fluidos portátil", "block.create.portable_storage_interface": "Interface de armazenamento portátil", "block.create.powered_latch": "UNLOCALIZED: Powered Latch", - "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", "block.create.pulley_magnet": "Imã da Polia", - "block.create.pulse_extender": "UNLOCALIZED: Pulse Extender", + "block.create.pulse_extender": "Extensor de pulso", "block.create.pulse_repeater": "Repetidor de Pulso", "block.create.purple_nixie_tube": "Tubo nixie roxo", "block.create.purple_sail": "Vela roxo", @@ -390,7 +156,7 @@ "block.create.purple_toolbox": "Caixa de ferramentas roxa", "block.create.purple_valve_handle": "válvula roxa", "block.create.radial_chassis": "Chassis Radial", - "block.create.raw_zinc_block": "UNLOCALIZED: Block of Raw Zinc", + "block.create.raw_zinc_block": "Bloco de zinco bruto", "block.create.red_nixie_tube": "Tubo nixie vermelho", "block.create.red_sail": "Vela vermelha", "block.create.red_seat": "Assento vermelho", @@ -401,133 +167,34 @@ "block.create.refined_radiance_casing": "Revestimento Brilhante", "block.create.rope": "Corda", "block.create.rope_pulley": "Polia", - "block.create.rotation_speed_controller": "Controlador de Velocidade Rotacionalr", + "block.create.rotation_speed_controller": "Controlador de Velocidade Rotacional", "block.create.sail_frame": "moldura de vela", "block.create.schematic_table": "Mesa de Esquema", "block.create.schematicannon": "Canhão de Esquema", - "block.create.scorchia": "UNLOCALIZED: Scorchia", - "block.create.scorchia_pillar": "UNLOCALIZED: Scorchia Pillar", - "block.create.scoria": "UNLOCALIZED: Scoria", - "block.create.scoria_pillar": "UNLOCALIZED: Scoria Pillar", "block.create.secondary_linear_chassis": "Chassis linear secundário", "block.create.sequenced_gearshift": "Câmbio sequenciado", "block.create.shadow_steel_casing": "Revestiment das Sombras", "block.create.shaft": "Eixo", - "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_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_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": "calha Inteligente", "block.create.smart_fluid_pipe": "Cano de Fluidos Inteligente", "block.create.speedometer": "Velocímetro", - "block.create.spout": "UNLOCALIZED: Spout", - "block.create.spruce_window": "UNLOCALIZED: Spruce Window", - "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", + "block.create.spout": "Bica", "block.create.sticker": "Adesivo", "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", "block.create.stockpile_switch": "Disjuntor de Armazenamento", "block.create.stressometer": "Estressómetro", "block.create.tiled_glass": "Vidro Entalhado", "block.create.tiled_glass_pane": "Vidraça Entalhada", - "block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar", "block.create.turntable": "Mesa giratória", - "block.create.veridium": "UNLOCALIZED: Veridium", - "block.create.veridium_pillar": "UNLOCALIZED: Veridium Pillar", - "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", - "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", - "block.create.warped_window": "UNLOCALIZED: Warped Window", - "block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane", "block.create.water_wheel": "Roda de Água", - "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": "UNLOCALIZED: Weighted Ejector", + "block.create.weighted_ejector": "Ejetor ´ponderado", "block.create.white_nixie_tube": "Tubo nixie branco", "block.create.white_sail": "Vela branca", "block.create.white_seat": "Assento branco", "block.create.white_toolbox": "Caixa de ferramentas branca", "block.create.white_valve_handle": "Válvula branca", "block.create.windmill_bearing": "Rolamento de moinho", - "block.create.wooden_bracket": "UNLOCALIZED: Wooden Bracket", + "block.create.wooden_bracket": "Suporte de madeira", "block.create.yellow_nixie_tube": "Tubo nixie amarelo", "block.create.yellow_sail": "Vela amarela", "block.create.yellow_seat": "Assento amarelo", @@ -569,7 +236,7 @@ "item.create.copper_backtank": "Tanque Traseiro", "item.create.copper_nugget": "Pepita de Cobre", "item.create.copper_sheet": "Chapa de Cobre", - "item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover", + "item.create.crafter_slot_cover": "Cobertura do slot de fabricador", "item.create.crafting_blueprint": "Esquema de Fabricação", "item.create.creative_blaze_cake": "Bolo de Blaze Criativo", "item.create.crushed_aluminum_ore": "Minério de Alumínio Esmagado", @@ -591,7 +258,7 @@ "item.create.electron_tube": "Tubo de Elétron", "item.create.empty_blaze_burner": "Queimador de Blaze Vazio", "item.create.empty_schematic": "Esquema vazio", - "item.create.experience_nugget": "UNLOCALIZED: Nugget of Experience", + "item.create.experience_nugget": "Pepita de experiencia", "item.create.extendo_grip": "Extensão de Pegador", "item.create.filter": "Filtro", "item.create.furnace_minecart_contraption": "Engenhoca de Carrinho de Mina com Fornalha", @@ -608,11 +275,11 @@ "item.create.minecart_contraption": "Engenhoca de Carrino de Mina", "item.create.minecart_coupling": "Acoplamento de Carrinho de Mina", "item.create.polished_rose_quartz": "Quartzo Rosa Polido", - "item.create.potato_cannon": "Canhão de Batata", + "item.create.potato_cannon": "Canhão de Batata", "item.create.powdered_obsidian": "Pó de Obsidiana", "item.create.precision_mechanism": "Mecanismo de Precisão", "item.create.propeller": "Hélice", - "item.create.raw_zinc": "UNLOCALIZED: Raw Zinc", + "item.create.raw_zinc": "Zinco bruto", "item.create.red_sand_paper": "Lixa Vermelha", "item.create.refined_radiance": "Luz Refinada", "item.create.rose_quartz": "Quartzo Rosa", @@ -623,7 +290,7 @@ "item.create.super_glue": "Super Cola", "item.create.sweet_roll": "Rolinho Doce", "item.create.tree_fertilizer": "Fertilizante de Árvore", - "item.create.vertical_gearbox": "Caixa de Transmissão Verticla", + "item.create.vertical_gearbox": "Caixa de Transmissão Vertical", "item.create.wand_of_symmetry": "Varinha de Simetria", "item.create.wheat_flour": "Farinha de trigo", "item.create.whisk": "Batedeira", @@ -636,7 +303,7 @@ "advancement.create.root": "Bem vindo a Create", "advancement.create.root.desc": "É hora de construir engenhocas maravilhosas", - "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", + "advancement.create.andesite_alloy": "Alinterações Em abundância", "advancement.create.andesite_alloy.desc": "Materiais do Create tem nomes estranhos, a liga de andesito é um deles.", "advancement.create.its_alive": "Esta vivo!", "advancement.create.its_alive.desc": "Assista o seu primeiro componente cinético rodar.", @@ -646,60 +313,58 @@ "advancement.create.overstressed.desc": "Experience os limites da tensão.", "advancement.create.belt": "Correia de alga", "advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecanica.", - "advancement.create.tunnel": "UNLOCALIZED: Take cover!", - "advancement.create.tunnel.desc": "UNLOCALIZED: Embellish your mechanical belt with a Tunnel.", + "advancement.create.tunnel": "Pegue cover!", + "advancement.create.tunnel.desc": "Embeleze suas esteiras mecânicas com um tunel.", "advancement.create.splitter_tunnel": "Divida e Conquiste", "advancement.create.splitter_tunnel.desc": "Crie um divisor com um grupo de túneis de latão.", "advancement.create.chute": "Caindo", "advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.", "advancement.create.upward_chute": "Abdução aéria", "advancement.create.upward_chute.desc": "Assista um item voar para cima numa calha com ventilador.", - "advancement.create.belt_funnel": "UNLOCALIZED: Funnels' Flappy Danglers", "advancement.create.belt_funnel.desc": "Coloque um funil lateral em cima de uma esteira ou depósito para criar um tipo especial.", "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", - "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two belt mounted funnels kiss.", - "advancement.create.fan": "UNLOCALIZED: Mechanical Airbender", - "advancement.create.fan.desc": "UNLOCALIZED: Ride the stream of air provided by an Encased Fan.", - "advancement.create.fan_lava": "UNLOCALIZED: Geothermal Space Heater", - "advancement.create.fan_lava.desc": "UNLOCALIZED: Get caught in a stream of air that smelts things.", - "advancement.create.fan_water": "UNLOCALIZED: Wacky Washing", - "advancement.create.fan_water.desc": "UNLOCALIZED: Get caught in a stream of air that washes things.", - "advancement.create.fan_smoke": "UNLOCALIZED: Mechanical Bellows", - "advancement.create.fan_smoke.desc": "UNLOCALIZED: Get caught in a stream of air that smokes items.", - "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", - "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", - "advancement.create.goggles": "UNLOCALIZED: Stress-O-Vision", - "advancement.create.goggles.desc": "UNLOCALIZED: Create some Engineer's Goggles to aid you in getting more kinetic information from components.", - "advancement.create.speedometer": "UNLOCALIZED: But How Fast Exactly?", - "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", - "advancement.create.stressometer": "UNLOCALIZED: But How Stressed Exactly?", - "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", - "advancement.create.aesthetics": "UNLOCALIZED: Boom, Aesthetics!", - "advancement.create.aesthetics.desc": "UNLOCALIZED: Place brackets on a shaft, pipe and cogwheel.", - "advancement.create.reinforced": "UNLOCALIZED: Boom, Reinforced!", - "advancement.create.reinforced.desc": "UNLOCALIZED: Use fitting casing blocks on a shaft, pipe and mechanical belt.", - "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", - "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", - "advancement.create.chocolate_wheel": "UNLOCALIZED: Tasteful power", - "advancement.create.chocolate_wheel.desc": "UNLOCALIZED: Run a Water Wheel with molten Chocolate.", - "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", - "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", - "advancement.create.cuckoo": "UNLOCALIZED: Is it time?", - "advancement.create.cuckoo.desc": "UNLOCALIZED: Witness a cuckhoo clock announce bedtime.", - "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", - "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone.", - "advancement.create.windmill": "UNLOCALIZED: A mild Breeze", - "advancement.create.windmill.desc": "UNLOCALIZED: Assemble a windmill.", - "advancement.create.maxed_windmill": "UNLOCALIZED: A strong breeze", - "advancement.create.maxed_windmill.desc": "UNLOCALIZED: Assemble a windmill of maximum strength.", + "advancement.create.fan": "Dobrador de ar mecânico", + "advancement.create.fan.desc": "Pegue uma carona no fluxo de ar provido pelo ventilador revestido.", + "advancement.create.fan_lava": "Aquecedor de espaço geotermal", + "advancement.create.fan_lava.desc": "Seja pego pelo fluxo de ar que fundi coisas.", + "advancement.create.fan_water": "Lavagem maluca", + "advancement.create.fan_water.desc": "Seja pego no fluxo de ar que lava coisas.", + "advancement.create.fan_smoke": "Fole mecânico", + "advancement.create.fan_smoke.desc": "Seja pego no fluxo de ar que defuma coisas.", + "advancement.create.wrench": "Configurado convenientemente", + "advancement.create.wrench.desc": "Crie a chave inglesa para ajuda-lo em construi suas engenhocas.", + "advancement.create.goggles": "Visão do stress", + "advancement.create.goggles.desc": "Crie o óculos de engenheiro para ajuda-lo a conseguir mais informações cineticas dos conponentes.", + "advancement.create.speedometer": "Mas quão rapido exatamente?", + "advancement.create.speedometer.desc": "Coloque e energise o velocimetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", + "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.aesthetics": "Boom, estética!", + "advancement.create.aesthetics.desc": "Coloque suportes em eixos, canos e rodas dentadas.", + "advancement.create.reinforced": "Boom, Reinforçado!", + "advancement.create.reinforced.desc": "Use um bloco de revestimento apropriado em um eixo, cano e esteira mecânica.", + "advancement.create.water_wheel": "aproveitamento hidráulico", + "advancement.create.water_wheel.desc": "Coloque uma roda de água e tente conseguir gira-la!", + "advancement.create.chocolate_wheel": "Poder delicioso", + "advancement.create.chocolate_wheel.desc": "Gire uma roda de água com chocolate derretido.", + "advancement.create.lava_wheel": "Roda de magma", + "advancement.create.lava_wheel.desc": "Isso não deveria ter funcionado.", + "advancement.create.cuckoo": "É a hora?", + "advancement.create.cuckoo.desc": "Veja um relógio cuckoo anunciar a hora de dormir.", + "advancement.create.millstone": "Moedor portátil", + "advancement.create.millstone.desc": "Coloque e energize uma pedra de moer + "advancement.create.windmill": "Uma brisa moderada + "advancement.create.windmill.desc": "Monte um moinho de vento + "advancement.create.maxed_windmill": "Uma brisa forte + "advancement.create.maxed_windmill.desc": "Monte um moinho de vento com força maxima.", "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_drill": "Mineradores estacionarios", "advancement.create.mechanical_drill.desc": "coloque e energize uma broca mecânica.", - "advancement.create.press": "UNLOCALIZED: Press Goes 'Bonk!'", - "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Sheets.", + "advancement.create.press": "Prensa faz 'Bonk!'", + "advancement.create.press.desc": "Energize uma prensa mecânica e usa-lá para criar algumas chapas.", "advancement.create.polished_rose_quartz": "Diamantes rosa", - "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", + "advancement.create.polished_rose_quartz.desc": "Use uma lixa para polir um quartzo rosa até este ficar transparente.", "advancement.create.electron_tube": "Beep Boop", "advancement.create.electron_tube.desc": "Faça alguns tubos de elétron, uteis para fabricar maquinas menos primitivas.", "advancement.create.mechanical_saw": "Cortadores estacionarios", @@ -717,71 +382,67 @@ "advancement.create.brass_casing": "a era do latão", "advancement.create.brass_casing.desc": "Use o recentemente obtido latão e um pouco de madeira para criar um revestimento mais avançado.", "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 cobrepper Casings.", - "advancement.create.spout": "UNLOCALIZED: Sploosh", - "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid item being filled using a spout.", - "advancement.create.spout_potion": "UNLOCALIZED: Global Brewery", - "advancement.create.spout_potion.desc": "UNLOCALIZED: Watch a spout fill a bottle with potion fluid.", - "advancement.create.chocolate": "UNLOCALIZED: A world of Imagination", - "advancement.create.chocolate.desc": "UNLOCALIZED: Obtain a bucket of Molten Chocolate.", - "advancement.create.item_drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.item_drain.desc": "UNLOCALIZED: Watch a fluid item being emptied by an item drain.", - "advancement.create.chained_item_drain": "UNLOCALIZED: Let it roll!", - "advancement.create.chained_item_drain.desc": "UNLOCALIZED: Watch an item roll across several chained item drains.", - "advancement.create.glass_pipe": "UNLOCALIZED: Flow Spy", - "advancement.create.glass_pipe.desc": "UNLOCALIZED: Watch fluid propagate through a windowed fluid pipe. Straight fluid pipes become windowed when a wrench is used on them.", - "advancement.create.pipe_collision": "UNLOCALIZED: Never cross the Streams!", - "advancement.create.pipe_collision.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network.", - "advancement.create.pipe_spill": "UNLOCALIZED: There's a leak!", - "advancement.create.pipe_spill.desc": "UNLOCALIZED: Watch an open end of a pipe take or place fluids into the world.", - "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.infinite_water": "UNLOCALIZED: Draining the Ocean", - "advancement.create.infinite_water.desc": "UNLOCALIZED: Pump from a body of Water large enough to be considered Infinite.", - "advancement.create.infinite_lava": "UNLOCALIZED: Draining the Planets' Core", - "advancement.create.infinite_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered Infinite.", - "advancement.create.infinite_chocolate": "UNLOCALIZED: Drowning in Imagination", - "advancement.create.infinite_chocolate.desc": "UNLOCALIZED: Pump from a body of Molten Chocolate large enough to be considered Infinite.", - "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", - "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters.", - "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption o'clock", - "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a Structure mounted on a Clockwork Bearing.", - "advancement.create.nixie_tube": "UNLOCALIZED: Signs of Style", - "advancement.create.nixie_tube.desc": "UNLOCALIZED: Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", - "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "UNLOCALIZED: Engineers hate him!", - "advancement.create.speed_controller.desc": "UNLOCALIZED: Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "UNLOCALIZED: Heart of the Factory", - "advancement.create.flywheel.desc": "UNLOCALIZED: Successfully connect an engine to the Flywheel.", - "advancement.create.overstress_flywheel": "UNLOCALIZED: High levels of Stress", - "advancement.create.overstress_flywheel.desc": "UNLOCALIZED: Overstress a Furnace Engine.", - "advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities", - "advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism.", - "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands!", - "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "UNLOCALIZED: Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", - "advancement.create.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_blaze_burner": "UNLOCALIZED: Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner.", - "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", - "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", - "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", - "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", - "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", - "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", - "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", - "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", - "advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!", - "advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon.", - "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", - "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", - "advancement.create.eob": "UNLOCALIZED: End of Beta", - "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", + "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.spout_potion.desc": "Assista uma bica encher uma garrafa com uma poção.", + "advancement.create.chocolate": "Um mundo de imaginação", + "advancement.create.chocolate.desc": "Obtenha um balde de chocolate.", + "advancement.create.item_drain": "Cambalhota de drenação", + "advancement.create.item_drain.desc": "assista um item de fluido ser esvaziado por um dreno de item.", + "advancement.create.chained_item_drain": "Deixe rolar!", + "advancement.create.chained_item_drain.desc": "assista um item rolar através de varios drenos consecutivos.", + "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.pipe_collision": "Nunca cruze o fluxo!", + "advancement.create.pipe_collision.desc": "Assista dois fluidos se encontrarem na sua rede de canos.", + "advancement.create.pipe_spill": "Tem um vazamento!", + "advancement.create.pipe_spill.desc": "Assista a extremidade aberta de um cano pegar ou colocar um fluido no mundo.", + "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.infinite_water": "Drenando o oceano", + "advancement.create.infinite_water.desc": "Bombeie de um corpo de água grande o bastante para ser considerado infinito.", + "advancement.create.infinite_lava": "Drenando o nucleo do planeta", + "advancement.create.infinite_lava.desc": "Bombeie de um corpo de lava grande o bastante para ser considerado infinito.", + "advancement.create.infinite_chocolate": "Afogando em imaginação", + "advancement.create.infinite_chocolate.desc": "Bombeie de um corpo de chocolate grande o bastante para ser considerado infinito.", + "advancement.create.crafter": "Montagem automatica", + "advancement.create.crafter.desc": "Coloque e energize alguns fabricadores mecânicos.", + "advancement.create.clockwork_bearing": "Hora da engenhoca", + "advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.", + "advancement.create.nixie_tube": "Placas estilosas", + "advancement.create.nixie_tube.desc": "Obtenha e coloque um par de tubos nixie.", + "advancement.create.deployer": "Cutuque, coloque e ataque", + "advancement.create.deployer.desc": "coloque e energize um implantador, o reflexo perfeito de voce mesmo.", + "advancement.create.speed_controller": "Engenheiros odiam ele!", + "advancement.create.speed_controller.desc": "Coloque um Controlador de velocidade rotacional, o dispositivo ultimato para mudança de marcha.", + "advancement.create.flywheel": "Coração da fabrica", + "advancement.create.flywheel.desc": "Sucessivamente conecte um motor de fornalha a um volante de inércia.", + "advancement.create.overstress_flywheel": "Altos niveis de stress", + "advancement.create.overstress_flywheel.desc": "Emperre um motor de fornalha.", + "advancement.create.precision_mechanism": "Curiosidades complexas", + "advancement.create.precision_mechanism.desc": "Monte um mecanismo de precisão.", + "advancement.create.mechanical_arm": "Mâos ocupadas!", + "advancement.create.mechanical_arm.desc": "Fabrique um braço mecânico,selecione as entradas e saidas,Coloque e energize o; em seguida assista como elo faz todo o trabalho para você.", + "advancement.create.musical_arm": "toque minha musica!", + "advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.", + "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.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.crushing_wheel": "Par de gigantes", + "advancement.create.crushing_wheel.desc": "Crie algumas rodas de moer para triturar alguns materiais eficientemente.", + "advancement.create.blaze_cake.desc": "Asse para o seu queimador de blaze um bolo especial.", + "advancement.create.wand_of_symmetry": "Espelhos radiantes", + "advancement.create.wand_of_symmetry.desc": "Fabrique uma varinha de simetria.", + "advancement.create.extendo_grip": "Boioioing!", + "advancement.create.extendo_grip.desc": "Apossar-se de uma extensão de pegador.", + "advancement.create.potato_cannon": "Fwoomp!", + "advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.", + "advancement.create.dual_extendo_grip": "A era ultimata do boing", + "advancement.create.dual_extendo_grip.desc": "Empunhe duas extensões de pegador para ter alcance super humano.", + "advancement.create.eob": "Fim do beta", + "advancement.create.eob.desc": "Espere mais conteudo aqui no futuro. <3", "_": "->------------------------] UI & Messages [------------------------<-", @@ -804,19 +465,7 @@ "death.attack.create.cuckoo_clock_explosion": "%1$s foi explodido por relógio cuco adulterado", "death.attack.create.cuckoo_clock_explosion.player": "%1$s foi explodido por relógio cuco adulterado", - "create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", - "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.ponder_index": "UNLOCALIZED: Ponder Index", - "create.menu.only_ingame": "UNLOCALIZED: Available in the Pause Menu", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "Moendo", - "create.recipe.milling": "UNLOCALIZED: Milling", "create.recipe.fan_washing": "Lavagem em massa", "create.recipe.fan_washing.fan": "Ventilador atrás de água", "create.recipe.fan_smoking": "Defumação em massa", @@ -826,34 +475,8 @@ "create.recipe.pressing": "Prensa Mecânica", "create.recipe.mixing": "Misturando", "create.recipe.deploying": "Implantando", - "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", - "create.recipe.automatic_brewing": "UNLOCALIZED: Automated Brewing", "create.recipe.packing": "Compactando", - "create.recipe.automatic_packing": "UNLOCALIZED: Automated Packing", "create.recipe.sawing": "UNLOCALIZED: Sawing", - "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", - "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", - "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", - "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", - "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", - "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", - "create.recipe.draining": "UNLOCALIZED: Item Draining", - "create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly", - "create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s", - "create.recipe.assembly.step": "UNLOCALIZED: Step %1$s:", - "create.recipe.assembly.progress": "UNLOCALIZED: Progress: %1$s/%2$s", - "create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press", - "create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s", - "create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s", - "create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw", - "create.recipe.assembly.repeat": "UNLOCALIZED: Repeat Sequence %1$s Times", - "create.recipe.assembly.junk": "UNLOCALIZED: Random salvage", - "create.recipe.processing.chance": "UNLOCALIZED: %1$s%% Chance", - "create.recipe.deploying.not_consumed": "UNLOCALIZED: Not Consumed", - "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", - "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", - "create.recipe.heat_requirement.superheated": "UNLOCALIZED: Super-Heated", "create.generic.range": "Área", "create.generic.radius": "Raio", @@ -879,24 +502,13 @@ "create.action.discard": "Descartar", "create.keyinfo.toolmenu": "Menu Focal da Ferramenta", - "create.keyinfo.toolbelt": "UNLOCALIZED: Access Nearby Toolboxes", - "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", - "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", "create.gui.scrollInput.defaultTitle": "Escolha uma Opção:", "create.gui.scrollInput.scrollToModify": "Role o mouse para Modificar", "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", "create.gui.scrollInput.scrollToSelect": "Role o mouse para Selecionar", - "create.gui.scrollInput.shiftScrollsFaster": "UNLOCALIZED: Shift to Scroll Faster", "create.gui.toolmenu.focusKey": "Segure [%1$s] para Focar", "create.gui.toolmenu.cycle": "[SCROLL] para Circular", - - "create.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.gui.symmetryWand.mirrorType": "Espelhar", "create.gui.symmetryWand.orientation": "Orientação", @@ -910,125 +522,16 @@ "create.orientation.alongZ": "Através de Z", "create.orientation.alongX": "Através de X", - "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Blockzapper", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", - "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", - "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", - "create.gui.terrainzapper.placement.inserted": "UNLOCALIZED: Inserted", - "create.gui.terrainzapper.brush": "UNLOCALIZED: Brush", - "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", - "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", - "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", - "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", - "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", - "create.gui.terrainzapper.tool.replace": "UNLOCALIZED: Replace", - "create.gui.terrainzapper.tool.clear": "UNLOCALIZED: Clear", - "create.gui.terrainzapper.tool.overlay": "UNLOCALIZED: Overlay", - "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", - - "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", - "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", - "create.minecart_coupling.no_loops": "UNLOCALIZED: Couplings cannot form a loop", - "create.minecart_coupling.removed": "UNLOCALIZED: Removed all couplings from minecart", - "create.minecart_coupling.too_far": "UNLOCALIZED: Minecarts are too far apart", - - "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", - "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", - "create.contraptions.movement_mode.move_place_returned": "UNLOCALIZED: Place only in Starting Position", - "create.contraptions.movement_mode.move_never_place": "UNLOCALIZED: Place only when Anchor Destroyed", - "create.contraptions.movement_mode.rotate_place": "UNLOCALIZED: Always Place when Stopped", - "create.contraptions.movement_mode.rotate_place_returned": "UNLOCALIZED: Only Place near Initial Angle", - "create.contraptions.movement_mode.rotate_never_place": "UNLOCALIZED: Only Place when Anchor Destroyed", - "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", - "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", - "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", - "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", - "create.contraptions.windmill.rotation_direction": "UNLOCALIZED: Rotation Direction", - "create.contraptions.clockwork.clock_hands": "UNLOCALIZED: Clock Hands", - "create.contraptions.clockwork.hour_first": "UNLOCALIZED: Hour hand first", - "create.contraptions.clockwork.minute_first": "UNLOCALIZED: Minute hand first", - "create.contraptions.clockwork.hour_first_24": "UNLOCALIZED: 24-Hour hand first", - - "create.logistics.filter": "UNLOCALIZED: Filter", - "create.logistics.recipe_filter": "UNLOCALIZED: Recipe Filter", - "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", - "create.logistics.firstFrequency": "UNLOCALIZED: Freq. #1", - "create.logistics.secondFrequency": "UNLOCALIZED: Freq. #2", - "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", - "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", - "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", - "create.gui.goggles.generator_stats": "Estatísticas do gerador:", "create.gui.goggles.kinetic_stats": "Estatísticas cinéticas:", "create.gui.goggles.at_current_speed": "Na velocidade atual", "create.gui.goggles.pole_length": "Comprimento da vara:", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", - "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", - "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", - "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", - "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", - "create.gui.stressometer.capacity": "UNLOCALIZED: Remaining Capacity", - "create.gui.stressometer.overstressed": "UNLOCALIZED: Overstressed", - "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", - "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", - "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", - "create.gui.adjustable_crate.title": "UNLOCALIZED: Adjustable Crate", - "create.gui.adjustable_crate.storageSpace": "UNLOCALIZED: Storage Space", - "create.gui.stockpile_switch.title": "UNLOCALIZED: Stockpile Switch", - "create.gui.stockpile_switch.invert_signal": "UNLOCALIZED: Invert Signal", - "create.gui.stockpile_switch.move_to_lower_at": "UNLOCALIZED: Move to lower lane at %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "UNLOCALIZED: Move to upper lane at %1$s%%", - "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", - "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", - "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "UNLOCALIZED: Angle", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", - "create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "UNLOCALIZED: Distance", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "UNLOCALIZED: Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.end": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "UNLOCALIZED: Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", - "create.gui.sequenced_gearshift.speed": "UNLOCALIZED: Speed, Direction", - "create.gui.sequenced_gearshift.speed.forward": "UNLOCALIZED: Input speed, Forwards", - "create.gui.sequenced_gearshift.speed.forward_fast": "UNLOCALIZED: Double speed, Forwards", - "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", - "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", "create.schematicAndQuill.dimensions": "Tamanho Esquema: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Primeira posição feita.", "create.schematicAndQuill.secondPos": "Segunda posição feita.", "create.schematicAndQuill.noTarget": "Seguro [Ctrl] para selecionar Blocos de Ar.", "create.schematicAndQuill.abort": "Seleção removida.", - "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Upload Immediately", "create.schematicAndQuill.fallbackName": "Meu Esquema", "create.schematicAndQuill.saved": "Salvo como %1$s", @@ -1077,12 +580,7 @@ "create.schematics.synchronizing": "Sincronizando...", "create.schematics.uploadTooLarge": "Seu esquema é muito grande", "create.schematics.maxAllowedSize": "O tamanho máximo permitido para o esquema é:", - - "create.gui.schematicTable.refresh": "UNLOCALIZED: Refresh Files", - "create.gui.schematicTable.open_folder": "UNLOCALIZED: Open Folder", "create.gui.schematicTable.title": "Mesa de Desenho", - "create.gui.schematicTable.availableSchematics": "UNLOCALIZED: Available Schematics", - "create.gui.schematicTable.noSchematics": "UNLOCALIZED: No Schematics Saved", "create.gui.schematicTable.uploading": "Importando...", "create.gui.schematicTable.finished": "Envio Concluído!", "create.gui.schematicannon.title": "Canhão de esquema", @@ -1092,16 +590,12 @@ "create.gui.schematicannon.shotsRemainingWithBackup": "Com backup: %1$s", "create.gui.schematicannon.optionEnabled": "Habilitado Atualmente", "create.gui.schematicannon.optionDisabled": "Desabilitado Atualmente", - "create.gui.schematicannon.showOptions": "UNLOCALIZED: Show Printer Settings", "create.gui.schematicannon.option.dontReplaceSolid": "Não Substituir Blocos Sólidos", "create.gui.schematicannon.option.replaceWithSolid": "Substituir Blocos Sólidos", "create.gui.schematicannon.option.replaceWithAny": "Substituir Sólidos com Qualquer", "create.gui.schematicannon.option.replaceWithEmpty": "Substituir Sólidos com Vazio", "create.gui.schematicannon.option.skipMissing": "Pulando Blocos faltantes", "create.gui.schematicannon.option.skipTileEntities": "Proteger Entidades Entalhadas", - "create.gui.schematicannon.slot.gunpowder": "UNLOCALIZED: Add gunpowder to fuel the cannon", - "create.gui.schematicannon.slot.listPrinter": "UNLOCALIZED: Place books here to print a Checklist for your Schematic", - "create.gui.schematicannon.slot.schematic": "UNLOCALIZED: Add your Schematic here. Make sure it is deployed at a specific location.", "create.gui.schematicannon.option.skipMissing.description": "Se o Canhão de esquema não encontrar o Bloco para colocar, ele irá continuar para a próx. Posição.", "create.gui.schematicannon.option.skipTileEntities.description": "O Canhão de esquema vai evitar substituir blocos que contêm dados como Baus.", "create.gui.schematicannon.option.dontReplaceSolid.description": "O Canhão de esquema nunca irá substituir Blocos sólidos na área em trabalho, apenas não-Sólidos e Ar.", @@ -1127,246 +621,8 @@ "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", "create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado", - "create.materialChecklist": "UNLOCALIZED: Material Checklist", - "create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.", - - "create.gui.filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.", - "create.gui.filter.allow_list": "UNLOCALIZED: Allow-List", - "create.gui.filter.allow_list.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Allow-List rejects everything.", - "create.gui.filter.respect_data": "UNLOCALIZED: Respect Data", - "create.gui.filter.respect_data.description": "UNLOCALIZED: Items only match if their durability, enchantments, and other attributes match as well.", - "create.gui.filter.ignore_data": "UNLOCALIZED: Ignore Data", - "create.gui.filter.ignore_data.description": "UNLOCALIZED: Items match regardless of their attributes.", - - "create.item_attributes.placeable": "UNLOCALIZED: is placeable", - "create.item_attributes.placeable.inverted": "UNLOCALIZED: is not placeable", - "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", - "create.item_attributes.consumable.inverted": "UNLOCALIZED: cannot be eaten", - "create.item_attributes.fluid_container": "UNLOCALIZED: can store fluids", - "create.item_attributes.fluid_container.inverted": "UNLOCALIZED: cannot store fluids", - "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", - "create.item_attributes.enchanted.inverted": "UNLOCALIZED: is unenchanted", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", - "create.item_attributes.renamed": "UNLOCALIZED: has a custom name", - "create.item_attributes.renamed.inverted": "UNLOCALIZED: does not have a custom name", - "create.item_attributes.damaged": "UNLOCALIZED: is damaged", - "create.item_attributes.damaged.inverted": "UNLOCALIZED: is not damaged", - "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", - "create.item_attributes.badly_damaged.inverted": "UNLOCALIZED: is not heavily damaged", - "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", - "create.item_attributes.not_stackable.inverted": "UNLOCALIZED: can be stacked", - "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", - "create.item_attributes.equipable.inverted": "UNLOCALIZED: cannot be equipped", - "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", - "create.item_attributes.furnace_fuel.inverted": "UNLOCALIZED: is not furnace fuel", - "create.item_attributes.washable": "UNLOCALIZED: can be Washed", - "create.item_attributes.washable.inverted": "UNLOCALIZED: cannot be Washed", - "create.item_attributes.crushable": "UNLOCALIZED: can be Crushed", - "create.item_attributes.crushable.inverted": "UNLOCALIZED: cannot be Crushed", - "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", - "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.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", - "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", - "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", - "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", - "create.item_attributes.in_tag.inverted": "UNLOCALIZED: is not tagged %1$s", - "create.item_attributes.in_item_group": "UNLOCALIZED: is in group '%1$s'", - "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", - "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", - "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", - "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", - "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.has_fluid": "UNLOCALIZED: contains %1$s", - "create.item_attributes.has_fluid.inverted": "UNLOCALIZED: does not contain %1$s", - "create.item_attributes.has_name": "UNLOCALIZED: has the custom name %1$s", - "create.item_attributes.has_name.inverted": "UNLOCALIZED: does not have the custom name %1$s", - "create.item_attributes.book_author": "UNLOCALIZED: was authored by %1$s", - "create.item_attributes.book_author.inverted": "UNLOCALIZED: was not authored by %1$s", - "create.item_attributes.book_copy_original": "UNLOCALIZED: is an original", - "create.item_attributes.book_copy_original.inverted": "UNLOCALIZED: is not an original", - "create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy", - "create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy", - "create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy", - "create.item_attributes.book_copy_second.inverted": "UNLOCALIZED: is not a second-generation copy", - "create.item_attributes.book_copy_tattered": "UNLOCALIZED: is a tattered mess", - "create.item_attributes.book_copy_tattered.inverted": "UNLOCALIZED: is not a tattered mess", - "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %1$s", - "create.item_attributes.astralsorcery_constellation": "UNLOCALIZED: is attuned to %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "UNLOCALIZED: is not attuned to %1$s", - "create.item_attributes.astralsorcery_crystal": "UNLOCALIZED: has crystal attribute %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "UNLOCALIZED: does not have crystal attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem": "UNLOCALIZED: has perk attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "UNLOCALIZED: does not have perk attribute %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "UNLOCALIZED: No attributes selected", - "create.gui.attribute_filter.selected_attributes": "UNLOCALIZED: Selected attributes:", - "create.gui.attribute_filter.add_attribute": "UNLOCALIZED: Add attribute to List", - "create.gui.attribute_filter.add_inverted_attribute": "UNLOCALIZED: Add opposite attribute to List", - "create.gui.attribute_filter.allow_list_disjunctive": "UNLOCALIZED: Allow-List (Any)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", - "create.gui.attribute_filter.allow_list_conjunctive": "UNLOCALIZED: Allow-List (All)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", - "create.gui.attribute_filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.attribute_filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", - "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", - - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", - "create.tooltip.keyShift": "UNLOCALIZED: Shift", - "create.tooltip.keyCtrl": "UNLOCALIZED: Ctrl", - "create.tooltip.speedRequirement": "UNLOCALIZED: Speed Requirement: %1$s", - "create.tooltip.speedRequirement.none": "UNLOCALIZED: None", - "create.tooltip.speedRequirement.medium": "UNLOCALIZED: Moderate", - "create.tooltip.speedRequirement.high": "UNLOCALIZED: Fast", - "create.tooltip.stressImpact": "UNLOCALIZED: Kinetic Stress Impact: %1$s", - "create.tooltip.stressImpact.low": "UNLOCALIZED: Low", - "create.tooltip.stressImpact.medium": "UNLOCALIZED: Moderate", - "create.tooltip.stressImpact.high": "UNLOCALIZED: High", - "create.tooltip.stressImpact.overstressed": "UNLOCALIZED: Overstressed", - "create.tooltip.capacityProvided": "UNLOCALIZED: Kinetic Stress Capacity: %1$s", - "create.tooltip.capacityProvided.low": "UNLOCALIZED: Small", - "create.tooltip.capacityProvided.medium": "UNLOCALIZED: Medium", - "create.tooltip.capacityProvided.high": "UNLOCALIZED: Large", - "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", - "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", - - "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", - "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", - "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", - "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", - - "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", - - "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", - - "create.mechanical_arm.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.mechanical_arm.selection_mode.prefer_first": "UNLOCALIZED: Prefer First Target", - - "create.tunnel.selection_mode.split": "UNLOCALIZED: Split", - "create.tunnel.selection_mode.forced_split": "UNLOCALIZED: Forced Split", - "create.tunnel.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.tunnel.selection_mode.prefer_nearest": "UNLOCALIZED: Prefer Nearest", - "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", - "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", - - "create.tooltip.chute.header": "UNLOCALIZED: Chute Information", - "create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward", - "create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward", - "create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans", - "create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below", - "create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above", - "create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above", - "create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below", - "create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s", - "create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:", - "create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s", - "create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve", - - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - - "create.potato_cannon.ammo.attack_damage": "UNLOCALIZED: %1$s Attack Damage", - "create.potato_cannon.ammo.reload_ticks": "UNLOCALIZED: %1$s Reload Ticks", - "create.potato_cannon.ammo.knockback": "UNLOCALIZED: %1$s Knockback", - - "create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply", - "create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.", - "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", - "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", - "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", - "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", - "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", - "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", - - "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", - "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", - "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", - "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", - "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", - "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", - "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", - "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", - - "create.command.killTPSCommand": "UNLOCALIZED: killtps", - "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", - "create.command.killTPSCommand.status.slowed_by.2": "UNLOCALIZED: [Create]: Server tick is back to regular speed :D", - "create.command.killTPSCommand.status.usage.0": "UNLOCALIZED: [Create]: use /killtps stop to bring back server tick to regular speed", - "create.command.killTPSCommand.status.usage.1": "UNLOCALIZED: [Create]: use /killtps start to artificially slow down the server tick", - "create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime", - - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", - "create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world", - - "_": "->------------------------] Subtitles [------------------------<-", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.peculiar_bell_use": "UNLOCALIZED: Peculiar Bell tolls", - "create.subtitle.mixing": "UNLOCALIZED: Mixing noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.sanding_long": "UNLOCALIZED: Sanding noises", - "create.subtitle.crushing_1": "UNLOCALIZED: Crushing noises", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel flaps", - "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", - "create.subtitle.haunted_bell_use": "UNLOCALIZED: Haunted Bell tolls", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.controller_put": "UNLOCALIZED: Controller thumps", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.sanding_short": "UNLOCALIZED: Sanding noises", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.haunted_bell_convert": "UNLOCALIZED: Haunted Bell awakens", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.controller_take": "UNLOCALIZED: Lectern empties", - "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - "_": "->------------------------] Item Descriptions [------------------------<-", "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", @@ -1377,21 +633,6 @@ "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", "item.create.example_item.tooltip.control1": "Quando Ctrl pressed", "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET", - "block.create.wooden_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", - - "block.create.metal_bracket.tooltip": "UNLOCALIZED: METAL BRACKET", - "block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", - - "block.create.seat.tooltip": "UNLOCALIZED: SEAT", - "block.create.seat.tooltip.summary": "UNLOCALIZED: Sit yourself down and enjoy the ride! Will anchor a player onto a moving _contraption_. Great for static furniture too! Comes in a variety of colours.", - "block.create.seat.tooltip.condition1": "UNLOCALIZED: Right click on Seat", - "block.create.seat.tooltip.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", - - "item.create.blaze_cake.tooltip": "UNLOCALIZED: BLAZE CAKE", - "item.create.blaze_cake.tooltip.summary": "UNLOCALIZED: A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", - "item.create.wand_of_symmetry.tooltip": "VARINHA DE SIMETRIA", "item.create.wand_of_symmetry.tooltip.summary": "Espelhar perfeitamente a colocação de blocos nos planos configurados.", "item.create.wand_of_symmetry.tooltip.condition1": "Quando na Hotbar", @@ -1402,49 +643,10 @@ "item.create.wand_of_symmetry.tooltip.action2": "_Remove_ o Espelho ativo", "item.create.wand_of_symmetry.tooltip.control3": "B-Direito enquanto Abaixado", "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", - - "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain features_.", - "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", - "item.create.handheld_worldshaper.tooltip.action1": "UNLOCALIZED: Sets blocks placed by the tool to the targeted block.", - "item.create.handheld_worldshaper.tooltip.control2": "UNLOCALIZED: R-Click at Block", - "item.create.handheld_worldshaper.tooltip.action2": "UNLOCALIZED: Applies the currently selected _Brush_ and _Tool_ at the targeted location.", - "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", - "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration Interface_", - "item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ARVORE", "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", "item.create.tree_fertilizer.tooltip.condition1": "Quando usada em Mudas", "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", - - "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", - "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", - "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", - "item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", - "item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", - - "item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON", - "item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_", - "item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.", - "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", - "item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", - - "item.create.filter.tooltip": "UNLOCALIZED: FILTER", - "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.", - "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", - "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", - "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", - "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", - - "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of_ item _attributes_ and _categories_.", - "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", - "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", - "item.create.attribute_filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", - "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", - "item.create.empty_schematic.tooltip": "ESQUEMA VAZIO", "item.create.empty_schematic.tooltip.summary": "Usado como ingrediente em receitas e para escrever na _Mesa_ _de_ _Esquematizar_", @@ -1470,974 +672,24 @@ "block.create.schematicannon.tooltip": "Canhão de esquema", "block.create.schematicannon.tooltip.summary": "Dispara blocos para recriar um _Esquema_ no Mundo. Usa itens de Inventários adjacentes e _Pólvora_ como combustível.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", "block.create.schematic_table.tooltip": "MESA DE ESQUEMATIZAR", "block.create.schematic_table.tooltip.summary": "Escreve Esquemas salvos into um _Esquema_ _Vazio_", "block.create.schematic_table.tooltip.condition1": "Quando recebe um Esquema Vazio", "block.create.schematic_table.tooltip.behaviour1": "Importa um Arquivo escolhido da sua Pasta de Esquemas", - - "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", - "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic information_.", - "item.create.goggles.tooltip.condition1": "UNLOCALIZED: When worn", - "item.create.goggles.tooltip.behaviour1": "UNLOCALIZED: Shows _colored indicators_ corresponding to the _Speed Level_ of a placed kinetic component as well as _Stress Impact_ and _Capacity_ of individual components.", - "item.create.goggles.tooltip.condition2": "UNLOCALIZED: When looking at gauge", - "item.create.goggles.tooltip.behaviour2": "UNLOCALIZED: Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", - - "item.create.wrench.tooltip": "UNLOCALIZED: WRENCH", - "item.create.wrench.tooltip.summary": "UNLOCALIZED: A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", - "item.create.wrench.tooltip.control1": "UNLOCALIZED: Right-Click a kinetic block", - "item.create.wrench.tooltip.action1": "UNLOCALIZED: _Rotates components_ toward or away from the face with which you interacted.", - "item.create.wrench.tooltip.control2": "UNLOCALIZED: R-Click while Sneaking", - "item.create.wrench.tooltip.action2": "UNLOCALIZED: _Disassembles Kinetic components_ and places them back in _your inventory_.", - - "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", - "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.", - - "block.create.cuckoo_clock.tooltip": "UNLOCALIZED: CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "UNLOCALIZED: Fine craftsmanship for _decorating_ a space and _keeping track of time_.", - "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", - "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.", - "block.create.turntable.tooltip": "MESA GIRATÓRIA", "block.create.turntable.tooltip.summary": "Muda a _Força_ _Rotacional_ em uma forma refinada de Enjoo.", - "block.create.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.stockpile_switch.tooltip": "DISJUNTOR DE ARMAZENAMENTO", "block.create.stockpile_switch.tooltip.summary": "Alterna um sinal de Redstone com base no _Espaço_ de _Armazenamento_ do Reciente conectado.", "block.create.stockpile_switch.tooltip.condition1": "Quando abaixo do Limite Mínimo", "block.create.stockpile_switch.tooltip.behaviour1": "Para de enviar _Sinal_ de _Redstone_", - "block.create.content_observer.tooltip": "UNLOCALIZED: CONTENT OBSERVER", - "block.create.content_observer.tooltip.summary": "UNLOCALIZED: _Detects Items_ or _Fluids_ inside _containers_, _pipes_ or _conveyors_ matching a configured _filter_.", - "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.creative_crate.tooltip": "Caixa Criativa", "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para Canho~es de Esquema próximos", - "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", - "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._", - - "item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", - "item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.", - "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", - "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.", - - "block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.", - "block.create.controller_rail.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", - "block.create.controller_rail.tooltip.behaviour1": "UNLOCALIZED: _Accelerates_ or _Decelerates_ passing _minecarts_ corresponding to the _signal strength_. Propagates redstone power to adjacent controller rails. Powering two controller rails with different strengths will cause tracks between them to interpolate their signal.", - - "item.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", - "item.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish materials_. Can be automatically applied using the Deployer.", - "item.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", - "item.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_", - - "item.create.builders_tea.tooltip": "UNLOCALIZED: BUILDERS TEA", - "item.create.builders_tea.tooltip.summary": "UNLOCALIZED: The perfect drink to get the day started- _Motivating_ and _Saturating._", - - "item.create.refined_radiance.tooltip": "UNLOCALIZED: REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "UNLOCALIZED: A Chromatic material forged from _absorbed light_.", - "item.create.refined_radiance.tooltip.condition1": "UNLOCALIZED: Work In Progress", - "item.create.refined_radiance.tooltip.behaviour1": "UNLOCALIZED: Usages for this material will be available in a future release.", - - "item.create.shadow_steel.tooltip": "UNLOCALIZED: SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "UNLOCALIZED: A Chromatic material forged _in the void_.", - "item.create.shadow_steel.tooltip.condition1": "UNLOCALIZED: Work In Progress", - "item.create.shadow_steel.tooltip.behaviour1": "UNLOCALIZED: Usages for this material will be available in a future release.", - - "item.create.linked_controller.tooltip": "UNLOCALIZED: LINKED CONTROLLER", - "item.create.linked_controller.tooltip.summary": "UNLOCALIZED: Grants _handheld_ _control_ over _Redstone Link_ frequencies assigned to its _six_ _buttons_.", - "item.create.linked_controller.tooltip.condition1": "UNLOCALIZED: R-Click", - "item.create.linked_controller.tooltip.behaviour1": "UNLOCALIZED: _Toggles_ the controller. _Movement_ _controls_ are taken over while its active.", - "item.create.linked_controller.tooltip.condition2": "UNLOCALIZED: R-Click while Sneaking", - "item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.", - "item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver", - "item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.", - "item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern", - "item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)", - - "item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET", - "item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", - "item.create.diving_helmet.tooltip.condition1": "UNLOCALIZED: When Worn", - "item.create.diving_helmet.tooltip.behaviour1": "UNLOCALIZED: Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.", - - "item.create.copper_backtank.tooltip": "UNLOCALIZED: COPPER BACKTANK", - "item.create.copper_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", - "item.create.copper_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", - "item.create.copper_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", - "item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", - "item.create.copper_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", - - "item.create.diving_boots.tooltip": "UNLOCALIZED: DIVING BOOTS", - "item.create.diving_boots.tooltip.summary": "UNLOCALIZED: A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor.", - "item.create.diving_boots.tooltip.condition1": "UNLOCALIZED: When Worn", - "item.create.diving_boots.tooltip.behaviour1": "UNLOCALIZED: Wielder _sinks_ _faster_ and _cannot_ _swim_. Grants the ability to _walk_ and _jump_ underwater. Wielder also is no longer affected by _Mechanical_ _Belts_.", - - "item.create.crafting_blueprint.tooltip": "UNLOCALIZED: CRAFTING BLUEPRINT", - "item.create.crafting_blueprint.tooltip.summary": "UNLOCALIZED: _Placed_ on a wall, it can be used to _specify_ _ingredient_ _arrangements_ for easier manual crafting. Each slot represents a Recipe.", - "item.create.crafting_blueprint.condition1": "UNLOCALIZED: R-Click empty Slot", - "item.create.crafting_blueprint.behaviour1": "UNLOCALIZED: Opens a _Crafting_ _menu_ allowing you to _configure_ a _recipe_ and items to display.", - "item.create.crafting_blueprint.condition2": "UNLOCALIZED: R-Click configured Slot", - "item.create.crafting_blueprint.behaviour2": "UNLOCALIZED: _Applies_ the _configured_ _recipe_ with matching Ingredients found in your _Inventory_. _Sneak_ to craft up to a _Stack_ of items.", - - "item.create.minecart_coupling.tooltip": "UNLOCALIZED: MINECART COUPLING", - "item.create.minecart_coupling.tooltip.summary": "UNLOCALIZED: _Chains_ all your _Minecarts_ or _Carriage Contraptions_ together to form a majestic Train.", - "item.create.minecart_coupling.tooltip.condition1": "UNLOCALIZED: When Used on Minecart", - "item.create.minecart_coupling.tooltip.behaviour1": "UNLOCALIZED: _Couples_ two Minecarts together, attempting to keep them at a _constant distance_ while moving.", - - "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": "UNLOCALIZED: PECULIAR BELL", - "block.create.peculiar_bell.tooltip.summary": "UNLOCALIZED: A decorative _Brass Bell_. Placing it right above open _Soul Fire_ may cause side-effects...", - - "block.create.haunted_bell.tooltip": "UNLOCALIZED: HAUNTED BELL", - "block.create.haunted_bell.tooltip.summary": "UNLOCALIZED: A _Cursed Bell_ haunted by lost souls of the Nether.", - "block.create.haunted_bell.tooltip.condition1": "UNLOCALIZED: When Held or Rang", - "block.create.haunted_bell.tooltip.behaviour1": "UNLOCALIZED: Highlights nearby _Lightless Spots_ on which _Hostile Mobs_ can spawn.", "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.exit": "UNLOCALIZED: Exit", - "create.ponder.welcome": "UNLOCALIZED: Welcome to Ponder", - "create.ponder.categories": "UNLOCALIZED: Available Categories in Create", - "create.ponder.index_description": "UNLOCALIZED: Click one of the icons to learn about its associated Items and Blocks", - "create.ponder.index_title": "UNLOCALIZED: Ponder Index", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front", - "create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "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": "UNLOCALIZED: Creative Fluid Tanks", - "create.ponder.creative_fluid_tank.text_1": "UNLOCALIZED: Creative Fluid Tanks can be used to provide a bottomless supply of fluid", - "create.ponder.creative_fluid_tank.text_2": "UNLOCALIZED: Right-Click with a fluid containing item to configure it", - "create.ponder.creative_fluid_tank.text_3": "UNLOCALIZED: Pipe Networks can now endlessly draw the assigned fluid from the tank", - "create.ponder.creative_fluid_tank.text_4": "UNLOCALIZED: Any Fluids pushed back into a Creative Fluid Tank will be voided", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_processing.header": "UNLOCALIZED: Processing Items using Deployers", - "create.ponder.deployer_processing.text_1": "UNLOCALIZED: With a fitting held item, Deployers can process items provided beneath them", - "create.ponder.deployer_processing.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Deployer", - "create.ponder.deployer_processing.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.deployer_processing.text_4": "UNLOCALIZED: The Deployer will hold and process them automatically", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: The flame can be transformed using a soul-infused item", - "create.ponder.empty_blaze_burner.text_6": "UNLOCALIZED: However, without a blaze they are not suitable for industrial heating", - - "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.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes", - "create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets", - "create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window", - "create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments", - "create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids", - "create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first", - "create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents", - "create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid", - - "create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers", - "create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks", - "create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained", - "create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...", - "create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources", - "create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly", - - "create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank", - "create.ponder.fluid_tank_sizes.text_1": "UNLOCALIZED: Fluid Tanks can be combined to increase the total capacity", - "create.ponder.fluid_tank_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", - "create.ponder.fluid_tank_sizes.text_3": "UNLOCALIZED: ...and grow in height by more than 30 additional layers", - "create.ponder.fluid_tank_sizes.text_4": "UNLOCALIZED: Using a Wrench, a tanks' window can be toggled", - - "create.ponder.fluid_tank_storage.header": "UNLOCALIZED: Storing Fluids in Fluid Tanks", - "create.ponder.fluid_tank_storage.text_1": "UNLOCALIZED: Fluid Tanks can be used to store large amounts of fluid", - "create.ponder.fluid_tank_storage.text_2": "UNLOCALIZED: Pipe networks can push and pull fluids from any side", - "create.ponder.fluid_tank_storage.text_3": "UNLOCALIZED: The contained fluid can be measured by a Comparator", - "create.ponder.fluid_tank_storage.text_4": "UNLOCALIZED: However, in Survival Mode Fluids cannot be added or taken manually", - "create.ponder.fluid_tank_storage.text_5": "UNLOCALIZED: You can use Basins, Item Drains and Spouts to drain or fill fluid containing items", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.hose_pulley.header": "UNLOCALIZED: Source Filling and Draining using Hose Pulleys", - "create.ponder.hose_pulley.text_1": "UNLOCALIZED: Hose Pulleys can be used to fill or drain large bodies of Fluid", - "create.ponder.hose_pulley.text_2": "UNLOCALIZED: With the Kinetic Input, the height of the pulleys' hose can be controlled", - "create.ponder.hose_pulley.text_3": "UNLOCALIZED: The Pulley retracts while the input rotation is inverted", - "create.ponder.hose_pulley.text_4": "UNLOCALIZED: On the opposite side, pipes can be connected", - "create.ponder.hose_pulley.text_5": "UNLOCALIZED: Attached pipe networks can either provide fluid to the hose...", - "create.ponder.hose_pulley.text_6": "UNLOCALIZED: ...or pull from it, draining the pool instead", - "create.ponder.hose_pulley.text_7": "UNLOCALIZED: Fill and Drain speed of the pulley depends entirely on the fluid networks' throughput", - - "create.ponder.hose_pulley_infinite.header": "UNLOCALIZED: Passively Filling and Draining large bodies of Fluid", - "create.ponder.hose_pulley_infinite.text_1": "UNLOCALIZED: When deploying the Hose Pulley into a large enough ocean...", - "create.ponder.hose_pulley_infinite.text_2": "UNLOCALIZED: It will provide/dispose fluids without affecting the source", - "create.ponder.hose_pulley_infinite.text_3": "UNLOCALIZED: Pipe networks can limitlessly take fluids from/to such pulleys", - - "create.ponder.hose_pulley_level.header": "UNLOCALIZED: Fill and Drain level of Hose Pulleys", - "create.ponder.hose_pulley_level.text_1": "UNLOCALIZED: While fully retracted, the Hose Pulley cannot operate", - "create.ponder.hose_pulley_level.text_2": "UNLOCALIZED: Draining runs from top to bottom", - "create.ponder.hose_pulley_level.text_3": "UNLOCALIZED: The surface level will end up just below where the hose ends", - "create.ponder.hose_pulley_level.text_4": "UNLOCALIZED: Filling runs from bottom to top", - "create.ponder.hose_pulley_level.text_5": "UNLOCALIZED: The filled pool will not grow beyond the layer above the hose end", - - "create.ponder.item_drain.header": "UNLOCALIZED: Emptying Fluid Containers using Item Drains", - "create.ponder.item_drain.text_1": "UNLOCALIZED: Item Drains can extract fluids from items", - "create.ponder.item_drain.text_2": "UNLOCALIZED: Right-click it to pour fluids from your held item into it", - "create.ponder.item_drain.text_3": "UNLOCALIZED: When items are inserted from the side...", - "create.ponder.item_drain.text_4": "UNLOCALIZED: ...they roll across, emptying out their contained fluid", - "create.ponder.item_drain.text_5": "UNLOCALIZED: Pipe Networks can now pull the fluid from the drains' internal buffer", - - "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": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_pump_flow.header": "UNLOCALIZED: Fluid Transportation using Mechanical Pumps", - "create.ponder.mechanical_pump_flow.text_1": "UNLOCALIZED: Mechanical Pumps govern the flow of their attached pipe networks", - "create.ponder.mechanical_pump_flow.text_2": "UNLOCALIZED: When powered, their arrow indicates the direction of flow", - "create.ponder.mechanical_pump_flow.text_3": "UNLOCALIZED: The network behind is now pulling fluids...", - "create.ponder.mechanical_pump_flow.text_4": "UNLOCALIZED: ...while the network in front is transferring it outward", - "create.ponder.mechanical_pump_flow.text_5": "UNLOCALIZED: Reversing the input rotation reverses the direction of flow", - "create.ponder.mechanical_pump_flow.text_6": "UNLOCALIZED: Use a Wrench to reverse the orientation of pumps manually", - - "create.ponder.mechanical_pump_speed.header": "UNLOCALIZED: Throughput of Mechanical Pumps", - "create.ponder.mechanical_pump_speed.text_1": "UNLOCALIZED: Regardless of speed, Mechanical Pumps affect pipes connected up to 16 blocks away", - "create.ponder.mechanical_pump_speed.text_2": "UNLOCALIZED: Speeding up the input rotation changes the speed of flow propagation...", - "create.ponder.mechanical_pump_speed.text_3": "UNLOCALIZED: ...aswell as how quickly fluids are transferred", - "create.ponder.mechanical_pump_speed.text_4": "UNLOCALIZED: Pumps can combine their throughputs within shared pipe networks", - "create.ponder.mechanical_pump_speed.text_5": "UNLOCALIZED: Alternating their orientation can help align their flow directions", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - "create.ponder.nixie_tube.text_3": "UNLOCALIZED: Right-Click with Dye to change their display colour", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_fluid_interface.header": "UNLOCALIZED: Contraption Fluid Exchange", - "create.ponder.portable_fluid_interface.text_1": "UNLOCALIZED: Fluid Tanks on moving contraptions cannot be accessed by any pipes", - "create.ponder.portable_fluid_interface.text_2": "UNLOCALIZED: This component can interact with fluid tanks without the need to stop the contraption", - "create.ponder.portable_fluid_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_fluid_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_fluid_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL Tanks on the contraption", - "create.ponder.portable_fluid_interface.text_6": "UNLOCALIZED: Fluid can now be inserted...", - "create.ponder.portable_fluid_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_fluid_interface.text_8": "UNLOCALIZED: After no contents have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "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": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters emit a short pulse at a delay", - "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": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.smart_pipe.header": "UNLOCALIZED: Controlling Fluid flow using Smart Pipes", - "create.ponder.smart_pipe.text_1": "UNLOCALIZED: Smart pipes can help control flows by fluid type", - "create.ponder.smart_pipe.text_2": "UNLOCALIZED: When placed directly at the source, they can specify the type of fluid to extract", - "create.ponder.smart_pipe.text_3": "UNLOCALIZED: Simply Right-Click their filter slot with any item containing the desired fluid", - "create.ponder.smart_pipe.text_4": "UNLOCALIZED: When placed further down a pipe network, smart pipes will only let matching fluids continue", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.spout_filling.header": "UNLOCALIZED: Filling Items using a Spout", - "create.ponder.spout_filling.text_1": "UNLOCALIZED: The Spout can fill fluid holding items provided beneath it", - "create.ponder.spout_filling.text_2": "UNLOCALIZED: The content of a Spout cannot be accessed manually", - "create.ponder.spout_filling.text_3": "UNLOCALIZED: Instead, Pipes can be used to supply it with fluids", - "create.ponder.spout_filling.text_4": "UNLOCALIZED: The Input items can be placed on a Depot under the Spout", - "create.ponder.spout_filling.text_5": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.spout_filling.text_6": "UNLOCALIZED: The Spout will hold and process them automatically", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.valve_pipe.header": "UNLOCALIZED: Controlling Fluid flow using Valves", - "create.ponder.valve_pipe.text_1": "UNLOCALIZED: Valve pipes help control fluids propagating through pipe networks", - "create.ponder.valve_pipe.text_2": "UNLOCALIZED: Their shaft input controls whether fluid is currently allowed through", - "create.ponder.valve_pipe.text_3": "UNLOCALIZED: Given Rotational Force in the opening direction, the valve will open up", - "create.ponder.valve_pipe.text_4": "UNLOCALIZED: It can be closed again by reversing the input rotation", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", - "_": "Thank you for translating Create!" -} \ No newline at end of file +} From a502750a184906edfb648a6f94f75e1eae00c4cd Mon Sep 17 00:00:00 2001 From: CKenJa <41111170+CKenJa@users.noreply.github.com> Date: Sat, 8 Jan 2022 22:03:13 +0900 Subject: [PATCH 39/42] Updates to ja_jp.json by CKenJa (#2423) --- .../resources/assets/create/lang/ja_jp.json | 755 ++++++++++-------- 1 file changed, 425 insertions(+), 330 deletions(-) diff --git a/src/main/resources/assets/create/lang/ja_jp.json b/src/main/resources/assets/create/lang/ja_jp.json index c6a3c482c..03ce7fa24 100644 --- a/src/main/resources/assets/create/lang/ja_jp.json +++ b/src/main/resources/assets/create/lang/ja_jp.json @@ -4,30 +4,23 @@ "_": "->------------------------] Game Elements [------------------------<-", "block.create.acacia_window": "アカシアの窓", - "block.create.acacia_window_pane": "アカシアの窓板", + "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_belt_funnel": "安山岩ベルトファンネル", "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_encased_cogwheel": "安山岩ケース入り歯車", + "block.create.andesite_encased_large_cogwheel": "安山岩ケース入り大きな歯車", + "block.create.andesite_encased_shaft": "安山岩ケース入りシャフト", "block.create.andesite_funnel": "安山岩ファンネル", "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": "シラカバの窓", - "block.create.birch_window_pane": "シラカバの窓板", + "block.create.birch_window_pane": "シラカバの板窓", "block.create.black_nixie_tube": "黒色のニキシー管", "block.create.black_sail": "黒色の帆", "block.create.black_seat": "黒色のシート", @@ -39,10 +32,12 @@ "block.create.blue_seat": "青色のシート", "block.create.blue_toolbox": "青色の工具箱", "block.create.blue_valve_handle": "青色のバルブハンドル", - "block.create.brass_belt_funnel": "真鍮のベルトファンネル", + "block.create.brass_belt_funnel": "真鍮ベルトファンネル", "block.create.brass_block": "真鍮ブロック", "block.create.brass_casing": "真鍮ケーシング", - "block.create.brass_encased_shaft": "真鍮のケース入りシャフト", + "block.create.brass_encased_cogwheel": "真鍮ケース入り歯車", + "block.create.brass_encased_large_cogwheel": "真鍮ケース入り大きな歯車", + "block.create.brass_encased_shaft": "真鍮ケース入りシャフト", "block.create.brass_funnel": "真鍮ファンネル", "block.create.brass_tunnel": "真鍮トンネル", "block.create.brown_nixie_tube": "茶色のニキシー管", @@ -50,13 +45,8 @@ "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.clockwork_bearing": "時計仕掛けのベアリング", @@ -65,127 +55,170 @@ "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_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_motor": "クリエイティブモーター", + "block.create.crimsite": "真紅岩", + "block.create.crimsite_pillar": "真紅岩の柱", "block.create.crimson_window": "真紅の窓", - "block.create.crimson_window_pane": "真紅の窓板", + "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.dark_oak_window_pane": "ダークオークの板窓", + "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.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.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.fluid_pipe": "液体パイプ", "block.create.fluid_tank": "液体タンク", "block.create.fluid_valve": "液体バルブ", - "block.create.flywheel": "勢車", + "block.create.flywheel": "弾み車", "block.create.framed_glass": "ガラス窓", - "block.create.framed_glass_pane": "ガラス窓板", + "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": "灰色の帆", @@ -201,21 +234,27 @@ "block.create.haunted_bell": "憑りつかれた鐘", "block.create.honey": "ハチミツ", "block.create.horizontal_framed_glass": "横型ガラス窓", - "block.create.horizontal_framed_glass_pane": "横型ガラス窓板", + "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.jungle_window_pane": "ジャングルの板窓", "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_ochrum": "黄土岩の組石", + "block.create.layered_scorchia": "スコーチアの組石", "block.create.layered_scoria": "スコリアの組石", - "block.create.layered_weathered_limestone": "風化した石灰岩の組石", + "block.create.layered_tuff": "凝灰岩の組石", + "block.create.layered_veridium": "翡翠岩の組石", "block.create.lectern_controller": "書見台コントローラー", "block.create.light_blue_nixie_tube": "空色のニキシー菅", "block.create.light_blue_sail": "空色の帆", @@ -232,16 +271,7 @@ "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": "燃焼中のブレイズバーナー", @@ -265,72 +295,25 @@ "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.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.ornate_iron_window_pane": "鉄の装飾板ガラス", + "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": "桃色の帆", @@ -338,35 +321,68 @@ "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.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.portable_storage_interface": "ポータブルストーレジインターフェース", "block.create.powered_latch": "パワードラッチ", "block.create.powered_toggle_latch": "パワードトグルラッチ", "block.create.pulley_magnet": "プーリーマグネット", + "block.create.pulse_extender": "パルスエクステンダー", "block.create.pulse_repeater": "パルスリピーター", "block.create.purple_nixie_tube": "紫色のニキシー管", "block.create.purple_sail": "紫色の帆", @@ -374,6 +390,7 @@ "block.create.purple_toolbox": "紫色の工具箱", "block.create.purple_valve_handle": "紫色のバルブハンドル", "block.create.radial_chassis": "ラジアルシャーシ", + "block.create.raw_zinc_block": "亜鉛の原石ブロック", "block.create.red_nixie_tube": "赤色のニキシー管", "block.create.red_sail": "赤色の帆", "block.create.red_seat": "赤色のシート", @@ -382,55 +399,127 @@ "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.schematic_table": "概略図台", "block.create.schematicannon": "概略図砲", + "block.create.scorchia": "スコーチア", + "block.create.scorchia_pillar": "スコーチアの柱", "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.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_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_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.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.tiled_glass_pane": "タイル板ガラス", + "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.vertical_framed_glass_pane": "縦型ガラス板窓", "block.create.warped_window": "歪んだ窓", - "block.create.warped_window_pane": "歪んだ窓板", + "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.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": "白色の帆", @@ -472,20 +561,18 @@ "item.create.brass_nugget": "真鍮塊", "item.create.brass_sheet": "真鍮シート", "item.create.builders_tea": "建築家のお茶", - "item.create.chest_minecart_contraption": "からくりチェスト付きトロッコ", + "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": "砕いた鉄鉱石", @@ -504,9 +591,10 @@ "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.furnace_minecart_contraption": "かまど付きからくりトロッコ", "item.create.goggles": "エンジニアのゴーグル", "item.create.golden_sheet": "金板", "item.create.handheld_worldshaper": "携帯型ワールドシェーパー", @@ -517,13 +605,14 @@ "item.create.incomplete_precision_mechanism": "組み立て中の精密機構", "item.create.iron_sheet": "鉄板", "item.create.linked_controller": "リンクコントローラー", - "item.create.minecart_contraption": "からくり付きトロッコ", + "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": "亜鉛の原石", "item.create.red_sand_paper": "赤い紙やすり", "item.create.refined_radiance": "高貴な光輝", "item.create.rose_quartz": "ローズクォーツ", @@ -593,7 +682,7 @@ "advancement.create.water_wheel.desc": "水車を置いて、回転させよう!", "advancement.create.chocolate_wheel": "味わい深い原動機", "advancement.create.chocolate_wheel.desc": "溶けたチョコレートで水車を回す", - "advancement.create.lava_wheel": "マグマ・ホイール", + "advancement.create.lava_wheel": "溶岩車", "advancement.create.lava_wheel.desc": "こんなはずじゃなかった", "advancement.create.cuckoo": "今がその時だ", "advancement.create.cuckoo.desc": "鳩時計が就寝時間を告げるのを目撃する", @@ -606,7 +695,7 @@ "advancement.create.andesite_casing": "安山岩の時代", "advancement.create.andesite_casing.desc": "安山岩合金と木材を使って、基本のケーシングを作る", "advancement.create.mechanical_drill": "固定式採掘装置", - "advancement.create.mechanical_drill.desc": "メカニカルドリルを設置して、回転させる", + "advancement.create.mechanical_drill.desc": "メカニカルドリルを設置して、稼働させる", "advancement.create.press": "プレスで「ドン!」", "advancement.create.press.desc": "メカニカルプレスを稼働させて、いずれかのシートを作る", "advancement.create.polished_rose_quartz": "ピンク色のダイヤモンド", @@ -614,10 +703,10 @@ "advancement.create.electron_tube": "ピッポッパ", "advancement.create.electron_tube.desc": "便利な次世代の機械のために電子管を作る", "advancement.create.mechanical_saw": "固定式伐採装置", - "advancement.create.mechanical_saw.desc": "メカニカルソーを稼働させる", + "advancement.create.mechanical_saw.desc": "メカニカルソーを設置して、稼働させる", "advancement.create.basin": "お茶碗の作法", "advancement.create.basin.desc": "鉢を設置して、アイテムを投げ入れる", - "advancement.create.mixer": "いざ混合", + "advancement.create.mixer": "攪拌せよ", "advancement.create.mixer.desc": "鉢の上にメカニカルミキサーを設置して、素材をかき混ぜる", "advancement.create.blaze_burner": "生き生きとしたインテリア", "advancement.create.blaze_burner.desc": "ブレイズバーナーを手に入れる", @@ -648,23 +737,23 @@ "advancement.create.hose_pulley": "工業排水", "advancement.create.hose_pulley.desc": "ホースプーリーを下げて、液体の放出や吸引を見る", "advancement.create.infinite_water": "海の水ぜんぶ抜く大作戦", - "advancement.create.infinite_water.desc": "無限と言えるほどの大量の水を吸引する", + "advancement.create.infinite_water.desc": "無限と言えるほどに大量の水を吸引する", "advancement.create.infinite_lava": "星の核ぜんぶ抜く大作戦", - "advancement.create.infinite_lava.desc": "無限と言えるほどの大量の溶岩を吸引する", + "advancement.create.infinite_lava.desc": "無限と言えるほどに大量の溶岩を吸引する", "advancement.create.infinite_chocolate": "空想に溺れて", - "advancement.create.infinite_chocolate.desc": "無限と言えるほどの大量の溶けたチョコレートを吸引する", + "advancement.create.infinite_chocolate.desc": "無限と言えるほどに大量の溶けたチョコレートを吸引する", "advancement.create.crafter": "部品集結!", "advancement.create.crafter.desc": "メカニカルクラフターを設置して、回転力を供給する", "advancement.create.clockwork_bearing": "時計仕掛け", - "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングの上に構造物を組み立てる", + "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": "Engineers hate him!", + "advancement.create.speed_controller": "もう全部あいつ一人でいいんじゃないかな", "advancement.create.speed_controller.desc": "究極の伝動機、回転速度コントローラーを設置する", "advancement.create.flywheel": "工場の心臓部", - "advancement.create.flywheel.desc": "かまどエンジンを勢車に繋ぐ", + "advancement.create.flywheel.desc": "かまどエンジンを弾み車に繋ぐ", "advancement.create.overstress_flywheel": "ハイレベル応力", "advancement.create.overstress_flywheel.desc": "かまどエンジンに超過応力をかける", "advancement.create.precision_mechanism": "手間暇かけた骨董品", @@ -683,19 +772,11 @@ "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": "バキューン!", "advancement.create.potato_cannon.desc": "ポテトキャノンで敵を倒す", "advancement.create.dual_extendo_grip": "究極のビヨンビヨン時代", "advancement.create.dual_extendo_grip.desc": "二刀流のマジックハンドで超人的なリーチを手に入れる", @@ -719,7 +800,7 @@ "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は%3$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は何者かによって改造された鳩時計に爆破された", @@ -728,7 +809,7 @@ "create.menu.return": "メニューに戻る", "create.menu.configure": "設定...", - "create.menu.ponder_index": "思案索引", + "create.menu.ponder_index": "思案目次", "create.menu.only_ingame": "一時停止メニューで利用可能", "create.menu.project_page": "プロジェクトページ", "create.menu.report_bugs": "バグ報告", @@ -756,8 +837,8 @@ "create.recipe.wood_cutting": "自動製材", "create.recipe.sandpaper_polishing": "紙やすりでの研磨", "create.recipe.mystery_conversion": "神秘の変転", - "create.recipe.spout_filling": "アイテム注液口による注入", - "create.recipe.draining": "アイテムから排液", + "create.recipe.spout_filling": "アイテムへの注液", + "create.recipe.draining": "アイテムからの排液", "create.recipe.sequenced_assembly": "組立ライン", "create.recipe.assembly.next": "次の工程: %1$s", "create.recipe.assembly.step": "手順: %1$s:", @@ -804,7 +885,7 @@ "create.gui.scrollInput.defaultTitle": "オプションを選択:", "create.gui.scrollInput.scrollToModify": "スクロールして変更", - "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして値を調整", + "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして調整", "create.gui.scrollInput.scrollToSelect": "スクロールして選択", "create.gui.scrollInput.shiftScrollsFaster": "シフトを押してスクロールを加速", "create.gui.toolmenu.focusKey": "[%1$s] 長押しでフォーカスする", @@ -862,27 +943,27 @@ "create.terrainzapper.leftClickToSet": "ブロックをスニークせず左クリックでブロックを選択", "create.minecart_coupling.two_couplings_max": "トロッコを2つ以上連結させることはできません", - "create.minecart_coupling.unloaded": "列車の一部のあるチャンクがロードされていません", + "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.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.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": "1周24時間時針を最初に", + "create.contraptions.clockwork.hour_first_24": "24時針を最初に", "create.logistics.filter": "フィルター", "create.logistics.recipe_filter": "レシピフィルター", @@ -903,16 +984,16 @@ "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.tooManyPistonPoles": "このピストンに取り付けられているピストン延長ポールが多すぎます。\n最大値: %1$s", + "create.gui.assembly.exception.noPistonPoles": "ピストンにピストン延長ポールが不足しています。", + "create.gui.assembly.exception.not_enough_sails": "このからくりは帆ブロックが足りていません。: %1$s\nAが最低でも%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 は_十分な_回転を_していない_ようです。", + "create.gui.contraptions.not_fast_enough": "この %1$s は_十分速く_回転_していない_ようです。", "create.gui.contraptions.network_overstressed": "この仕掛けは_超過応力_のようです。さらに原動機を追加するか、_応力_への影響が大きい機械の回転速度を_下げて_ください。", "create.gui.adjustable_crate.title": "可変クレート", "create.gui.adjustable_crate.storageSpace": "収納スペース", @@ -951,7 +1032,7 @@ "create.schematicAndQuill.fallbackName": "My Schematic", "create.schematicAndQuill.saved": "%1$s として保存しました", - "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図テーブルを使ってください", + "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図台を使ってください", "create.schematic.position": "位置", "create.schematic.rotation": "回転", "create.schematic.rotation.none": "無し", @@ -968,7 +1049,7 @@ "create.schematic.tool.rotate": "回転", "create.schematic.tool.print": "印刷", "create.schematic.tool.flip": "裏返し", - "create.schematic.tool.deploy.description.0": "構造物を特定の場所に移動します", + "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]-スクロールして距離を変更します", @@ -995,43 +1076,43 @@ "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.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.listPrinter": "材料リスト印刷機", "create.gui.schematicannon.gunpowderLevel": "火薬残量: %1$s%%", "create.gui.schematicannon.shotsRemaining": "残りショット数: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "バックアップ: %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.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.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.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.finished": "完了", "create.schematicannon.status.paused": "一時停止中", "create.schematicannon.status.stopped": "停止", "create.schematicannon.status.noGunpowder": "火薬不足", @@ -1047,7 +1128,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": "上記のいずれにも一致しない場合、アイテムは通り抜けます。空のブラックリストはすべてを受け入れます。", @@ -1119,14 +1200,14 @@ "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": "選択された属性:", @@ -1216,7 +1297,7 @@ "create.potato_cannon.ammo.reload_ticks": "リロード時間(tick): %1$s", "create.potato_cannon.ammo.knockback": "ノックバック: %1$s", - "create.hint.hose_pulley.title": "底なし搬出", + "create.hint.hose_pulley.title": "底なし汲み上げ可能", "create.hint.hose_pulley": "対象となる液体は無限とみなされています。", "create.hint.mechanical_arm_no_targets.title": "ターゲットが見つかりません", "create.hint.mechanical_arm_no_targets": "どうやらこの_メカニカルアーム_には_ターゲット_が割り当てられていないようです。_メカニカルアーム_を_手_に持って_右クリック_して、ベルト、デポ、ファンネルなどのブロックを選択します。", @@ -1243,7 +1324,7 @@ "create.command.killTPSCommand.argument.tickTime": "tickTime", "create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません。", - "create.contraption.minecart_contraption_illegal_pickup": "神秘的な力がからくりカートを世界に縛り付けています。", + "create.contraption.minecart_contraption_illegal_pickup": "超自然的な力がからくりカートを世界に縛り付けています。", "_": "->------------------------] Subtitles [------------------------<-", @@ -1254,6 +1335,7 @@ "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.saw_activate_stone": "メカニカルソーが動作する", @@ -1266,13 +1348,13 @@ "create.subtitle.controller_put": "コントローラのトントン音", "create.subtitle.cranking": "ハンドクランクが回る", "create.subtitle.wrench_remove": "機械を壊す", + "create.subtitle.sanding_short": "研磨音", "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": "概略図砲が発射する", @@ -1303,7 +1385,7 @@ "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": "_シート_の上に座ります。左シフトを押すと_シート_から離れます。", @@ -1364,7 +1446,7 @@ "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": "ワールドに設置できる構造物を保存します。ホログラムを必要に応じて配置し、_概略図砲_を使って建築します。", @@ -1391,7 +1473,7 @@ "block.create.schematicannon.tooltip.condition1": "右クリックしたとき", "block.create.schematicannon.tooltip.behaviour1": "_UI_を開きます。", - "block.create.schematic_table.tooltip": "概略図テーブル", + "block.create.schematic_table.tooltip": "概略図台", "block.create.schematic_table.tooltip.summary": "保存された構造物を_空の概略図_に書き込みます。", "block.create.schematic_table.tooltip.condition1": "空の概略図を入れたとき", "block.create.schematic_table.tooltip.behaviour1": "Schematicsフォルダから選択したファイルをアップロードします。", @@ -1425,7 +1507,7 @@ "block.create.toolbox.tooltip": "工具箱", "block.create.toolbox.tooltip.summary": "発明家の最愛の仲間。異なる8種類のアイテムを大量に_収納_できる便利グッズ。", - "block.create.toolbox.tooltip.condition1": "拾ったとき", + "block.create.toolbox.tooltip.condition1": "壊したとき", "block.create.toolbox.tooltip.behaviour1": "インベントリの_内容_を_保持_します", "block.create.toolbox.tooltip.condition2": "範囲内に置いたとき", "block.create.toolbox.tooltip.behaviour2": "_近く_にいる_プレイヤー_が_工具箱_の_キーバインド_を押すと、工具箱に_触れずに_アクセスできます", @@ -1444,11 +1526,6 @@ "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": "_UI_を開きます。", - "block.create.creative_crate.tooltip": "クリエイティブクレート", "block.create.creative_crate.tooltip.summary": "あらゆるアイテムを無限に複製する_収納ブロック_。隣接する_概略図砲_へブロックを無限に供給します。", "block.create.creative_crate.tooltip.condition1": "フィルタースロットにアイテムが入っているとき", @@ -1522,6 +1599,11 @@ "item.create.minecart_coupling.tooltip.condition1": "トロッコに使ったとき", "item.create.minecart_coupling.tooltip.behaviour1": "_2台_のトロッコを連結します。それらは移動中に_一定_の_距離_を保とうします。", + "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": "装飾用の_真鍮の鐘_。_魂の炎_の真上に置くと、別の使い方が見つかるかも...", @@ -1586,26 +1668,14 @@ "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_1": "安山岩トンネルは、ベルトを隠せます", + "create.ponder.andesite_tunnel.text_2": "安山岩トンネルが横につながっていると...", "create.ponder.andesite_tunnel.text_3": "...通過するアイテムスタックから正確に1つのアイテムを分割します", "create.ponder.andesite_tunnel.text_4": "残ったものは、そのルートを進み続けます", @@ -1625,7 +1695,7 @@ "create.ponder.bearing_modes.text_2": "通常のブロックに戻らないように設定したり、開始時の角度のみブロックに戻るように設定したりできます", "create.ponder.belt_casing.header": "ケース入りベルト", - "create.ponder.belt_casing.text_1": "真鍮か安山岩のケーシングを使ってメカニカルベルトを飾れます", + "create.ponder.belt_casing.text_1": "真鍮か安山岩ケーシングを使ってメカニカルベルトを飾れます", "create.ponder.belt_casing.text_2": "ケーシングはレンチを使って外せます", "create.ponder.belt_connector.header": "メカニカルベルトの使い方", @@ -1751,6 +1821,11 @@ "create.ponder.cogwheel.text_1": "歯車は隣接する歯車へ回転力を伝達します", "create.ponder.cogwheel.text_2": "このように連結された隣のシャフトは、逆方向に回転します", + "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": "液体容器アイテムで右クリックで液体を指定できます", @@ -1870,8 +1945,8 @@ "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.header": "弾み車による回転力の生成", + "create.ponder.flywheel.text_1": "かまどエンジンで回転力を生成するには、弾み車が必要です", "create.ponder.flywheel.text_2": "これによって生成される回転力は、非常に大きな応力許容量を持っています", "create.ponder.flywheel.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります", @@ -1971,6 +2046,17 @@ "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_2": "そのベースとなる正方形の辺の長さは最大3ブロックまで...", + "create.ponder.item_vault_sizes.text_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": "回転力の回転軸を変えてに伝達するのに役立ちます", @@ -2174,8 +2260,17 @@ "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": "パルスリピーターは、レッドストーン信号を短縮して1tickのパルス信号にします", + "create.ponder.pulse_repeater.text_2": "マウスホイールで、遅延する時間を調整できます", + "create.ponder.pulse_repeater.text_3": "最大30分まで設定できます", "create.ponder.radial_chassis.header": "ラジアルシャーシによるブロックの取り付け", "create.ponder.radial_chassis.text_1": "ラジアルシャーシは、同じ種類のシャーシと繋がります", @@ -2342,7 +2437,7 @@ "create.ponder.windmill_structure.header": "からくり風車", "create.ponder.windmill_structure.text_1": "帆とみなされるブロックが8個以上あれば、どのような構造物でも風車として動きます", - + "_": "Thank you for translating Create!" } From 8cc5db44c542c2a560b9337f8d0c4980a6cbb5b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=92=80=E5=A2=83=E7=9F=B3?= Date: Sat, 8 Jan 2022 21:04:36 +0800 Subject: [PATCH 40/42] Updates to zh_cn.json by Demonese (#2450) --- .../resources/assets/create/lang/zh_cn.json | 604 ++++++++++-------- 1 file changed, 349 insertions(+), 255 deletions(-) diff --git a/src/main/resources/assets/create/lang/zh_cn.json b/src/main/resources/assets/create/lang/zh_cn.json index 834aa7d2f..a4431405c 100644 --- a/src/main/resources/assets/create/lang/zh_cn.json +++ b/src/main/resources/assets/create/lang/zh_cn.json @@ -1,29 +1,21 @@ { - "_": "Missing Localizations: 43", "_": "->------------------------] 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_pillar": "安山岩柱", "block.create.andesite_tunnel": "安山岩隧道", + "block.create.asurine": "皓蓝石", + "block.create.asurine_pillar": "皓蓝石柱", "block.create.basin": "工作盆", "block.create.belt": "传送带", "block.create.birch_window": "白桦木窗户", @@ -42,6 +34,8 @@ "block.create.brass_belt_funnel": "黄铜传送带漏斗", "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_tunnel": "黄铜隧道", @@ -50,13 +44,8 @@ "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.clockwork_bearing": "发条轴承", @@ -64,21 +53,137 @@ "block.create.cogwheel": "齿轮", "block.create.content_observer": "物品侦测器", "block.create.controller_rail": "控制铁轨", - "block.create.copper_backtank": "Copper Backtank", - "block.create.copper_block": "铜块", + "block.create.copper_backtank": "铜制背罐", "block.create.copper_casing": "铜机壳", - "block.create.copper_ore": "铜矿石", + "block.create.copper_shingle_slab": "铜砖块台阶", + "block.create.copper_shingle_stairs": "铜砖块楼梯", "block.create.copper_shingles": "铜砖块", - "block.create.copper_tiles": "铜砖块", + "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_motor": "创造马达", + "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": "青色坐垫", @@ -86,76 +191,21 @@ "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.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.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.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.fluid_pipe": "流体管道", "block.create.fluid_tank": "流体储罐", "block.create.fluid_valve": "流体阀门", @@ -163,30 +213,12 @@ "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.granite_pillar": "花岗岩柱", "block.create.gray_nixie_tube": "灰色辉光管", "block.create.gray_sail": "灰色风帆", "block.create.gray_seat": "灰色坐垫", @@ -204,18 +236,24 @@ "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_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_ochrum": "层叠赭金砂", + "block.create.layered_scorchia": "层叠焦黑熔渣", "block.create.layered_scoria": "层叠熔渣", - "block.create.layered_weathered_limestone": "层叠风化石灰岩", + "block.create.layered_tuff": "层叠凝灰岩", + "block.create.layered_veridium": "层叠辉绿矿", "block.create.lectern_controller": "遥控器讲台", "block.create.light_blue_nixie_tube": "淡蓝色辉光管", "block.create.light_blue_sail": "淡蓝色风帆", @@ -232,17 +270,8 @@ "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.magenta_nixie_tube": "品红色辉光管", @@ -265,72 +294,25 @@ "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.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": "粉红色风帆", @@ -338,35 +320,68 @@ "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.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_toggle_latch": "转换锁存器", "block.create.pulley_magnet": "滑轮磁铁", + "block.create.pulse_extender": "脉冲延长器", "block.create.pulse_repeater": "脉冲中继器", "block.create.purple_nixie_tube": "紫色辉光管", "block.create.purple_sail": "紫色风帆", @@ -374,6 +389,7 @@ "block.create.purple_toolbox": "紫色工具箱", "block.create.purple_valve_handle": "紫色阀门手轮", "block.create.radial_chassis": "旋转底盘", + "block.create.raw_zinc_block": "粗锌块", "block.create.red_nixie_tube": "红色辉光管", "block.create.red_sail": "红色风帆", "block.create.red_seat": "红色坐垫", @@ -382,27 +398,76 @@ "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.scorchia": "焦黑熔渣", + "block.create.scorchia_pillar": "焦黑熔渣柱", "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.scoria_pillar": "熔渣柱", "block.create.secondary_linear_chassis": "机壳底盘 2 号", "block.create.sequenced_gearshift": "可编程齿轮箱", "block.create.shadow_steel_casing": "暗影机壳", "block.create.shaft": "传动杆", + "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_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_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": "速度表", @@ -415,22 +480,45 @@ "block.create.stressometer": "应力表", "block.create.tiled_glass": "十字玻璃窗", "block.create.tiled_glass_pane": "十字玻璃窗户板", + "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.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": "白色风帆", @@ -478,14 +566,12 @@ "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": "粉碎铁矿石", @@ -504,6 +590,7 @@ "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": "装配过的动力矿车", @@ -524,6 +611,7 @@ "item.create.powdered_obsidian": "黑曜石粉末", "item.create.precision_mechanism": "精密构件", "item.create.propeller": "扇叶", + "item.create.raw_zinc": "粗锌", "item.create.red_sand_paper": "红沙砂纸", "item.create.refined_radiance": "光辉石", "item.create.rose_quartz": "玫瑰石英", @@ -683,14 +771,6 @@ "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": "biu biu biu!", @@ -902,10 +982,10 @@ "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": "装置中的方块数量过多。", - "create.gui.assembly.exception.tooManyPistonPoles": "活塞加装的活塞杆数量过多。", + "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", + "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": "网络应力", @@ -951,7 +1031,7 @@ "create.schematicAndQuill.fallbackName": "我的蓝图", "create.schematicAndQuill.saved": "另存为%1$s", - "create.schematic.invalid": "[!] 无效的项目", + "create.schematic.invalid": "[!] 无效的物品 - 使用蓝图桌来替换", "create.schematic.position": "位置", "create.schematic.rotation": "旋转", "create.schematic.rotation.none": "无", @@ -994,7 +1074,7 @@ "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "正在同步..", - "create.schematics.uploadTooLarge": "你的蓝图太大", + "create.schematics.uploadTooLarge": "你的蓝图超出了服务器指定的限制。", "create.schematics.maxAllowedSize": "允许的最大蓝图文件大小为:", "create.gui.schematicTable.refresh": "刷新文件", @@ -1020,7 +1100,7 @@ "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": "蓝图加农炮将不会替换工作范围内的任何固体方块。", @@ -1047,7 +1127,7 @@ "create.schematicannon.status.schematicExpired": "蓝图文件已过期", "create.materialChecklist": "材料清单", - "create.materialChecklist.blocksNotLoaded": "*免责声明* ", + "create.materialChecklist.blocksNotLoaded": "*免责声明*\n\n由于相关区块没有被加载,材料列表可能不准确。", "create.gui.filter.deny_list": "黑名单", "create.gui.filter.deny_list.description": "只通过不在黑名单中的物品,如果黑名单为空,所有物品都可以通过", @@ -1254,6 +1334,7 @@ "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.saw_activate_stone": "动力锯:切割", @@ -1266,13 +1347,13 @@ "create.subtitle.controller_put": "遥控器:放进讲台", "create.subtitle.cranking": "手摇曲柄:转动", "create.subtitle.wrench_remove": "组件:被破坏", + "create.subtitle.sanding_short": "打磨噪音", "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": "蓝图加农炮:发射", @@ -1444,11 +1525,6 @@ "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": "当标记了物品时", @@ -1522,6 +1598,11 @@ "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": "装饰用的_黄铜质钟_。放在_灵魂火_的正上方可能会产生意料之外的后果......", @@ -1586,18 +1667,6 @@ "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": "右击可以提升输出模拟信号的强度", @@ -1751,6 +1820,11 @@ "create.ponder.cogwheel.text_1": "齿轮会将动力传递至临近的齿轮", "create.ponder.cogwheel.text_2": "以此方式连接的齿轮,旋转方向相反", + "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": "使用一个含有流体的容器右击它,即可指定它提供特定的流体", @@ -1971,6 +2045,17 @@ "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_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": "可以利用大齿轮变更旋转轴向", @@ -2174,8 +2259,17 @@ "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_2": "通过鼠标滚轮,可以配置充能时间", + "create.ponder.pulse_repeater.text_3": "配置的延迟范围最长可达 30 分钟", "create.ponder.radial_chassis.header": "使用旋转底盘黏着方块", "create.ponder.radial_chassis.text_1": "同一行上的旋转底盘会相互连接在一起", From 535ef6a9a8a0821a50f1f781514652c156ac5c43 Mon Sep 17 00:00:00 2001 From: qkrehf2 <64183602+qkrehf2@users.noreply.github.com> Date: Sat, 8 Jan 2022 22:05:53 +0900 Subject: [PATCH 41/42] Updates to ko_kr.json by qkrehf2 (#2488) --- .../resources/assets/create/lang/ko_kr.json | 634 ++++++++++-------- 1 file changed, 365 insertions(+), 269 deletions(-) diff --git a/src/main/resources/assets/create/lang/ko_kr.json b/src/main/resources/assets/create/lang/ko_kr.json index 834abe9d1..dc3776b67 100644 --- a/src/main/resources/assets/create/lang/ko_kr.json +++ b/src/main/resources/assets/create/lang/ko_kr.json @@ -4,24 +4,17 @@ "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_tunnel": "안산암 터널", + "block.create.asurine": "유리암", + "block.create.asurine_pillar": "유리암 기둥", "block.create.basin": "대야", "block.create.belt": "벨트", "block.create.birch_window": "자작나무 유리창", @@ -40,6 +33,8 @@ "block.create.brass_belt_funnel": "황동 퍼널", "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_tunnel": "황동 터널", @@ -48,13 +43,8 @@ "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.clockwork_bearing": "시계 베어링", @@ -63,20 +53,136 @@ "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_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_motor": "크리에이티브 모터", + "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": "청록색 좌석", @@ -84,76 +190,21 @@ "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.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.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.fluid_pipe": "액체 파이프", "block.create.fluid_tank": "액체 탱크", "block.create.fluid_valve": "액체 밸브", @@ -161,29 +212,11 @@ "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": "회색 날개", @@ -202,18 +235,24 @@ "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_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_ochrum": "이어지는 황토암", + "block.create.layered_scorchia": "이어지는 짙은 스코리아", "block.create.layered_scoria": "이어지는 스코리아", - "block.create.layered_weathered_limestone": "이어지는 풍화된 석회암", + "block.create.layered_tuff": "이어지는 응회암", + "block.create.layered_veridium": "이어지는 심록암", "block.create.lectern_controller": "독서대 조작기", "block.create.light_blue_nixie_tube": "하늘색 닉시관", "block.create.light_blue_sail": "하늘색 날개", @@ -230,16 +269,7 @@ "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": "불타는 빈 블레이즈 버너", @@ -263,72 +293,25 @@ "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.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": "분홍색 날개", @@ -336,35 +319,68 @@ "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.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_toggle_latch": "레드스톤 토글 걸쇠", "block.create.pulley_magnet": "도르래 자석", + "block.create.pulse_extender": "펄스 연장기", "block.create.pulse_repeater": "펄스 중계기", "block.create.purple_nixie_tube": "보라색 닉시관", "block.create.purple_sail": "보라색 날개", @@ -372,6 +388,7 @@ "block.create.purple_toolbox": "보라색 공구상자", "block.create.purple_valve_handle": "보라색 밸브 손잡이", "block.create.radial_chassis": "원형 섀시", + "block.create.raw_zinc_block": "아연 원석 블록", "block.create.red_nixie_tube": "빨간색 닉시관", "block.create.red_sail": "빨간색 날개", "block.create.red_seat": "빨간색 좌석", @@ -380,27 +397,76 @@ "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.scorchia": "짙은 스코리아", + "block.create.scorchia_pillar": "짙은 스코리아 기둥", "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.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_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_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": "속도 계측기", @@ -413,22 +479,45 @@ "block.create.stressometer": "피로도 계측기", "block.create.tiled_glass": "타일 유리", "block.create.tiled_glass_pane": "타일 유리판", + "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.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": "하얀색 날개", @@ -476,14 +565,12 @@ "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": "분쇄된 철 광석", @@ -502,6 +589,7 @@ "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": "화로가 실린 광산 수레 구조물", @@ -522,6 +610,7 @@ "item.create.powdered_obsidian": "흑요석 가루", "item.create.precision_mechanism": "정밀 기계장치", "item.create.propeller": "프로펠러", + "item.create.raw_zinc": "아연 원석", "item.create.red_sand_paper": "붉은 사포", "item.create.refined_radiance": "정제된 광채", "item.create.rose_quartz": "장밋빛 석영", @@ -658,7 +747,7 @@ "advancement.create.nixie_tube": "나는 스타일있게 표시해", "advancement.create.nixie_tube.desc": "닉시관을 만들고 설치하세요.", "advancement.create.deployer": "찌르고, 설치하고, 공격!", - "advancement.create.deployer.desc": "당신의 분신, 배포기를 설치하고 작동시키세요.", + "advancement.create.deployer.desc": "당신의 분신, 기계 손을 설치하고 작동시키세요.", "advancement.create.speed_controller": "엔지니어들이 이 장치를 싫어합니다", "advancement.create.speed_controller.desc": "궁극의 회전속도 변경장치, 회전 속도 컨트롤러를 설치하세요.", "advancement.create.flywheel": "공장의 심장", @@ -676,19 +765,11 @@ "advancement.create.arm_blaze_burner": "연료를 줄 수 있는 정도의 능력", "advancement.create.arm_blaze_burner.desc": "기계 팔이 블레이즈 버너에 연료를 넣도록 하세요.", "advancement.create.fist_bump": "하이파이브!", - "advancement.create.fist_bump.desc": "두 배포기를 서로 부딫치게 하세요.", + "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": "띠요옹!", @@ -721,7 +802,7 @@ "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.deployer.damage_source_name": "기계 손", "create.block.cart_assembler.invalid": "카트 조립기를 레일 위에 설치하세요", "create.menu.return": "메뉴로 돌아가기", @@ -742,7 +823,7 @@ "create.recipe.fan_blasting.fan": "용암과 선풍기", "create.recipe.pressing": "압착", "create.recipe.mixing": "혼합", - "create.recipe.deploying": "Deploying", + "create.recipe.deploying": "행동 모방", "create.recipe.automatic_shapeless": "무형 자동 조합", "create.recipe.automatic_brewing": "자동 양조", "create.recipe.packing": "압축", @@ -1015,12 +1096,12 @@ "create.gui.schematicannon.option.replaceWithAny": "온전한 블록을 아무 재료로 대체함", "create.gui.schematicannon.option.replaceWithEmpty": "온전한 블록을 공기로 채움", "create.gui.schematicannon.option.skipMissing": "부족한 블록을 무시하고 진행", - "create.gui.schematicannon.option.skipTileEntities": "타일 엔티티를 보호", + "create.gui.schematicannon.option.skip타일Entities": "타일 엔티티를 보호", "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.skip타일Entities.description": "대포가 상세정보가 든 상자같은 타일 엔티티 설치를 무시합니다.", "create.gui.schematicannon.option.dontReplaceSolid.description": "대포가 작업구역의 온전한 블록을 대체하지 않습니다.", "create.gui.schematicannon.option.replaceWithSolid.description": "대포가 작업구역의 온전한 블록을 대포가 가진 재료로 대체합니다.", "create.gui.schematicannon.option.replaceWithAny.description": "대포가 작업구역의 온전한 블록을 대포가 가진 어떠한 재료로든 대체합니다.", @@ -1045,7 +1126,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": "위에 등록된 아이템은 통과할 수 없습니다. 빈 블랙리스트는 모든 아이템을 통과시킵니다.", @@ -1220,8 +1301,8 @@ "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.title": "기계 손 아이템 과적", + "create.hint.full_deployer": "이 _기계 손_은 _배출_할 아이템을 가지고 있습니다. 호퍼 , 퍼널 등을 이용해 아이템을 빼내세요.", "create.gui.config.overlay1": "Hi :)", "create.gui.config.overlay2": "This is a sample overlay", @@ -1252,6 +1333,7 @@ "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.saw_activate_stone": "톱이 작동함", @@ -1264,13 +1346,13 @@ "create.subtitle.controller_put": "조작기를 놓음", "create.subtitle.cranking": "크랭크가 돌아감", "create.subtitle.wrench_remove": "장치가 부숴짐", + "create.subtitle.sanding_short": "사포를 사용함", "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": "청사진 대포가 발사함", @@ -1442,11 +1524,6 @@ "block.create.content_observer.tooltip.condition2": "퍼널을 탐지할 때", "block.create.content_observer.tooltip.behaviour2": "_필터 아이템_이 이동하면 _레드스톤 펄스_를 방출합니다.", - "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "이 보관함는 용량을 _직접_ _정할_ 수 있습니다. 아무아이템이나 최대 16스택씩 담을 수 있습니다. 레드스톤 비교기와 호환됩니다.", - "block.create.adjustable_crate.tooltip.condition1": "우클릭", - "block.create.adjustable_crate.tooltip.behaviour1": "설정 창을 엽니다.", - "block.create.creative_crate.tooltip": "THE ENDLESS CRATE", "block.create.creative_crate.tooltip.summary": "이 상자는 아무 아이템을 _무한히_ 저장합니다. 청사진 대포 옆에 놓을 시 준비물을 _전부_ 공급합니다.", "block.create.creative_crate.tooltip.condition1": "필터에 아이템을 설정할 시", @@ -1463,7 +1540,7 @@ "block.create.controller_rail.tooltip.behaviour1": "_신호 세기에 따라_ 지나가는 수레를 _가속, 감속_합니다. 레드스톤 신호는 다른 방향 레일에도 전달됩니다. 두 방향레일에 다른 세기를 전달하면 중간 레일들은 두 세기 사이의 신호를 받습니다.", "item.create.sand_paper.tooltip": "SAND PAPER", - "item.create.sand_paper.tooltip.summary": "재료들을 _윤내는 데_ 쓰이는 거친 종이입니다. 배포기가 자동으로 쓸 수 있습니다.", + "item.create.sand_paper.tooltip.summary": "재료들을 _윤내는 데_ 쓰이는 거친 종이입니다. 기계 손이 자동으로 쓸 수 있습니다.", "item.create.sand_paper.tooltip.condition1": "사용할 때", "item.create.sand_paper.tooltip.behaviour1": "_다른 손_에있는 아이템과 _바닥에 있는 아이템_을 윤냅니다.", @@ -1520,6 +1597,11 @@ "item.create.minecart_coupling.tooltip.condition1": "광산 수레에 사용할 때", "item.create.minecart_coupling.tooltip.behaviour1": "_두 수레를 묶어_ 이동할 때 고정된 _거리를 유지하게_ 합니다.", + "item.create.experience_nugget.tooltip": "NUGGET OF EXPERIENCE", + "item.create.experience_nugget.tooltip.summary": "_띵!_ 당신의 멋진 발명품에서 탄생한 _영감_의 알맹이입니다.", + "item.create.experience_nugget.tooltip.condition1": "사용했을 때", + "item.create.experience_nugget.tooltip.behaviour1": "담겨져 있던 _경험치_를 _배출_합니다.", + "block.create.peculiar_bell.tooltip": "PECULIAR BELL", "block.create.peculiar_bell.tooltip.summary": "장식을 위한 황동 종입니다. 영혼 불꽃 위에 설치하면 _기이한_ 일이 일어난다고 합니다...", @@ -1584,18 +1666,6 @@ "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": "우클릭으로 세기를 높입니다.", @@ -1650,7 +1720,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": "안산암 퍼널는 아이템 한 개만 뽑아냅니다.", @@ -1749,6 +1819,11 @@ "create.ponder.cogwheel.text_1": "톱니바퀴는 인접한 톱니바퀴에 동력을 전달합니다.", "create.ponder.cogwheel.text_2": "이렇게 연결된 톱니바퀴 축은 반대방향으로 돌아갑니다.", + "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": "액체가 든 용기로 우클릭하여 액체를 채울 수 있습니다.", @@ -1765,41 +1840,41 @@ "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.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_2": "기계 손은 한 칸 떨어진 블록에 상호작용합니다.", "create.ponder.deployer.text_3": "바로 앞에 블록이 있어도 상괸없습니다.", - "create.ponder.deployer.text_4": "배포기가 할 수 있는 것:", + "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.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.text_1": "배포기가 적절한 아이템을 가지고 있으면, 아래 있는 아이템을 가공합니다.", - "create.ponder.deployer_processing.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.header": "레드스톤과 기계 손", + "create.ponder.deployer_redstone.text_1": "레드스톤 신호를 받으면, 기계 손은 작동하지 않습니다.", + "create.ponder.deployer_redstone.text_2": "작동을 멈추기 전에, 기계 손은 입력된 행동을 마무리합니다.", "create.ponder.deployer_redstone.text_3": "따라서 부정 펄스는 한 번만 작동하게 합니다.", "create.ponder.depot.header": "아이템 거치대 사용하기", @@ -1969,6 +2044,17 @@ "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_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": "이는 다른 축으로 동력을 전달하는데 도움이 됩니다.", @@ -2172,8 +2258,17 @@ "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": "펄스 중계기는 어느 레드스톤 신호라도 1틱 신호로 바꿉니다.", + "create.ponder.pulse_repeater.text_1": "펄스 중계기는 모든 레드스톤 신호를 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": "원형 섀시는 다른 원형 섀시와 이어집니다.", @@ -2342,4 +2437,5 @@ "create.ponder.windmill_structure.text_1": "최소 8개 이상의 날개 블록이 있는 구조물만 풍차로 사용할 수 있습니다.", "_": "Thank you for translating Create!" + } From 41f36d5176216aba0c795a11ab66c00bd0355365 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sat, 8 Jan 2022 14:17:00 +0100 Subject: [PATCH 42/42] Post-PR datagen --- src/generated/resources/.cache/cache | 10 +- .../assets/create/lang/unfinished/ja_jp.json | 840 ++++---- .../assets/create/lang/unfinished/ko_kr.json | 720 +++---- .../assets/create/lang/unfinished/pt_br.json | 1762 ++++++++++++++++- .../assets/create/lang/unfinished/zh_cn.json | 690 +++---- .../data/create/advancements/aesthetics.json | 4 +- .../resources/assets/create/lang/pt_br.json | 190 +- 7 files changed, 3017 insertions(+), 1199 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 0dcfc8f70..506f17eee 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -537,13 +537,13 @@ b984531bff326c47aa13a4aee8e230b03d97eb6e assets/create/lang/en_us.json 7c42d400daae6a49b30de6180dc467cb42afe602 assets/create/lang/unfinished/es_es.json 322d3a2b9303659ffd0633afe067e6f753d58d84 assets/create/lang/unfinished/fr_fr.json e85c66d2cbbc2db9b2f5504d44f345c5d4be47cb assets/create/lang/unfinished/it_it.json -f1176ef353e193be026d3c3581a9ed5f40576e6f assets/create/lang/unfinished/ja_jp.json -0e042c6fa4e1ed497c3eeee4203e41f4b9d644cf assets/create/lang/unfinished/ko_kr.json +b3068ddc87b96b7efbe565aaf369f6df0b26c2b0 assets/create/lang/unfinished/ja_jp.json +0a19b1eab0ca38f4e2e5ecfca34a1940ca737a09 assets/create/lang/unfinished/ko_kr.json 26c92f47ceacbc236bb2ef1a60837a361d39c07c assets/create/lang/unfinished/nl_nl.json 20dc5fd426c579319c1c5f8d8a0b961867dae295 assets/create/lang/unfinished/pl_pl.json -890c8c28f57270f5b8ff871d9b0d5a8c68c71cbd assets/create/lang/unfinished/pt_br.json +509f77b14d461bfc123a6b21c355bf7a73506fbb assets/create/lang/unfinished/pt_br.json dbb9348844951afa663d750b87f333f095007bec assets/create/lang/unfinished/ru_ru.json -60c5ddb490b9293b42647595f95e06ebbcf48c20 assets/create/lang/unfinished/zh_cn.json +9ff091ec8ce19d49a866d574d9e34c1f0d69b684 assets/create/lang/unfinished/zh_cn.json d5ebaf58f6356272d311d8e12bf4ecd218d7d29a 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 @@ -2125,7 +2125,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json 5049f72c327a88f175f6f9425909e098fc711100 assets/create/sounds.json -5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json +0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json 613e64b44bed959da899fdd54c1cacb227fb33f2 data/create/advancements/andesite_alloy.json 81885c6bfb85792c88aaa7c9b70f58832945d31f data/create/advancements/andesite_casing.json 83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json 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 62620b1d6..d925efa72 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,26 +1,26 @@ { - "_": "Missing Localizations: 330", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", "block.create.acacia_window": "アカシアの窓", - "block.create.acacia_window_pane": "アカシアの窓板", + "block.create.acacia_window_pane": "アカシアの板窓", "block.create.adjustable_chain_gearshift": "可変チェーンギアシフト", "block.create.analog_lever": "アナログレバー", - "block.create.andesite_belt_funnel": "安山岩のベルトファンネル", + "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_encased_cogwheel": "安山岩ケース入り歯車", + "block.create.andesite_encased_large_cogwheel": "安山岩ケース入り大きな歯車", + "block.create.andesite_encased_shaft": "安山岩ケース入りシャフト", "block.create.andesite_funnel": "安山岩ファンネル", "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": "シラカバの窓", - "block.create.birch_window_pane": "シラカバの窓板", + "block.create.birch_window_pane": "シラカバの板窓", "block.create.black_nixie_tube": "黒色のニキシー管", "block.create.black_sail": "黒色の帆", "block.create.black_seat": "黒色のシート", @@ -32,12 +32,12 @@ "block.create.blue_seat": "青色のシート", "block.create.blue_toolbox": "青色の工具箱", "block.create.blue_valve_handle": "青色のバルブハンドル", - "block.create.brass_belt_funnel": "真鍮のベルトファンネル", + "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_encased_cogwheel": "真鍮ケース入り歯車", + "block.create.brass_encased_large_cogwheel": "真鍮ケース入り大きな歯車", + "block.create.brass_encased_shaft": "真鍮ケース入りシャフト", "block.create.brass_funnel": "真鍮ファンネル", "block.create.brass_tunnel": "真鍮トンネル", "block.create.brown_nixie_tube": "茶色のニキシー管", @@ -45,7 +45,7 @@ "block.create.brown_seat": "茶色のシート", "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": "シュート", @@ -56,163 +56,163 @@ "block.create.controller_rail": "コントローラーレール", "block.create.copper_backtank": "銅のバックタンク", "block.create.copper_casing": "銅ケーシング", - "block.create.copper_shingle_slab": "UNLOCALIZED: Copper Shingle Slab", - "block.create.copper_shingle_stairs": "UNLOCALIZED: Copper Shingle Stairs", + "block.create.copper_shingle_slab": "銅の屋根板のハーフブロック", + "block.create.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_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_motor": "クリエイティブモーター", - "block.create.crimsite": "UNLOCALIZED: Crimsite", - "block.create.crimsite_pillar": "UNLOCALIZED: Crimsite Pillar", + "block.create.crimsite": "真紅岩", + "block.create.crimsite_pillar": "真紅岩の柱", "block.create.crimson_window": "真紅の窓", - "block.create.crimson_window_pane": "真紅の窓板", + "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": "水色の工具箱", "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.dark_oak_window_pane": "ダークオークの板窓", + "block.create.deepslate_pillar": "深層岩の柱", + "block.create.deepslate_zinc_ore": "深層亜鉛鉱石", "block.create.deployer": "デプロイヤー", "block.create.depot": "デポ", "block.create.diorite_pillar": "閃緑岩の柱", - "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "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.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.fluid_pipe": "液体パイプ", "block.create.fluid_tank": "液体タンク", "block.create.fluid_valve": "液体バルブ", - "block.create.flywheel": "勢車", + "block.create.flywheel": "弾み車", "block.create.framed_glass": "ガラス窓", - "block.create.framed_glass_pane": "ガラス窓板", + "block.create.framed_glass_pane": "ガラス板窓", "block.create.furnace_engine": "かまどエンジン", "block.create.gantry_carriage": "ガントリーキャリッジ", "block.create.gantry_shaft": "ガントリーシャフト", @@ -234,27 +234,27 @@ "block.create.haunted_bell": "憑りつかれた鐘", "block.create.honey": "ハチミツ", "block.create.horizontal_framed_glass": "横型ガラス窓", - "block.create.horizontal_framed_glass_pane": "横型ガラス窓板", + "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.jungle_window_pane": "ジャングルの板窓", "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_ochrum": "黄土岩の組石", + "block.create.layered_scorchia": "スコーチアの組石", "block.create.layered_scoria": "スコリアの組石", - "block.create.layered_tuff": "UNLOCALIZED: Layered Tuff", - "block.create.layered_veridium": "UNLOCALIZED: Layered Veridium", + "block.create.layered_tuff": "凝灰岩の組石", + "block.create.layered_veridium": "翡翠岩の組石", "block.create.lectern_controller": "書見台コントローラー", "block.create.light_blue_nixie_tube": "空色のニキシー菅", "block.create.light_blue_sail": "空色の帆", @@ -299,21 +299,21 @@ "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.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.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.ornate_iron_window_pane": "鉄の装飾板ガラス", + "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": "桃色の帆", @@ -321,68 +321,68 @@ "block.create.pink_toolbox": "桃色の", "block.create.pink_valve_handle": "桃色のバルブハンドル", "block.create.piston_extension_pole": "ピストン延長ポール", - "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.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.portable_storage_interface": "ポータブルストーレジインターフェース", "block.create.powered_latch": "パワードラッチ", "block.create.powered_toggle_latch": "パワードトグルラッチ", "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": "紫色の帆", @@ -390,7 +390,7 @@ "block.create.purple_toolbox": "紫色の工具箱", "block.create.purple_valve_handle": "紫色のバルブハンドル", "block.create.radial_chassis": "ラジアルシャーシ", - "block.create.raw_zinc_block": "UNLOCALIZED: Block of Raw Zinc", + "block.create.raw_zinc_block": "亜鉛の原石ブロック", "block.create.red_nixie_tube": "赤色のニキシー管", "block.create.red_sail": "赤色の帆", "block.create.red_seat": "赤色のシート", @@ -403,123 +403,123 @@ "block.create.rope_pulley": "ローププーリー", "block.create.rotation_speed_controller": "回転速度コントローラー", "block.create.sail_frame": "帆フレーム", - "block.create.schematic_table": "概略図テーブル", + "block.create.schematic_table": "概略図台", "block.create.schematicannon": "概略図砲", - "block.create.scorchia": "UNLOCALIZED: Scorchia", - "block.create.scorchia_pillar": "UNLOCALIZED: Scorchia Pillar", + "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_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_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.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_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_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.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.tuff_pillar": "UNLOCALIZED: Tuff Pillar", + "block.create.tiled_glass_pane": "タイル板ガラス", + "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.vertical_framed_glass_pane": "縦型ガラス板窓", "block.create.warped_window": "歪んだ窓", - "block.create.warped_window_pane": "歪んだ窓板", + "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.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": "白色の帆", @@ -561,7 +561,7 @@ "item.create.brass_nugget": "真鍮塊", "item.create.brass_sheet": "真鍮シート", "item.create.builders_tea": "建築家のお茶", - "item.create.chest_minecart_contraption": "からくりチェスト付きトロッコ", + "item.create.chest_minecart_contraption": "チェスト付きからくりトロッコ", "item.create.chocolate_bucket": "チョコレート入りバケツ", "item.create.chocolate_glazed_berries": "チョコレートグレーズドベリー", "item.create.chromatic_compound": "色彩の化合物", @@ -591,10 +591,10 @@ "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.furnace_minecart_contraption": "かまど付きからくりトロッコ", "item.create.goggles": "エンジニアのゴーグル", "item.create.golden_sheet": "金板", "item.create.handheld_worldshaper": "携帯型ワールドシェーパー", @@ -605,14 +605,14 @@ "item.create.incomplete_precision_mechanism": "組み立て中の精密機構", "item.create.iron_sheet": "鉄板", "item.create.linked_controller": "リンクコントローラー", - "item.create.minecart_contraption": "からくり付きトロッコ", + "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.raw_zinc": "亜鉛の原石", "item.create.red_sand_paper": "赤い紙やすり", "item.create.refined_radiance": "高貴な光輝", "item.create.rose_quartz": "ローズクォーツ", @@ -682,7 +682,7 @@ "advancement.create.water_wheel.desc": "水車を置いて、回転させよう!", "advancement.create.chocolate_wheel": "味わい深い原動機", "advancement.create.chocolate_wheel.desc": "溶けたチョコレートで水車を回す", - "advancement.create.lava_wheel": "マグマ・ホイール", + "advancement.create.lava_wheel": "溶岩車", "advancement.create.lava_wheel.desc": "こんなはずじゃなかった", "advancement.create.cuckoo": "今がその時だ", "advancement.create.cuckoo.desc": "鳩時計が就寝時間を告げるのを目撃する", @@ -695,7 +695,7 @@ "advancement.create.andesite_casing": "安山岩の時代", "advancement.create.andesite_casing.desc": "安山岩合金と木材を使って、基本のケーシングを作る", "advancement.create.mechanical_drill": "固定式採掘装置", - "advancement.create.mechanical_drill.desc": "メカニカルドリルを設置して、回転させる", + "advancement.create.mechanical_drill.desc": "メカニカルドリルを設置して、稼働させる", "advancement.create.press": "プレスで「ドン!」", "advancement.create.press.desc": "メカニカルプレスを稼働させて、いずれかのシートを作る", "advancement.create.polished_rose_quartz": "ピンク色のダイヤモンド", @@ -703,10 +703,10 @@ "advancement.create.electron_tube": "ピッポッパ", "advancement.create.electron_tube.desc": "便利な次世代の機械のために電子管を作る", "advancement.create.mechanical_saw": "固定式伐採装置", - "advancement.create.mechanical_saw.desc": "メカニカルソーを稼働させる", + "advancement.create.mechanical_saw.desc": "メカニカルソーを設置して、稼働させる", "advancement.create.basin": "お茶碗の作法", "advancement.create.basin.desc": "鉢を設置して、アイテムを投げ入れる", - "advancement.create.mixer": "いざ混合", + "advancement.create.mixer": "攪拌せよ", "advancement.create.mixer.desc": "鉢の上にメカニカルミキサーを設置して、素材をかき混ぜる", "advancement.create.blaze_burner": "生き生きとしたインテリア", "advancement.create.blaze_burner.desc": "ブレイズバーナーを手に入れる", @@ -737,23 +737,23 @@ "advancement.create.hose_pulley": "工業排水", "advancement.create.hose_pulley.desc": "ホースプーリーを下げて、液体の放出や吸引を見る", "advancement.create.infinite_water": "海の水ぜんぶ抜く大作戦", - "advancement.create.infinite_water.desc": "無限と言えるほどの大量の水を吸引する", + "advancement.create.infinite_water.desc": "無限と言えるほどに大量の水を吸引する", "advancement.create.infinite_lava": "星の核ぜんぶ抜く大作戦", - "advancement.create.infinite_lava.desc": "無限と言えるほどの大量の溶岩を吸引する", + "advancement.create.infinite_lava.desc": "無限と言えるほどに大量の溶岩を吸引する", "advancement.create.infinite_chocolate": "空想に溺れて", - "advancement.create.infinite_chocolate.desc": "無限と言えるほどの大量の溶けたチョコレートを吸引する", + "advancement.create.infinite_chocolate.desc": "無限と言えるほどに大量の溶けたチョコレートを吸引する", "advancement.create.crafter": "部品集結!", "advancement.create.crafter.desc": "メカニカルクラフターを設置して、回転力を供給する", "advancement.create.clockwork_bearing": "時計仕掛け", - "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングの上に構造物を組み立てる", + "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": "Engineers hate him!", + "advancement.create.speed_controller": "もう全部あいつ一人でいいんじゃないかな", "advancement.create.speed_controller.desc": "究極の伝動機、回転速度コントローラーを設置する", "advancement.create.flywheel": "工場の心臓部", - "advancement.create.flywheel.desc": "かまどエンジンを勢車に繋ぐ", + "advancement.create.flywheel.desc": "かまどエンジンを弾み車に繋ぐ", "advancement.create.overstress_flywheel": "ハイレベル応力", "advancement.create.overstress_flywheel.desc": "かまどエンジンに超過応力をかける", "advancement.create.precision_mechanism": "手間暇かけた骨董品", @@ -776,7 +776,7 @@ "advancement.create.wand_of_symmetry.desc": "対象の杖を作る", "advancement.create.extendo_grip": "ビヨヨーン!", "advancement.create.extendo_grip.desc": "マジックハンドを手に入れる", - "advancement.create.potato_cannon": "バキューン!", + "advancement.create.potato_cannon": "バキューン!", "advancement.create.potato_cannon.desc": "ポテトキャノンで敵を倒す", "advancement.create.dual_extendo_grip": "究極のビヨンビヨン時代", "advancement.create.dual_extendo_grip.desc": "二刀流のマジックハンドで超人的なリーチを手に入れる", @@ -800,7 +800,7 @@ "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は%3$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は何者かによって改造された鳩時計に爆破された", @@ -809,7 +809,7 @@ "create.menu.return": "メニューに戻る", "create.menu.configure": "設定...", - "create.menu.ponder_index": "思案索引", + "create.menu.ponder_index": "思案目次", "create.menu.only_ingame": "一時停止メニューで利用可能", "create.menu.project_page": "プロジェクトページ", "create.menu.report_bugs": "バグ報告", @@ -837,8 +837,8 @@ "create.recipe.wood_cutting": "自動製材", "create.recipe.sandpaper_polishing": "紙やすりでの研磨", "create.recipe.mystery_conversion": "神秘の変転", - "create.recipe.spout_filling": "アイテム注液口による注入", - "create.recipe.draining": "アイテムから排液", + "create.recipe.spout_filling": "アイテムへの注液", + "create.recipe.draining": "アイテムからの排液", "create.recipe.sequenced_assembly": "組立ライン", "create.recipe.assembly.next": "次の工程: %1$s", "create.recipe.assembly.step": "手順: %1$s:", @@ -885,7 +885,7 @@ "create.gui.scrollInput.defaultTitle": "オプションを選択:", "create.gui.scrollInput.scrollToModify": "スクロールして変更", - "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして値を調整", + "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして調整", "create.gui.scrollInput.scrollToSelect": "スクロールして選択", "create.gui.scrollInput.shiftScrollsFaster": "シフトを押してスクロールを加速", "create.gui.toolmenu.focusKey": "[%1$s] 長押しでフォーカスする", @@ -943,27 +943,27 @@ "create.terrainzapper.leftClickToSet": "ブロックをスニークせず左クリックでブロックを選択", "create.minecart_coupling.two_couplings_max": "トロッコを2つ以上連結させることはできません", - "create.minecart_coupling.unloaded": "列車の一部のあるチャンクがロードされていません", + "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.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.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": "1周24時間時針を最初に", + "create.contraptions.clockwork.hour_first_24": "24時針を最初に", "create.logistics.filter": "フィルター", "create.logistics.recipe_filter": "レシピフィルター", @@ -984,16 +984,16 @@ "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.tooManyPistonPoles": "このピストンに取り付けられているピストン延長ポールが多すぎます。\n最大値: %1$s", + "create.gui.assembly.exception.noPistonPoles": "ピストンにピストン延長ポールが不足しています。", + "create.gui.assembly.exception.not_enough_sails": "このからくりは帆ブロックが足りていません。: %1$s\nAが最低でも%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 は_十分な_回転を_していない_ようです。", + "create.gui.contraptions.not_fast_enough": "この %1$s は_十分速く_回転_していない_ようです。", "create.gui.contraptions.network_overstressed": "この仕掛けは_超過応力_のようです。さらに原動機を追加するか、_応力_への影響が大きい機械の回転速度を_下げて_ください。", "create.gui.adjustable_crate.title": "可変クレート", "create.gui.adjustable_crate.storageSpace": "収納スペース", @@ -1032,7 +1032,7 @@ "create.schematicAndQuill.fallbackName": "My Schematic", "create.schematicAndQuill.saved": "%1$s として保存しました", - "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図テーブルを使ってください", + "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図台を使ってください", "create.schematic.position": "位置", "create.schematic.rotation": "回転", "create.schematic.rotation.none": "無し", @@ -1049,7 +1049,7 @@ "create.schematic.tool.rotate": "回転", "create.schematic.tool.print": "印刷", "create.schematic.tool.flip": "裏返し", - "create.schematic.tool.deploy.description.0": "構造物を特定の場所に移動します", + "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]-スクロールして距離を変更します", @@ -1076,43 +1076,43 @@ "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.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.listPrinter": "材料リスト印刷機", "create.gui.schematicannon.gunpowderLevel": "火薬残量: %1$s%%", "create.gui.schematicannon.shotsRemaining": "残りショット数: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "バックアップ: %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.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.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.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.finished": "完了", "create.schematicannon.status.paused": "一時停止中", "create.schematicannon.status.stopped": "停止", "create.schematicannon.status.noGunpowder": "火薬不足", @@ -1128,7 +1128,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": "上記のいずれにも一致しない場合、アイテムは通り抜けます。空のブラックリストはすべてを受け入れます。", @@ -1200,14 +1200,14 @@ "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": "選択された属性:", @@ -1297,7 +1297,7 @@ "create.potato_cannon.ammo.reload_ticks": "リロード時間(tick): %1$s", "create.potato_cannon.ammo.knockback": "ノックバック: %1$s", - "create.hint.hose_pulley.title": "底なし搬出", + "create.hint.hose_pulley.title": "底なし汲み上げ可能", "create.hint.hose_pulley": "対象となる液体は無限とみなされています。", "create.hint.mechanical_arm_no_targets.title": "ターゲットが見つかりません", "create.hint.mechanical_arm_no_targets": "どうやらこの_メカニカルアーム_には_ターゲット_が割り当てられていないようです。_メカニカルアーム_を_手_に持って_右クリック_して、ベルト、デポ、ファンネルなどのブロックを選択します。", @@ -1324,7 +1324,7 @@ "create.command.killTPSCommand.argument.tickTime": "tickTime", "create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません。", - "create.contraption.minecart_contraption_illegal_pickup": "神秘的な力がからくりカートを世界に縛り付けています。", + "create.contraption.minecart_contraption_illegal_pickup": "超自然的な力がからくりカートを世界に縛り付けています。", "_": "->------------------------] Subtitles [------------------------<-", @@ -1335,7 +1335,7 @@ "create.subtitle.mechanical_press_activation_belt": "メカニカルプレスがボンと鳴る", "create.subtitle.fwoomp": "ポテトランチャーがバキューンと鳴る", "create.subtitle.worldshaper_place": "ワールドシェーパーが設置する", - "create.subtitle.sanding_long": "UNLOCALIZED: Sanding noises", + "create.subtitle.sanding_long": "研磨音", "create.subtitle.crushing_1": "粉砕音", "create.subtitle.depot_slide": "アイテムが滑る", "create.subtitle.saw_activate_stone": "メカニカルソーが動作する", @@ -1348,7 +1348,7 @@ "create.subtitle.controller_put": "コントローラのトントン音", "create.subtitle.cranking": "ハンドクランクが回る", "create.subtitle.wrench_remove": "機械を壊す", - "create.subtitle.sanding_short": "UNLOCALIZED: Sanding noises", + "create.subtitle.sanding_short": "研磨音", "create.subtitle.cogs": "歯車がゴロゴロと鳴る", "create.subtitle.slime_added": "スライムがぐしゃっとつぶれる", "create.subtitle.wrench_rotate": "レンチが使用される", @@ -1385,7 +1385,7 @@ "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": "_シート_の上に座ります。左シフトを押すと_シート_から離れます。", @@ -1446,7 +1446,7 @@ "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": "ワールドに設置できる構造物を保存します。ホログラムを必要に応じて配置し、_概略図砲_を使って建築します。", @@ -1473,7 +1473,7 @@ "block.create.schematicannon.tooltip.condition1": "右クリックしたとき", "block.create.schematicannon.tooltip.behaviour1": "_UI_を開きます。", - "block.create.schematic_table.tooltip": "概略図テーブル", + "block.create.schematic_table.tooltip": "概略図台", "block.create.schematic_table.tooltip.summary": "保存された構造物を_空の概略図_に書き込みます。", "block.create.schematic_table.tooltip.condition1": "空の概略図を入れたとき", "block.create.schematic_table.tooltip.behaviour1": "Schematicsフォルダから選択したファイルをアップロードします。", @@ -1507,7 +1507,7 @@ "block.create.toolbox.tooltip": "工具箱", "block.create.toolbox.tooltip.summary": "発明家の最愛の仲間。異なる8種類のアイテムを大量に_収納_できる便利グッズ。", - "block.create.toolbox.tooltip.condition1": "拾ったとき", + "block.create.toolbox.tooltip.condition1": "壊したとき", "block.create.toolbox.tooltip.behaviour1": "インベントリの_内容_を_保持_します", "block.create.toolbox.tooltip.condition2": "範囲内に置いたとき", "block.create.toolbox.tooltip.behaviour2": "_近く_にいる_プレイヤー_が_工具箱_の_キーバインド_を押すと、工具箱に_触れずに_アクセスできます", @@ -1599,10 +1599,10 @@ "item.create.minecart_coupling.tooltip.condition1": "トロッコに使ったとき", "item.create.minecart_coupling.tooltip.behaviour1": "_2台_のトロッコを連結します。それらは移動中に_一定_の_距離_を保とうします。", - "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": "装飾用の_真鍮の鐘_。_魂の炎_の真上に置くと、別の使い方が見つかるかも...", @@ -1674,8 +1674,8 @@ "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_1": "安山岩トンネルは、ベルトを隠せます", + "create.ponder.andesite_tunnel.text_2": "安山岩トンネルが横につながっていると...", "create.ponder.andesite_tunnel.text_3": "...通過するアイテムスタックから正確に1つのアイテムを分割します", "create.ponder.andesite_tunnel.text_4": "残ったものは、そのルートを進み続けます", @@ -1695,7 +1695,7 @@ "create.ponder.bearing_modes.text_2": "通常のブロックに戻らないように設定したり、開始時の角度のみブロックに戻るように設定したりできます", "create.ponder.belt_casing.header": "ケース入りベルト", - "create.ponder.belt_casing.text_1": "真鍮か安山岩のケーシングを使ってメカニカルベルトを飾れます", + "create.ponder.belt_casing.text_1": "真鍮か安山岩ケーシングを使ってメカニカルベルトを飾れます", "create.ponder.belt_casing.text_2": "ケーシングはレンチを使って外せます", "create.ponder.belt_connector.header": "メカニカルベルトの使い方", @@ -1821,10 +1821,10 @@ "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": "クリエイティブ液体タンクは、液体を無限に供給できます", @@ -1945,8 +1945,8 @@ "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.header": "弾み車による回転力の生成", + "create.ponder.flywheel.text_1": "かまどエンジンで回転力を生成するには、弾み車が必要です", "create.ponder.flywheel.text_2": "これによって生成される回転力は、非常に大きな応力許容量を持っています", "create.ponder.flywheel.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります", @@ -2046,16 +2046,16 @@ "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": "...長さはその三倍まで伸ばせます", - "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.text_1": "大きな歯車は、直角に接続できます", @@ -2260,17 +2260,17 @@ "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": "パルスリピーターは、レッドストーン信号を短縮して1tickのパルス信号にします", - "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_2": "マウスホイールで、遅延する時間を調整できます", + "create.ponder.pulse_repeater.text_3": "最大30分まで設定できます", "create.ponder.radial_chassis.header": "ラジアルシャーシによるブロックの取り付け", "create.ponder.radial_chassis.text_1": "ラジアルシャーシは、同じ種類のシャーシと繋がります", 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 288ff3eab..b62e6ec41 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: 330", + "_": "Missing Localizations: 2", "_": "->------------------------] Game Elements [------------------------<-", @@ -9,14 +9,14 @@ "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_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": "자작나무 유리창", @@ -35,8 +35,8 @@ "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_cogwheel": "황동 케이스를 씌운 톱니바퀴", + "block.create.brass_encased_large_cogwheel": "황동 케이스를 씌운 큰 톱니바퀴", "block.create.brass_encased_shaft": "황동 케이스를 씌운 축", "block.create.brass_funnel": "황동 퍼널", "block.create.brass_tunnel": "황동 터널", @@ -45,7 +45,7 @@ "block.create.brown_seat": "갈색 좌석", "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": "슈트", @@ -56,135 +56,135 @@ "block.create.controller_rail": "방향 레일", "block.create.copper_backtank": "구리 산소통", "block.create.copper_casing": "구리 케이스", - "block.create.copper_shingle_slab": "UNLOCALIZED: Copper Shingle Slab", - "block.create.copper_shingle_stairs": "UNLOCALIZED: Copper Shingle Stairs", + "block.create.copper_shingle_slab": "구리 판자 반 블록", + "block.create.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_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_motor": "크리에이티브 모터", - "block.create.crimsite": "UNLOCALIZED: Crimsite", - "block.create.crimsite_pillar": "UNLOCALIZED: Crimsite Pillar", + "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": "청록색 좌석", @@ -192,21 +192,21 @@ "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.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "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.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.fluid_pipe": "액체 파이프", "block.create.fluid_tank": "액체 탱크", "block.create.fluid_valve": "액체 밸브", @@ -237,24 +237,24 @@ "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_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_ochrum": "이어지는 황토암", + "block.create.layered_scorchia": "이어지는 짙은 스코리아", "block.create.layered_scoria": "이어지는 스코리아", - "block.create.layered_tuff": "UNLOCALIZED: Layered Tuff", - "block.create.layered_veridium": "UNLOCALIZED: Layered Veridium", + "block.create.layered_tuff": "이어지는 응회암", + "block.create.layered_veridium": "이어지는 심록암", "block.create.lectern_controller": "독서대 조작기", "block.create.light_blue_nixie_tube": "하늘색 닉시관", "block.create.light_blue_sail": "하늘색 날개", @@ -300,20 +300,20 @@ "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": "주황색 공구상자", "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": "분홍색 날개", @@ -321,68 +321,68 @@ "block.create.pink_toolbox": "분홍색 공구상자", "block.create.pink_valve_handle": "분홍색 밸브 손잡이", "block.create.piston_extension_pole": "피스톤 연장 축", - "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.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_toggle_latch": "레드스톤 토글 걸쇠", "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": "보라색 날개", @@ -390,7 +390,7 @@ "block.create.purple_toolbox": "보라색 공구상자", "block.create.purple_valve_handle": "보라색 밸브 손잡이", "block.create.radial_chassis": "원형 섀시", - "block.create.raw_zinc_block": "UNLOCALIZED: Block of Raw Zinc", + "block.create.raw_zinc_block": "아연 원석 블록", "block.create.red_nixie_tube": "빨간색 닉시관", "block.create.red_sail": "빨간색 날개", "block.create.red_seat": "빨간색 좌석", @@ -405,70 +405,70 @@ "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.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_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_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.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_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_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": "속도 계측기", @@ -481,45 +481,45 @@ "block.create.stressometer": "피로도 계측기", "block.create.tiled_glass": "타일 유리", "block.create.tiled_glass_pane": "타일 유리판", - "block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar", + "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.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": "하얀색 날개", @@ -591,7 +591,7 @@ "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": "화로가 실린 광산 수레 구조물", @@ -612,7 +612,7 @@ "item.create.powdered_obsidian": "흑요석 가루", "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": "장밋빛 석영", @@ -749,7 +749,7 @@ "advancement.create.nixie_tube": "나는 스타일있게 표시해", "advancement.create.nixie_tube.desc": "닉시관을 만들고 설치하세요.", "advancement.create.deployer": "찌르고, 설치하고, 공격!", - "advancement.create.deployer.desc": "당신의 분신, 배포기를 설치하고 작동시키세요.", + "advancement.create.deployer.desc": "당신의 분신, 기계 손을 설치하고 작동시키세요.", "advancement.create.speed_controller": "엔지니어들이 이 장치를 싫어합니다", "advancement.create.speed_controller.desc": "궁극의 회전속도 변경장치, 회전 속도 컨트롤러를 설치하세요.", "advancement.create.flywheel": "공장의 심장", @@ -767,7 +767,7 @@ "advancement.create.arm_blaze_burner": "연료를 줄 수 있는 정도의 능력", "advancement.create.arm_blaze_burner.desc": "기계 팔이 블레이즈 버너에 연료를 넣도록 하세요.", "advancement.create.fist_bump": "하이파이브!", - "advancement.create.fist_bump.desc": "두 배포기를 서로 부딫치게 하세요.", + "advancement.create.fist_bump.desc": "두 기계 손을 서로 부딫치게 하세요.", "advancement.create.crushing_wheel": "한 쌍의 거인들", "advancement.create.crushing_wheel.desc": "더 많은 재료를 더 효율적으로 갈 분쇄 휠을 만드세요.", "advancement.create.blaze_cake": "폭주", @@ -804,7 +804,7 @@ "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.deployer.damage_source_name": "기계 손", "create.block.cart_assembler.invalid": "카트 조립기를 레일 위에 설치하세요", "create.menu.return": "메뉴로 돌아가기", @@ -825,7 +825,7 @@ "create.recipe.fan_blasting.fan": "용암과 선풍기", "create.recipe.pressing": "압착", "create.recipe.mixing": "혼합", - "create.recipe.deploying": "Deploying", + "create.recipe.deploying": "행동 모방", "create.recipe.automatic_shapeless": "무형 자동 조합", "create.recipe.automatic_brewing": "자동 양조", "create.recipe.packing": "압축", @@ -1098,12 +1098,12 @@ "create.gui.schematicannon.option.replaceWithAny": "온전한 블록을 아무 재료로 대체함", "create.gui.schematicannon.option.replaceWithEmpty": "온전한 블록을 공기로 채움", "create.gui.schematicannon.option.skipMissing": "부족한 블록을 무시하고 진행", - "create.gui.schematicannon.option.skipTileEntities": "타일 엔티티를 보호", + "create.gui.schematicannon.option.skipTileEntities": "UNLOCALIZED: Protect Tile Entities", "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.skipTileEntities.description": "UNLOCALIZED: The cannon will avoid replacing data holding blocks such as Chests.", "create.gui.schematicannon.option.dontReplaceSolid.description": "대포가 작업구역의 온전한 블록을 대체하지 않습니다.", "create.gui.schematicannon.option.replaceWithSolid.description": "대포가 작업구역의 온전한 블록을 대포가 가진 재료로 대체합니다.", "create.gui.schematicannon.option.replaceWithAny.description": "대포가 작업구역의 온전한 블록을 대포가 가진 어떠한 재료로든 대체합니다.", @@ -1128,7 +1128,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": "위에 등록된 아이템은 통과할 수 없습니다. 빈 블랙리스트는 모든 아이템을 통과시킵니다.", @@ -1303,8 +1303,8 @@ "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.title": "기계 손 아이템 과적", + "create.hint.full_deployer": "이 _기계 손_은 _배출_할 아이템을 가지고 있습니다. 호퍼 , 퍼널 등을 이용해 아이템을 빼내세요.", "create.gui.config.overlay1": "Hi :)", "create.gui.config.overlay2": "This is a sample overlay", @@ -1335,7 +1335,7 @@ "create.subtitle.mechanical_press_activation_belt": "압착기가 작동함", "create.subtitle.fwoomp": "감자포를 쏨", "create.subtitle.worldshaper_place": "세계편집기가 쏨", - "create.subtitle.sanding_long": "UNLOCALIZED: Sanding noises", + "create.subtitle.sanding_long": "사포를 사용함", "create.subtitle.crushing_1": "분쇄되는 소리", "create.subtitle.depot_slide": "아이템이 미끄러짐", "create.subtitle.saw_activate_stone": "톱이 작동함", @@ -1348,7 +1348,7 @@ "create.subtitle.controller_put": "조작기를 놓음", "create.subtitle.cranking": "크랭크가 돌아감", "create.subtitle.wrench_remove": "장치가 부숴짐", - "create.subtitle.sanding_short": "UNLOCALIZED: Sanding noises", + "create.subtitle.sanding_short": "사포를 사용함", "create.subtitle.cogs": "톱니바퀴가 돌아감", "create.subtitle.slime_added": "슬라임이 철퍽거림", "create.subtitle.wrench_rotate": "렌치를 사용함", @@ -1542,7 +1542,7 @@ "block.create.controller_rail.tooltip.behaviour1": "_신호 세기에 따라_ 지나가는 수레를 _가속, 감속_합니다. 레드스톤 신호는 다른 방향 레일에도 전달됩니다. 두 방향레일에 다른 세기를 전달하면 중간 레일들은 두 세기 사이의 신호를 받습니다.", "item.create.sand_paper.tooltip": "SAND PAPER", - "item.create.sand_paper.tooltip.summary": "재료들을 _윤내는 데_ 쓰이는 거친 종이입니다. 배포기가 자동으로 쓸 수 있습니다.", + "item.create.sand_paper.tooltip.summary": "재료들을 _윤내는 데_ 쓰이는 거친 종이입니다. 기계 손이 자동으로 쓸 수 있습니다.", "item.create.sand_paper.tooltip.condition1": "사용할 때", "item.create.sand_paper.tooltip.behaviour1": "_다른 손_에있는 아이템과 _바닥에 있는 아이템_을 윤냅니다.", @@ -1599,10 +1599,10 @@ "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": "NUGGET OF EXPERIENCE", + "item.create.experience_nugget.tooltip.summary": "_띵!_ 당신의 멋진 발명품에서 탄생한 _영감_의 알맹이입니다.", + "item.create.experience_nugget.tooltip.condition1": "사용했을 때", + "item.create.experience_nugget.tooltip.behaviour1": "담겨져 있던 _경험치_를 _배출_합니다.", "block.create.peculiar_bell.tooltip": "PECULIAR BELL", "block.create.peculiar_bell.tooltip.summary": "장식을 위한 황동 종입니다. 영혼 불꽃 위에 설치하면 _기이한_ 일이 일어난다고 합니다...", @@ -1722,7 +1722,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": "안산암 퍼널는 아이템 한 개만 뽑아냅니다.", @@ -1821,10 +1821,10 @@ "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": "크리에이티브 탱크는 무한히 액체를 공급합니다.", @@ -1842,41 +1842,41 @@ "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.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_2": "기계 손은 한 칸 떨어진 블록에 상호작용합니다.", "create.ponder.deployer.text_3": "바로 앞에 블록이 있어도 상괸없습니다.", - "create.ponder.deployer.text_4": "배포기가 할 수 있는 것:", + "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.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.text_1": "배포기가 적절한 아이템을 가지고 있으면, 아래 있는 아이템을 가공합니다.", - "create.ponder.deployer_processing.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.header": "레드스톤과 기계 손", + "create.ponder.deployer_redstone.text_1": "레드스톤 신호를 받으면, 기계 손은 작동하지 않습니다.", + "create.ponder.deployer_redstone.text_2": "작동을 멈추기 전에, 기계 손은 입력된 행동을 마무리합니다.", "create.ponder.deployer_redstone.text_3": "따라서 부정 펄스는 한 번만 작동하게 합니다.", "create.ponder.depot.header": "아이템 거치대 사용하기", @@ -2046,16 +2046,16 @@ "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.text_1": "큰 톱니바퀴는 수직으로 서로 맞물립니다.", @@ -2260,17 +2260,17 @@ "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": "펄스 중계기는 어느 레드스톤 신호라도 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": "펄스 중계기는 모든 레드스톤 신호를 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": "원형 섀시는 다른 원형 섀시와 이어집니다.", 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 200c07ed2..04983e587 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,7 +1,10 @@ { - "_": "Missing Localizations: 1670", + "_": "Missing Localizations: 1553", "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "UNLOCALIZED: Acacia Window", + "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", "block.create.adjustable_chain_gearshift": "Correia Ajustável", "block.create.analog_lever": "Alavanca Analógica", "block.create.andesite_belt_funnel": "Funil de Esteira de Andesito", @@ -9,10 +12,15 @@ "block.create.andesite_encased_cogwheel": "Roda dentada revestida com andesito", "block.create.andesite_encased_large_cogwheel": "Roda dentada grande revestida com andesito", "block.create.andesite_encased_shaft": "Eixo revestido com latão", - "block.create.andesite_funnel": "Funil de Andesito",, + "block.create.andesite_funnel": "Funil de Andesito", + "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.andesite_tunnel": "Tunel de Andesito", + "block.create.asurine": "UNLOCALIZED: Asurine", + "block.create.asurine_pillar": "UNLOCALIZED: Asurine Pillar", "block.create.basin": "Bacia", "block.create.belt": "Esteira Mecânica", + "block.create.birch_window": "UNLOCALIZED: Birch Window", + "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", "block.create.black_nixie_tube": "Tubo nixie preto", "block.create.black_sail": "Vela preta", "block.create.black_seat": "Assento preto", @@ -37,6 +45,7 @@ "block.create.brown_seat": "Assento marrom", "block.create.brown_toolbox": "Caixa de ferramentas marrom", "block.create.brown_valve_handle": "Válvula marrom", + "block.create.calcite_pillar": "UNLOCALIZED: Calcite Pillar", "block.create.cart_assembler": "Montador de Carrinho de Mina", "block.create.chocolate": "Chocolate", "block.create.chute": "Calha", @@ -47,33 +56,170 @@ "block.create.controller_rail": "Trilho Controlador", "block.create.copper_backtank": "Tanque Traseiro de Cobre", "block.create.copper_casing": "Revestimento de Cobre", + "block.create.copper_shingle_slab": "UNLOCALIZED: Copper Shingle Slab", + "block.create.copper_shingle_stairs": "UNLOCALIZED: Copper Shingle Stairs", + "block.create.copper_shingles": "UNLOCALIZED: Copper Shingles", + "block.create.copper_tile_slab": "UNLOCALIZED: Copper Tile Slab", + "block.create.copper_tile_stairs": "UNLOCALIZED: Copper Tile Stairs", + "block.create.copper_tiles": "UNLOCALIZED: Copper Tiles", "block.create.copper_valve_handle": "Válvula de Cobre", "block.create.creative_crate": "Caixa Criativa", "block.create.creative_fluid_tank": "Tanque de Fluidos Criativo", "block.create.creative_motor": "Motor Criativo", + "block.create.crimsite": "UNLOCALIZED: Crimsite", + "block.create.crimsite_pillar": "UNLOCALIZED: Crimsite Pillar", + "block.create.crimson_window": "UNLOCALIZED: Crimson Window", + "block.create.crimson_window_pane": "UNLOCALIZED: Crimson Window Pane", "block.create.crushing_wheel": "Roda de Moer", + "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", "block.create.cuckoo_clock": "Relógio Cuckoo", + "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.cyan_nixie_tube": "Tubo nixie ciano", "block.create.cyan_sail": "Vela ciano", "block.create.cyan_seat": "Assento ciano", "block.create.cyan_toolbox": "caixa de ferramentas ciano", "block.create.cyan_valve_handle": "Válvula ciano", + "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", + "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", + "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", "block.create.deepslate_zinc_ore": "Minério de zinco de ardósia", "block.create.deployer": "Implantador", "block.create.depot": "Depósito", + "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", + "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", "block.create.encased_chain_drive": "Correia Revestida", "block.create.encased_fan": "Ventilador Revestida", "block.create.encased_fluid_pipe": "Cano de Fluidos Revestido", + "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.fluid_pipe": "Cano de Fluido", "block.create.fluid_tank": "Tanque de fluido", "block.create.fluid_valve": "Válvula", "block.create.flywheel": "Volante de inércia", + "block.create.framed_glass": "UNLOCALIZED: Framed Glass", + "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", "block.create.furnace_engine": "Motor de Fornalha", "block.create.gantry_carriage": "Carruagem de Pórtico", "block.create.gantry_shaft": "Eixo de Pórtico", "block.create.gearbox": "Caixa de Transmissão", "block.create.gearshift": "Câmbio", "block.create.glass_fluid_pipe": "Cano de Fluido de Vidro", + "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", "block.create.gray_nixie_tube": "Tubo nixie cinza", "block.create.gray_sail": "Vela cinza", "block.create.gray_seat": "Assento cinza", @@ -87,9 +233,28 @@ "block.create.hand_crank": "Manivela", "block.create.haunted_bell": "Sino assombrado", "block.create.honey": "Mel", + "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", + "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", "block.create.hose_pulley": "Polia de Mangueira", "block.create.item_drain": "Dreno de Item", "block.create.item_vault": "Cofre de itens", + "block.create.jungle_window": "UNLOCALIZED: Jungle Window", + "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", + "block.create.large_cogwheel": "UNLOCALIZED: Large Cogwheel", + "block.create.layered_andesite": "UNLOCALIZED: 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": "UNLOCALIZED: Layered Diorite", + "block.create.layered_dripstone": "UNLOCALIZED: Layered Dripstone", + "block.create.layered_granite": "UNLOCALIZED: Layered Granite", + "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", + "block.create.layered_ochrum": "UNLOCALIZED: Layered Ochrum", + "block.create.layered_scorchia": "UNLOCALIZED: Layered Scorchia", + "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", + "block.create.layered_tuff": "UNLOCALIZED: Layered Tuff", + "block.create.layered_veridium": "UNLOCALIZED: Layered Veridium", "block.create.lectern_controller": "Controle de Atril", "block.create.light_blue_nixie_tube": "tubo nixie azul claro", "block.create.light_blue_sail": "Vela azul claro", @@ -133,10 +298,22 @@ "block.create.mysterious_cuckoo_clock": "Relógio cuckoo", "block.create.nixie_tube": "Tubo Nixie", "block.create.nozzle": "Bocal", + "block.create.oak_window": "UNLOCALIZED: Oak Window", + "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", + "block.create.ochrum": "UNLOCALIZED: Ochrum", + "block.create.ochrum_pillar": "UNLOCALIZED: Ochrum Pillar", "block.create.orange_sail": "Vela laranja", "block.create.orange_seat": "Assento laranja", "block.create.orange_toolbox": "Caixa de ferramentas laranja", "block.create.orange_valve_handle": "Válvula laranja", + "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", + "block.create.ornate_iron_window_pane": "UNLOCALIZED: 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": "Sino peculiar", "block.create.pink_nixie_tube": "Tubo nixie rosa", "block.create.pink_sail": "Vela rosa", @@ -144,9 +321,66 @@ "block.create.pink_toolbox": "Caixa de ferramentas rosa", "block.create.pink_valve_handle": "Válvula rosa", "block.create.piston_extension_pole": "Vara de Extensão do Pistão", + "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": "Interface de fluidos portátil", "block.create.portable_storage_interface": "Interface de armazenamento portátil", "block.create.powered_latch": "UNLOCALIZED: Powered Latch", + "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", "block.create.pulley_magnet": "Imã da Polia", "block.create.pulse_extender": "Extensor de pulso", "block.create.pulse_repeater": "Repetidor de Pulso", @@ -171,22 +405,121 @@ "block.create.sail_frame": "moldura de vela", "block.create.schematic_table": "Mesa de Esquema", "block.create.schematicannon": "Canhão de Esquema", + "block.create.scorchia": "UNLOCALIZED: Scorchia", + "block.create.scorchia_pillar": "UNLOCALIZED: Scorchia Pillar", + "block.create.scoria": "UNLOCALIZED: Scoria", + "block.create.scoria_pillar": "UNLOCALIZED: Scoria Pillar", "block.create.secondary_linear_chassis": "Chassis linear secundário", "block.create.sequenced_gearshift": "Câmbio sequenciado", "block.create.shadow_steel_casing": "Revestiment das Sombras", "block.create.shaft": "Eixo", + "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_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_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": "calha Inteligente", "block.create.smart_fluid_pipe": "Cano de Fluidos Inteligente", "block.create.speedometer": "Velocímetro", "block.create.spout": "Bica", + "block.create.spruce_window": "UNLOCALIZED: Spruce Window", + "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", "block.create.sticker": "Adesivo", "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", "block.create.stockpile_switch": "Disjuntor de Armazenamento", "block.create.stressometer": "Estressómetro", "block.create.tiled_glass": "Vidro Entalhado", "block.create.tiled_glass_pane": "Vidraça Entalhada", + "block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar", "block.create.turntable": "Mesa giratória", + "block.create.veridium": "UNLOCALIZED: Veridium", + "block.create.veridium_pillar": "UNLOCALIZED: Veridium Pillar", + "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", + "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", + "block.create.warped_window": "UNLOCALIZED: Warped Window", + "block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane", "block.create.water_wheel": "Roda de Água", + "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": "Ejetor ´ponderado", "block.create.white_nixie_tube": "Tubo nixie branco", "block.create.white_sail": "Vela branca", @@ -321,8 +654,10 @@ "advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.", "advancement.create.upward_chute": "Abdução aéria", "advancement.create.upward_chute.desc": "Assista um item voar para cima numa calha com ventilador.", + "advancement.create.belt_funnel": "UNLOCALIZED: Funnels' Flappy Danglers", "advancement.create.belt_funnel.desc": "Coloque um funil lateral em cima de uma esteira ou depósito para criar um tipo especial.", "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", + "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two belt mounted funnels kiss.", "advancement.create.fan": "Dobrador de ar mecânico", "advancement.create.fan.desc": "Pegue uma carona no fluxo de ar provido pelo ventilador revestido.", "advancement.create.fan_lava": "Aquecedor de espaço geotermal", @@ -352,10 +687,10 @@ "advancement.create.cuckoo": "É a hora?", "advancement.create.cuckoo.desc": "Veja um relógio cuckoo anunciar a hora de dormir.", "advancement.create.millstone": "Moedor portátil", - "advancement.create.millstone.desc": "Coloque e energize uma pedra de moer - "advancement.create.windmill": "Uma brisa moderada - "advancement.create.windmill.desc": "Monte um moinho de vento - "advancement.create.maxed_windmill": "Uma brisa forte + "advancement.create.millstone.desc": "Coloque e energize uma pedra de moer", + "advancement.create.windmill": "Uma brisa moderada", + "advancement.create.windmill.desc": "Monte um moinho de vento", + "advancement.create.maxed_windmill": "Uma brisa forte", "advancement.create.maxed_windmill.desc": "Monte um moinho de vento com força maxima.", "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.", @@ -385,6 +720,7 @@ "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.spout_potion": "UNLOCALIZED: Global Brewery", "advancement.create.spout_potion.desc": "Assista uma bica encher uma garrafa com uma poção.", "advancement.create.chocolate": "Um mundo de imaginação", "advancement.create.chocolate.desc": "Obtenha um balde de chocolate.", @@ -430,8 +766,11 @@ "advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saida.", "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.fist_bump": "UNLOCALIZED: Pound It, Bro!", + "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", "advancement.create.crushing_wheel": "Par de gigantes", "advancement.create.crushing_wheel.desc": "Crie algumas rodas de moer para triturar alguns materiais eficientemente.", + "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", "advancement.create.blaze_cake.desc": "Asse para o seu queimador de blaze um bolo especial.", "advancement.create.wand_of_symmetry": "Espelhos radiantes", "advancement.create.wand_of_symmetry.desc": "Fabrique uma varinha de simetria.", @@ -465,7 +804,19 @@ "death.attack.create.cuckoo_clock_explosion": "%1$s foi explodido por relógio cuco adulterado", "death.attack.create.cuckoo_clock_explosion.player": "%1$s foi explodido por relógio cuco adulterado", + "create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", + "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", + + "create.menu.return": "UNLOCALIZED: Return to Menu", + "create.menu.configure": "UNLOCALIZED: Configure...", + "create.menu.ponder_index": "UNLOCALIZED: Ponder Index", + "create.menu.only_ingame": "UNLOCALIZED: Available in the Pause Menu", + "create.menu.project_page": "UNLOCALIZED: Project Page", + "create.menu.report_bugs": "UNLOCALIZED: Report Issues", + "create.menu.support": "UNLOCALIZED: Support Us", + "create.recipe.crushing": "Moendo", + "create.recipe.milling": "UNLOCALIZED: Milling", "create.recipe.fan_washing": "Lavagem em massa", "create.recipe.fan_washing.fan": "Ventilador atrás de água", "create.recipe.fan_smoking": "Defumação em massa", @@ -475,8 +826,34 @@ "create.recipe.pressing": "Prensa Mecânica", "create.recipe.mixing": "Misturando", "create.recipe.deploying": "Implantando", + "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", + "create.recipe.automatic_brewing": "UNLOCALIZED: Automated Brewing", "create.recipe.packing": "Compactando", + "create.recipe.automatic_packing": "UNLOCALIZED: Automated Packing", "create.recipe.sawing": "UNLOCALIZED: Sawing", + "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", + "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", + "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", + "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", + "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", + "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", + "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", + "create.recipe.draining": "UNLOCALIZED: Item Draining", + "create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly", + "create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s", + "create.recipe.assembly.step": "UNLOCALIZED: Step %1$s:", + "create.recipe.assembly.progress": "UNLOCALIZED: Progress: %1$s/%2$s", + "create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press", + "create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s", + "create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s", + "create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw", + "create.recipe.assembly.repeat": "UNLOCALIZED: Repeat Sequence %1$s Times", + "create.recipe.assembly.junk": "UNLOCALIZED: Random salvage", + "create.recipe.processing.chance": "UNLOCALIZED: %1$s%% Chance", + "create.recipe.deploying.not_consumed": "UNLOCALIZED: Not Consumed", + "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", + "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", + "create.recipe.heat_requirement.superheated": "UNLOCALIZED: Super-Heated", "create.generic.range": "Área", "create.generic.radius": "Raio", @@ -502,13 +879,24 @@ "create.action.discard": "Descartar", "create.keyinfo.toolmenu": "Menu Focal da Ferramenta", + "create.keyinfo.toolbelt": "UNLOCALIZED: Access Nearby Toolboxes", + "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", + "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", "create.gui.scrollInput.defaultTitle": "Escolha uma Opção:", "create.gui.scrollInput.scrollToModify": "Role o mouse para Modificar", "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", "create.gui.scrollInput.scrollToSelect": "Role o mouse para Selecionar", + "create.gui.scrollInput.shiftScrollsFaster": "UNLOCALIZED: Shift to Scroll Faster", "create.gui.toolmenu.focusKey": "Segure [%1$s] para Focar", "create.gui.toolmenu.cycle": "[SCROLL] para Circular", + + "create.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.gui.symmetryWand.mirrorType": "Espelhar", "create.gui.symmetryWand.orientation": "Orientação", @@ -522,16 +910,125 @@ "create.orientation.alongZ": "Através de Z", "create.orientation.alongX": "Através de X", + "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Blockzapper", + "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", + "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", + "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", + "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", + "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", + "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", + "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", + "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", + "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", + "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", + "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", + "create.gui.terrainzapper.placement.inserted": "UNLOCALIZED: Inserted", + "create.gui.terrainzapper.brush": "UNLOCALIZED: Brush", + "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", + "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", + "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", + "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", + "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", + "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", + "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", + "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", + "create.gui.terrainzapper.tool.replace": "UNLOCALIZED: Replace", + "create.gui.terrainzapper.tool.clear": "UNLOCALIZED: Clear", + "create.gui.terrainzapper.tool.overlay": "UNLOCALIZED: Overlay", + "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", + + "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", + "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", + "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", + + "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", + "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", + "create.minecart_coupling.no_loops": "UNLOCALIZED: Couplings cannot form a loop", + "create.minecart_coupling.removed": "UNLOCALIZED: Removed all couplings from minecart", + "create.minecart_coupling.too_far": "UNLOCALIZED: Minecarts are too far apart", + + "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", + "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", + "create.contraptions.movement_mode.move_place_returned": "UNLOCALIZED: Place only in Starting Position", + "create.contraptions.movement_mode.move_never_place": "UNLOCALIZED: Place only when Anchor Destroyed", + "create.contraptions.movement_mode.rotate_place": "UNLOCALIZED: Always Place when Stopped", + "create.contraptions.movement_mode.rotate_place_returned": "UNLOCALIZED: Only Place near Initial Angle", + "create.contraptions.movement_mode.rotate_never_place": "UNLOCALIZED: Only Place when Anchor Destroyed", + "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", + "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", + "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", + "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", + "create.contraptions.windmill.rotation_direction": "UNLOCALIZED: Rotation Direction", + "create.contraptions.clockwork.clock_hands": "UNLOCALIZED: Clock Hands", + "create.contraptions.clockwork.hour_first": "UNLOCALIZED: Hour hand first", + "create.contraptions.clockwork.minute_first": "UNLOCALIZED: Minute hand first", + "create.contraptions.clockwork.hour_first_24": "UNLOCALIZED: 24-Hour hand first", + + "create.logistics.filter": "UNLOCALIZED: Filter", + "create.logistics.recipe_filter": "UNLOCALIZED: Recipe Filter", + "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", + "create.logistics.firstFrequency": "UNLOCALIZED: Freq. #1", + "create.logistics.secondFrequency": "UNLOCALIZED: Freq. #2", + "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", + "create.gui.goggles.generator_stats": "Estatísticas do gerador:", "create.gui.goggles.kinetic_stats": "Estatísticas cinéticas:", "create.gui.goggles.at_current_speed": "Na velocidade atual", "create.gui.goggles.pole_length": "Comprimento da vara:", + "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", + "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", + "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", + "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", + "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", + "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", + "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", + "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", + "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", + "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", + "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", + "create.gui.stressometer.capacity": "UNLOCALIZED: Remaining Capacity", + "create.gui.stressometer.overstressed": "UNLOCALIZED: Overstressed", + "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", + "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", + "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", + "create.gui.adjustable_crate.title": "UNLOCALIZED: Adjustable Crate", + "create.gui.adjustable_crate.storageSpace": "UNLOCALIZED: Storage Space", + "create.gui.stockpile_switch.title": "UNLOCALIZED: Stockpile Switch", + "create.gui.stockpile_switch.invert_signal": "UNLOCALIZED: Invert Signal", + "create.gui.stockpile_switch.move_to_lower_at": "UNLOCALIZED: Move to lower lane at %1$s%%", + "create.gui.stockpile_switch.move_to_upper_at": "UNLOCALIZED: Move to upper lane at %1$s%%", + "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", + "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", + "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", + "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "UNLOCALIZED: Angle", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", + "create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "UNLOCALIZED: Distance", + "create.gui.sequenced_gearshift.instruction.delay.descriptive": "UNLOCALIZED: Timed Delay", + "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", + "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", + "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", + "create.gui.sequenced_gearshift.instruction.end": "UNLOCALIZED: End", + "create.gui.sequenced_gearshift.instruction.await.descriptive": "UNLOCALIZED: Await new Redstone Pulse", + "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", + "create.gui.sequenced_gearshift.speed": "UNLOCALIZED: Speed, Direction", + "create.gui.sequenced_gearshift.speed.forward": "UNLOCALIZED: Input speed, Forwards", + "create.gui.sequenced_gearshift.speed.forward_fast": "UNLOCALIZED: Double speed, Forwards", + "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", + "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", "create.schematicAndQuill.dimensions": "Tamanho Esquema: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Primeira posição feita.", "create.schematicAndQuill.secondPos": "Segunda posição feita.", "create.schematicAndQuill.noTarget": "Seguro [Ctrl] para selecionar Blocos de Ar.", "create.schematicAndQuill.abort": "Seleção removida.", + "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", + "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Upload Immediately", "create.schematicAndQuill.fallbackName": "Meu Esquema", "create.schematicAndQuill.saved": "Salvo como %1$s", @@ -580,7 +1077,12 @@ "create.schematics.synchronizing": "Sincronizando...", "create.schematics.uploadTooLarge": "Seu esquema é muito grande", "create.schematics.maxAllowedSize": "O tamanho máximo permitido para o esquema é:", + + "create.gui.schematicTable.refresh": "UNLOCALIZED: Refresh Files", + "create.gui.schematicTable.open_folder": "UNLOCALIZED: Open Folder", "create.gui.schematicTable.title": "Mesa de Desenho", + "create.gui.schematicTable.availableSchematics": "UNLOCALIZED: Available Schematics", + "create.gui.schematicTable.noSchematics": "UNLOCALIZED: No Schematics Saved", "create.gui.schematicTable.uploading": "Importando...", "create.gui.schematicTable.finished": "Envio Concluído!", "create.gui.schematicannon.title": "Canhão de esquema", @@ -590,12 +1092,16 @@ "create.gui.schematicannon.shotsRemainingWithBackup": "Com backup: %1$s", "create.gui.schematicannon.optionEnabled": "Habilitado Atualmente", "create.gui.schematicannon.optionDisabled": "Desabilitado Atualmente", + "create.gui.schematicannon.showOptions": "UNLOCALIZED: Show Printer Settings", "create.gui.schematicannon.option.dontReplaceSolid": "Não Substituir Blocos Sólidos", "create.gui.schematicannon.option.replaceWithSolid": "Substituir Blocos Sólidos", "create.gui.schematicannon.option.replaceWithAny": "Substituir Sólidos com Qualquer", "create.gui.schematicannon.option.replaceWithEmpty": "Substituir Sólidos com Vazio", "create.gui.schematicannon.option.skipMissing": "Pulando Blocos faltantes", "create.gui.schematicannon.option.skipTileEntities": "Proteger Entidades Entalhadas", + "create.gui.schematicannon.slot.gunpowder": "UNLOCALIZED: Add gunpowder to fuel the cannon", + "create.gui.schematicannon.slot.listPrinter": "UNLOCALIZED: Place books here to print a Checklist for your Schematic", + "create.gui.schematicannon.slot.schematic": "UNLOCALIZED: Add your Schematic here. Make sure it is deployed at a specific location.", "create.gui.schematicannon.option.skipMissing.description": "Se o Canhão de esquema não encontrar o Bloco para colocar, ele irá continuar para a próx. Posição.", "create.gui.schematicannon.option.skipTileEntities.description": "O Canhão de esquema vai evitar substituir blocos que contêm dados como Baus.", "create.gui.schematicannon.option.dontReplaceSolid.description": "O Canhão de esquema nunca irá substituir Blocos sólidos na área em trabalho, apenas não-Sólidos e Ar.", @@ -621,8 +1127,246 @@ "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", "create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado", + "create.materialChecklist": "UNLOCALIZED: Material Checklist", + "create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.", + + "create.gui.filter.deny_list": "UNLOCALIZED: Deny-List", + "create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.", + "create.gui.filter.allow_list": "UNLOCALIZED: Allow-List", + "create.gui.filter.allow_list.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Allow-List rejects everything.", + "create.gui.filter.respect_data": "UNLOCALIZED: Respect Data", + "create.gui.filter.respect_data.description": "UNLOCALIZED: Items only match if their durability, enchantments, and other attributes match as well.", + "create.gui.filter.ignore_data": "UNLOCALIZED: Ignore Data", + "create.gui.filter.ignore_data.description": "UNLOCALIZED: Items match regardless of their attributes.", + + "create.item_attributes.placeable": "UNLOCALIZED: is placeable", + "create.item_attributes.placeable.inverted": "UNLOCALIZED: is not placeable", + "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", + "create.item_attributes.consumable.inverted": "UNLOCALIZED: cannot be eaten", + "create.item_attributes.fluid_container": "UNLOCALIZED: can store fluids", + "create.item_attributes.fluid_container.inverted": "UNLOCALIZED: cannot store fluids", + "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", + "create.item_attributes.enchanted.inverted": "UNLOCALIZED: is unenchanted", + "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", + "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", + "create.item_attributes.renamed": "UNLOCALIZED: has a custom name", + "create.item_attributes.renamed.inverted": "UNLOCALIZED: does not have a custom name", + "create.item_attributes.damaged": "UNLOCALIZED: is damaged", + "create.item_attributes.damaged.inverted": "UNLOCALIZED: is not damaged", + "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", + "create.item_attributes.badly_damaged.inverted": "UNLOCALIZED: is not heavily damaged", + "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", + "create.item_attributes.not_stackable.inverted": "UNLOCALIZED: can be stacked", + "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", + "create.item_attributes.equipable.inverted": "UNLOCALIZED: cannot be equipped", + "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", + "create.item_attributes.furnace_fuel.inverted": "UNLOCALIZED: is not furnace fuel", + "create.item_attributes.washable": "UNLOCALIZED: can be Washed", + "create.item_attributes.washable.inverted": "UNLOCALIZED: cannot be Washed", + "create.item_attributes.crushable": "UNLOCALIZED: can be Crushed", + "create.item_attributes.crushable.inverted": "UNLOCALIZED: cannot be Crushed", + "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", + "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.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", + "create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty", + "create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled", + "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", + "create.item_attributes.in_tag.inverted": "UNLOCALIZED: is not tagged %1$s", + "create.item_attributes.in_item_group": "UNLOCALIZED: is in group '%1$s'", + "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", + "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", + "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", + "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", + "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", + "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", + "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", + "create.item_attributes.has_fluid": "UNLOCALIZED: contains %1$s", + "create.item_attributes.has_fluid.inverted": "UNLOCALIZED: does not contain %1$s", + "create.item_attributes.has_name": "UNLOCALIZED: has the custom name %1$s", + "create.item_attributes.has_name.inverted": "UNLOCALIZED: does not have the custom name %1$s", + "create.item_attributes.book_author": "UNLOCALIZED: was authored by %1$s", + "create.item_attributes.book_author.inverted": "UNLOCALIZED: was not authored by %1$s", + "create.item_attributes.book_copy_original": "UNLOCALIZED: is an original", + "create.item_attributes.book_copy_original.inverted": "UNLOCALIZED: is not an original", + "create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy", + "create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy", + "create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy", + "create.item_attributes.book_copy_second.inverted": "UNLOCALIZED: is not a second-generation copy", + "create.item_attributes.book_copy_tattered": "UNLOCALIZED: is a tattered mess", + "create.item_attributes.book_copy_tattered.inverted": "UNLOCALIZED: is not a tattered mess", + "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %1$s", + "create.item_attributes.astralsorcery_constellation": "UNLOCALIZED: is attuned to %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "UNLOCALIZED: is not attuned to %1$s", + "create.item_attributes.astralsorcery_crystal": "UNLOCALIZED: has crystal attribute %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "UNLOCALIZED: does not have crystal attribute %1$s", + "create.item_attributes.astralsorcery_perk_gem": "UNLOCALIZED: has perk attribute %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "UNLOCALIZED: does not have perk attribute %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "UNLOCALIZED: No attributes selected", + "create.gui.attribute_filter.selected_attributes": "UNLOCALIZED: Selected attributes:", + "create.gui.attribute_filter.add_attribute": "UNLOCALIZED: Add attribute to List", + "create.gui.attribute_filter.add_inverted_attribute": "UNLOCALIZED: Add opposite attribute to List", + "create.gui.attribute_filter.allow_list_disjunctive": "UNLOCALIZED: Allow-List (Any)", + "create.gui.attribute_filter.allow_list_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", + "create.gui.attribute_filter.allow_list_conjunctive": "UNLOCALIZED: Allow-List (All)", + "create.gui.attribute_filter.allow_list_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", + "create.gui.attribute_filter.deny_list": "UNLOCALIZED: Deny-List", + "create.gui.attribute_filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", + "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", + + "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", + "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", + "create.tooltip.keyShift": "UNLOCALIZED: Shift", + "create.tooltip.keyCtrl": "UNLOCALIZED: Ctrl", + "create.tooltip.speedRequirement": "UNLOCALIZED: Speed Requirement: %1$s", + "create.tooltip.speedRequirement.none": "UNLOCALIZED: None", + "create.tooltip.speedRequirement.medium": "UNLOCALIZED: Moderate", + "create.tooltip.speedRequirement.high": "UNLOCALIZED: Fast", + "create.tooltip.stressImpact": "UNLOCALIZED: Kinetic Stress Impact: %1$s", + "create.tooltip.stressImpact.low": "UNLOCALIZED: Low", + "create.tooltip.stressImpact.medium": "UNLOCALIZED: Moderate", + "create.tooltip.stressImpact.high": "UNLOCALIZED: High", + "create.tooltip.stressImpact.overstressed": "UNLOCALIZED: Overstressed", + "create.tooltip.capacityProvided": "UNLOCALIZED: Kinetic Stress Capacity: %1$s", + "create.tooltip.capacityProvided.low": "UNLOCALIZED: Small", + "create.tooltip.capacityProvided.medium": "UNLOCALIZED: Medium", + "create.tooltip.capacityProvided.high": "UNLOCALIZED: Large", + "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", + "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", + + "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", + "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", + "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", + "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", + + "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", + "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", + "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", + "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", + "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", + + "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", + + "create.mechanical_arm.selection_mode.round_robin": "UNLOCALIZED: Round Robin", + "create.mechanical_arm.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", + "create.mechanical_arm.selection_mode.prefer_first": "UNLOCALIZED: Prefer First Target", + + "create.tunnel.selection_mode.split": "UNLOCALIZED: Split", + "create.tunnel.selection_mode.forced_split": "UNLOCALIZED: Forced Split", + "create.tunnel.selection_mode.round_robin": "UNLOCALIZED: Round Robin", + "create.tunnel.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", + "create.tunnel.selection_mode.prefer_nearest": "UNLOCALIZED: Prefer Nearest", + "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", + "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", + + "create.tooltip.chute.header": "UNLOCALIZED: Chute Information", + "create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward", + "create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward", + "create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans", + "create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below", + "create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above", + "create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above", + "create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below", + "create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s", + "create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:", + "create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s", + "create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve", + + "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", + "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", + "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", + "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", + "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", + + "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", + "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", + "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", + "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", + "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", + "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", + "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", + + "create.potato_cannon.ammo.attack_damage": "UNLOCALIZED: %1$s Attack Damage", + "create.potato_cannon.ammo.reload_ticks": "UNLOCALIZED: %1$s Reload Ticks", + "create.potato_cannon.ammo.knockback": "UNLOCALIZED: %1$s Knockback", + + "create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply", + "create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.", + "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", + "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", + "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", + "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", + + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", + "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", + "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", + "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", + "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", + "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", + "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", + "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + + "create.command.killTPSCommand": "UNLOCALIZED: killtps", + "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", + "create.command.killTPSCommand.status.slowed_by.2": "UNLOCALIZED: [Create]: Server tick is back to regular speed :D", + "create.command.killTPSCommand.status.usage.0": "UNLOCALIZED: [Create]: use /killtps stop to bring back server tick to regular speed", + "create.command.killTPSCommand.status.usage.1": "UNLOCALIZED: [Create]: use /killtps start to artificially slow down the server tick", + "create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime", + + "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", + "create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world", + + "_": "->------------------------] Subtitles [------------------------<-", + "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", + "create.subtitle.peculiar_bell_use": "UNLOCALIZED: Peculiar Bell tolls", + "create.subtitle.mixing": "UNLOCALIZED: Mixing noises", + "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", + "create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps", + "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", + "create.subtitle.sanding_long": "UNLOCALIZED: Sanding noises", + "create.subtitle.crushing_1": "UNLOCALIZED: Crushing noises", + "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", + "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", + "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", + "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel flaps", + "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", + "create.subtitle.haunted_bell_use": "UNLOCALIZED: Haunted Bell tolls", + "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", + "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", + "create.subtitle.controller_put": "UNLOCALIZED: Controller thumps", + "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", + "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", + "create.subtitle.sanding_short": "UNLOCALIZED: Sanding noises", + "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", + "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", + "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", + "create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts", + "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", + "create.subtitle.haunted_bell_convert": "UNLOCALIZED: Haunted Bell awakens", + "create.subtitle.deny": "UNLOCALIZED: Declining boop", + "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", + "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", + "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", + "create.subtitle.controller_take": "UNLOCALIZED: Lectern empties", + "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", + "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", + "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", + "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", + "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", + + "_": "->------------------------] Item Descriptions [------------------------<-", "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", @@ -633,6 +1377,21 @@ "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", "item.create.example_item.tooltip.control1": "Quando Ctrl pressed", "item.create.example_item.tooltip.action1": "These controls are displayed.", + + "block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET", + "block.create.wooden_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", + + "block.create.metal_bracket.tooltip": "UNLOCALIZED: METAL BRACKET", + "block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", + + "block.create.seat.tooltip": "UNLOCALIZED: SEAT", + "block.create.seat.tooltip.summary": "UNLOCALIZED: Sit yourself down and enjoy the ride! Will anchor a player onto a moving _contraption_. Great for static furniture too! Comes in a variety of colours.", + "block.create.seat.tooltip.condition1": "UNLOCALIZED: Right click on Seat", + "block.create.seat.tooltip.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", + + "item.create.blaze_cake.tooltip": "UNLOCALIZED: BLAZE CAKE", + "item.create.blaze_cake.tooltip.summary": "UNLOCALIZED: A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", + "item.create.wand_of_symmetry.tooltip": "VARINHA DE SIMETRIA", "item.create.wand_of_symmetry.tooltip.summary": "Espelhar perfeitamente a colocação de blocos nos planos configurados.", "item.create.wand_of_symmetry.tooltip.condition1": "Quando na Hotbar", @@ -643,10 +1402,49 @@ "item.create.wand_of_symmetry.tooltip.action2": "_Remove_ o Espelho ativo", "item.create.wand_of_symmetry.tooltip.control3": "B-Direito enquanto Abaixado", "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", + + "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", + "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain features_.", + "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", + "item.create.handheld_worldshaper.tooltip.action1": "UNLOCALIZED: Sets blocks placed by the tool to the targeted block.", + "item.create.handheld_worldshaper.tooltip.control2": "UNLOCALIZED: R-Click at Block", + "item.create.handheld_worldshaper.tooltip.action2": "UNLOCALIZED: Applies the currently selected _Brush_ and _Tool_ at the targeted location.", + "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", + "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration Interface_", + "item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ARVORE", "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", "item.create.tree_fertilizer.tooltip.condition1": "Quando usada em Mudas", "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", + + "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", + "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", + "item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", + "item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", + + "item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON", + "item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", + "item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.", + "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", + "item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", + + "item.create.filter.tooltip": "UNLOCALIZED: FILTER", + "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.", + "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", + "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", + "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", + + "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", + "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of_ item _attributes_ and _categories_.", + "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", + "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", + "item.create.attribute_filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", + "item.create.empty_schematic.tooltip": "ESQUEMA VAZIO", "item.create.empty_schematic.tooltip.summary": "Usado como ingrediente em receitas e para escrever na _Mesa_ _de_ _Esquematizar_", @@ -672,24 +1470,974 @@ "block.create.schematicannon.tooltip": "Canhão de esquema", "block.create.schematicannon.tooltip.summary": "Dispara blocos para recriar um _Esquema_ no Mundo. Usa itens de Inventários adjacentes e _Pólvora_ como combustível.", + "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", + "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", "block.create.schematic_table.tooltip": "MESA DE ESQUEMATIZAR", "block.create.schematic_table.tooltip.summary": "Escreve Esquemas salvos into um _Esquema_ _Vazio_", "block.create.schematic_table.tooltip.condition1": "Quando recebe um Esquema Vazio", "block.create.schematic_table.tooltip.behaviour1": "Importa um Arquivo escolhido da sua Pasta de Esquemas", + + "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", + "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic information_.", + "item.create.goggles.tooltip.condition1": "UNLOCALIZED: When worn", + "item.create.goggles.tooltip.behaviour1": "UNLOCALIZED: Shows _colored indicators_ corresponding to the _Speed Level_ of a placed kinetic component as well as _Stress Impact_ and _Capacity_ of individual components.", + "item.create.goggles.tooltip.condition2": "UNLOCALIZED: When looking at gauge", + "item.create.goggles.tooltip.behaviour2": "UNLOCALIZED: Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", + "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", + "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", + + "item.create.wrench.tooltip": "UNLOCALIZED: WRENCH", + "item.create.wrench.tooltip.summary": "UNLOCALIZED: A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", + "item.create.wrench.tooltip.control1": "UNLOCALIZED: Right-Click a kinetic block", + "item.create.wrench.tooltip.action1": "UNLOCALIZED: _Rotates components_ toward or away from the face with which you interacted.", + "item.create.wrench.tooltip.control2": "UNLOCALIZED: R-Click while Sneaking", + "item.create.wrench.tooltip.action2": "UNLOCALIZED: _Disassembles Kinetic components_ and places them back in _your inventory_.", + + "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", + "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.", + + "block.create.cuckoo_clock.tooltip": "UNLOCALIZED: CUCKOO CLOCK", + "block.create.cuckoo_clock.tooltip.summary": "UNLOCALIZED: Fine craftsmanship for _decorating_ a space and _keeping track of time_.", + "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", + "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.", + "block.create.turntable.tooltip": "MESA GIRATÓRIA", "block.create.turntable.tooltip.summary": "Muda a _Força_ _Rotacional_ em uma forma refinada de Enjoo.", + "block.create.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.stockpile_switch.tooltip": "DISJUNTOR DE ARMAZENAMENTO", "block.create.stockpile_switch.tooltip.summary": "Alterna um sinal de Redstone com base no _Espaço_ de _Armazenamento_ do Reciente conectado.", "block.create.stockpile_switch.tooltip.condition1": "Quando abaixo do Limite Mínimo", "block.create.stockpile_switch.tooltip.behaviour1": "Para de enviar _Sinal_ de _Redstone_", + "block.create.content_observer.tooltip": "UNLOCALIZED: CONTENT OBSERVER", + "block.create.content_observer.tooltip.summary": "UNLOCALIZED: _Detects Items_ or _Fluids_ inside _containers_, _pipes_ or _conveyors_ matching a configured _filter_.", + "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.creative_crate.tooltip": "Caixa Criativa", "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para Canho~es de Esquema próximos", + "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", + "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._", + + "item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", + "item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.", + "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", + "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.", + + "block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", + "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.", + "block.create.controller_rail.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", + "block.create.controller_rail.tooltip.behaviour1": "UNLOCALIZED: _Accelerates_ or _Decelerates_ passing _minecarts_ corresponding to the _signal strength_. Propagates redstone power to adjacent controller rails. Powering two controller rails with different strengths will cause tracks between them to interpolate their signal.", + + "item.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", + "item.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish materials_. Can be automatically applied using the Deployer.", + "item.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", + "item.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_", + + "item.create.builders_tea.tooltip": "UNLOCALIZED: BUILDERS TEA", + "item.create.builders_tea.tooltip.summary": "UNLOCALIZED: The perfect drink to get the day started- _Motivating_ and _Saturating._", + + "item.create.refined_radiance.tooltip": "UNLOCALIZED: REFINED RADIANCE", + "item.create.refined_radiance.tooltip.summary": "UNLOCALIZED: A Chromatic material forged from _absorbed light_.", + "item.create.refined_radiance.tooltip.condition1": "UNLOCALIZED: Work In Progress", + "item.create.refined_radiance.tooltip.behaviour1": "UNLOCALIZED: Usages for this material will be available in a future release.", + + "item.create.shadow_steel.tooltip": "UNLOCALIZED: SHADOW STEEL", + "item.create.shadow_steel.tooltip.summary": "UNLOCALIZED: A Chromatic material forged _in the void_.", + "item.create.shadow_steel.tooltip.condition1": "UNLOCALIZED: Work In Progress", + "item.create.shadow_steel.tooltip.behaviour1": "UNLOCALIZED: Usages for this material will be available in a future release.", + + "item.create.linked_controller.tooltip": "UNLOCALIZED: LINKED CONTROLLER", + "item.create.linked_controller.tooltip.summary": "UNLOCALIZED: Grants _handheld_ _control_ over _Redstone Link_ frequencies assigned to its _six_ _buttons_.", + "item.create.linked_controller.tooltip.condition1": "UNLOCALIZED: R-Click", + "item.create.linked_controller.tooltip.behaviour1": "UNLOCALIZED: _Toggles_ the controller. _Movement_ _controls_ are taken over while its active.", + "item.create.linked_controller.tooltip.condition2": "UNLOCALIZED: R-Click while Sneaking", + "item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.", + "item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver", + "item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.", + "item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern", + "item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)", + + "item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET", + "item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", + "item.create.diving_helmet.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.diving_helmet.tooltip.behaviour1": "UNLOCALIZED: Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.", + + "item.create.copper_backtank.tooltip": "UNLOCALIZED: COPPER BACKTANK", + "item.create.copper_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.copper_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.copper_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.copper_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + + "item.create.diving_boots.tooltip": "UNLOCALIZED: DIVING BOOTS", + "item.create.diving_boots.tooltip.summary": "UNLOCALIZED: A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor.", + "item.create.diving_boots.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.diving_boots.tooltip.behaviour1": "UNLOCALIZED: Wielder _sinks_ _faster_ and _cannot_ _swim_. Grants the ability to _walk_ and _jump_ underwater. Wielder also is no longer affected by _Mechanical_ _Belts_.", + + "item.create.crafting_blueprint.tooltip": "UNLOCALIZED: CRAFTING BLUEPRINT", + "item.create.crafting_blueprint.tooltip.summary": "UNLOCALIZED: _Placed_ on a wall, it can be used to _specify_ _ingredient_ _arrangements_ for easier manual crafting. Each slot represents a Recipe.", + "item.create.crafting_blueprint.condition1": "UNLOCALIZED: R-Click empty Slot", + "item.create.crafting_blueprint.behaviour1": "UNLOCALIZED: Opens a _Crafting_ _menu_ allowing you to _configure_ a _recipe_ and items to display.", + "item.create.crafting_blueprint.condition2": "UNLOCALIZED: R-Click configured Slot", + "item.create.crafting_blueprint.behaviour2": "UNLOCALIZED: _Applies_ the _configured_ _recipe_ with matching Ingredients found in your _Inventory_. _Sneak_ to craft up to a _Stack_ of items.", + + "item.create.minecart_coupling.tooltip": "UNLOCALIZED: MINECART COUPLING", + "item.create.minecart_coupling.tooltip.summary": "UNLOCALIZED: _Chains_ all your _Minecarts_ or _Carriage Contraptions_ together to form a majestic Train.", + "item.create.minecart_coupling.tooltip.condition1": "UNLOCALIZED: When Used on Minecart", + "item.create.minecart_coupling.tooltip.behaviour1": "UNLOCALIZED: _Couples_ two Minecarts together, attempting to keep them at a _constant distance_ while moving.", + + "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": "UNLOCALIZED: PECULIAR BELL", + "block.create.peculiar_bell.tooltip.summary": "UNLOCALIZED: A decorative _Brass Bell_. Placing it right above open _Soul Fire_ may cause side-effects...", + + "block.create.haunted_bell.tooltip": "UNLOCALIZED: HAUNTED BELL", + "block.create.haunted_bell.tooltip.summary": "UNLOCALIZED: A _Cursed Bell_ haunted by lost souls of the Nether.", + "block.create.haunted_bell.tooltip.condition1": "UNLOCALIZED: When Held or Rang", + "block.create.haunted_bell.tooltip.behaviour1": "UNLOCALIZED: Highlights nearby _Lightless Spots_ on which _Hostile Mobs_ can spawn.", "_": "->------------------------] Ponder Content [------------------------<-", + + "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", + "create.ponder.subject": "UNLOCALIZED: Subject of this scene", + "create.ponder.pondering": "UNLOCALIZED: Pondering about...", + "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", + "create.ponder.associated": "UNLOCALIZED: Associated Entries", + "create.ponder.close": "UNLOCALIZED: Close", + "create.ponder.identify": "UNLOCALIZED: Identify", + "create.ponder.next": "UNLOCALIZED: Next Scene", + "create.ponder.previous": "UNLOCALIZED: Previous Scene", + "create.ponder.replay": "UNLOCALIZED: Replay", + "create.ponder.think_back": "UNLOCALIZED: Think Back", + "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", + "create.ponder.exit": "UNLOCALIZED: Exit", + "create.ponder.welcome": "UNLOCALIZED: Welcome to Ponder", + "create.ponder.categories": "UNLOCALIZED: Available Categories in Create", + "create.ponder.index_description": "UNLOCALIZED: Click one of the icons to learn about its associated Items and Blocks", + "create.ponder.index_title": "UNLOCALIZED: Ponder Index", + "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", + "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", + "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", + "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", + "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", + "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", + "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", + "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", + "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", + "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", + "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", + "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", + "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", + "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", + "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", + "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", + "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", + "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", + "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", + "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", + "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", + "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", + "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", + "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", + "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", + "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", + "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", + "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", + "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", + "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", + "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", + "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", + "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", + "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", + "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", + + "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", + "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", + "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", + "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", + + "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", + "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", + "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", + "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", + "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", + + "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", + "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", + "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", + "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", + "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", + "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", + "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", + "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", + "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", + "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", + + "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", + "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", + "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", + + "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", + "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", + "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", + + "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", + "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", + "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", + "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", + "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", + "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", + "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", + + "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", + "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", + "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", + "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", + "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", + "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", + "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", + + "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", + "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", + "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", + + "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", + "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", + "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", + "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", + "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", + + "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", + "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", + "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", + "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", + "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", + + "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", + "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", + "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", + "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", + "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", + "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", + "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", + "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", + "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", + + "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", + "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", + "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", + "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", + "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", + "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", + "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", + "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", + "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", + "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", + "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", + "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", + "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", + + "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", + "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", + "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", + "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", + + "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", + "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", + "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", + "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", + + "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", + "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", + "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front", + "create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", + + "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", + "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", + "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", + "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", + "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", + + "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", + "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", + "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", + "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", + + "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", + "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", + "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", + "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", + "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", + "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", + "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", + + "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", + "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", + "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", + "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", + + "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", + "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", + "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", + "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", + + "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", + "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", + "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", + "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", + "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", + "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", + "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", + "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", + "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", + + "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", + "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", + "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", + + "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", + "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", + "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", + "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", + + "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", + "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", + "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", + + "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": "UNLOCALIZED: Creative Fluid Tanks", + "create.ponder.creative_fluid_tank.text_1": "UNLOCALIZED: Creative Fluid Tanks can be used to provide a bottomless supply of fluid", + "create.ponder.creative_fluid_tank.text_2": "UNLOCALIZED: Right-Click with a fluid containing item to configure it", + "create.ponder.creative_fluid_tank.text_3": "UNLOCALIZED: Pipe Networks can now endlessly draw the assigned fluid from the tank", + "create.ponder.creative_fluid_tank.text_4": "UNLOCALIZED: Any Fluids pushed back into a Creative Fluid Tank will be voided", + + "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", + "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", + "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", + + "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", + "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", + "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", + "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", + "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", + + "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", + "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", + "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", + "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", + "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", + "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", + "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", + "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", + "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", + "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", + "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", + "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", + "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", + "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", + "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", + "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", + + "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", + "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", + "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", + "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", + + "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", + "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", + "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", + + "create.ponder.deployer_processing.header": "UNLOCALIZED: Processing Items using Deployers", + "create.ponder.deployer_processing.text_1": "UNLOCALIZED: With a fitting held item, Deployers can process items provided beneath them", + "create.ponder.deployer_processing.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Deployer", + "create.ponder.deployer_processing.text_3": "UNLOCALIZED: When items are provided on a belt...", + "create.ponder.deployer_processing.text_4": "UNLOCALIZED: The Deployer will hold and process them automatically", + + "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", + "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", + "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", + "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", + + "create.ponder.depot.header": "UNLOCALIZED: Using Depots", + "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", + "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", + "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", + "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", + + "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", + "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", + "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", + "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", + "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", + "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: The flame can be transformed using a soul-infused item", + "create.ponder.empty_blaze_burner.text_6": "UNLOCALIZED: However, without a blaze they are not suitable for industrial heating", + + "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.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", + "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", + "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", + + "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", + "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", + "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", + "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", + "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", + "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", + "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", + "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", + "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", + + "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", + "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", + "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", + + "create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes", + "create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets", + "create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window", + "create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments", + "create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids", + "create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first", + "create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents", + "create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid", + + "create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers", + "create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks", + "create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained", + "create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...", + "create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources", + "create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly", + + "create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank", + "create.ponder.fluid_tank_sizes.text_1": "UNLOCALIZED: Fluid Tanks can be combined to increase the total capacity", + "create.ponder.fluid_tank_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.fluid_tank_sizes.text_3": "UNLOCALIZED: ...and grow in height by more than 30 additional layers", + "create.ponder.fluid_tank_sizes.text_4": "UNLOCALIZED: Using a Wrench, a tanks' window can be toggled", + + "create.ponder.fluid_tank_storage.header": "UNLOCALIZED: Storing Fluids in Fluid Tanks", + "create.ponder.fluid_tank_storage.text_1": "UNLOCALIZED: Fluid Tanks can be used to store large amounts of fluid", + "create.ponder.fluid_tank_storage.text_2": "UNLOCALIZED: Pipe networks can push and pull fluids from any side", + "create.ponder.fluid_tank_storage.text_3": "UNLOCALIZED: The contained fluid can be measured by a Comparator", + "create.ponder.fluid_tank_storage.text_4": "UNLOCALIZED: However, in Survival Mode Fluids cannot be added or taken manually", + "create.ponder.fluid_tank_storage.text_5": "UNLOCALIZED: You can use Basins, Item Drains and Spouts to drain or fill fluid containing items", + + "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", + "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", + "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", + "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", + + "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", + "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", + "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", + "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", + "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", + + "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", + "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", + "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", + "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", + "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", + "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", + + "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", + "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", + + "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", + "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", + + "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", + "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", + "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", + "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", + + "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", + "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", + "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", + "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", + + "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", + "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", + "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", + + "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", + "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", + "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", + "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", + + "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", + "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", + "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", + "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", + "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", + + "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", + "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", + "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", + + "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", + "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", + "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", + + "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", + "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", + "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", + "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", + "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", + + "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", + "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", + "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", + + "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", + "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", + "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", + "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", + "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", + + "create.ponder.hose_pulley.header": "UNLOCALIZED: Source Filling and Draining using Hose Pulleys", + "create.ponder.hose_pulley.text_1": "UNLOCALIZED: Hose Pulleys can be used to fill or drain large bodies of Fluid", + "create.ponder.hose_pulley.text_2": "UNLOCALIZED: With the Kinetic Input, the height of the pulleys' hose can be controlled", + "create.ponder.hose_pulley.text_3": "UNLOCALIZED: The Pulley retracts while the input rotation is inverted", + "create.ponder.hose_pulley.text_4": "UNLOCALIZED: On the opposite side, pipes can be connected", + "create.ponder.hose_pulley.text_5": "UNLOCALIZED: Attached pipe networks can either provide fluid to the hose...", + "create.ponder.hose_pulley.text_6": "UNLOCALIZED: ...or pull from it, draining the pool instead", + "create.ponder.hose_pulley.text_7": "UNLOCALIZED: Fill and Drain speed of the pulley depends entirely on the fluid networks' throughput", + + "create.ponder.hose_pulley_infinite.header": "UNLOCALIZED: Passively Filling and Draining large bodies of Fluid", + "create.ponder.hose_pulley_infinite.text_1": "UNLOCALIZED: When deploying the Hose Pulley into a large enough ocean...", + "create.ponder.hose_pulley_infinite.text_2": "UNLOCALIZED: It will provide/dispose fluids without affecting the source", + "create.ponder.hose_pulley_infinite.text_3": "UNLOCALIZED: Pipe networks can limitlessly take fluids from/to such pulleys", + + "create.ponder.hose_pulley_level.header": "UNLOCALIZED: Fill and Drain level of Hose Pulleys", + "create.ponder.hose_pulley_level.text_1": "UNLOCALIZED: While fully retracted, the Hose Pulley cannot operate", + "create.ponder.hose_pulley_level.text_2": "UNLOCALIZED: Draining runs from top to bottom", + "create.ponder.hose_pulley_level.text_3": "UNLOCALIZED: The surface level will end up just below where the hose ends", + "create.ponder.hose_pulley_level.text_4": "UNLOCALIZED: Filling runs from bottom to top", + "create.ponder.hose_pulley_level.text_5": "UNLOCALIZED: The filled pool will not grow beyond the layer above the hose end", + + "create.ponder.item_drain.header": "UNLOCALIZED: Emptying Fluid Containers using Item Drains", + "create.ponder.item_drain.text_1": "UNLOCALIZED: Item Drains can extract fluids from items", + "create.ponder.item_drain.text_2": "UNLOCALIZED: Right-click it to pour fluids from your held item into it", + "create.ponder.item_drain.text_3": "UNLOCALIZED: When items are inserted from the side...", + "create.ponder.item_drain.text_4": "UNLOCALIZED: ...they roll across, emptying out their contained fluid", + "create.ponder.item_drain.text_5": "UNLOCALIZED: Pipe Networks can now pull the fluid from the drains' internal buffer", + + "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": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", + "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", + "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", + + "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", + "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", + "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", + "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", + "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", + "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", + "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", + "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", + "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", + + "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", + "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", + "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", + "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", + + "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", + "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", + "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", + "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", + "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", + "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", + "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", + "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", + "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", + + "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", + "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", + "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", + "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", + "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", + "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", + "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", + + "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", + "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", + "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", + "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", + "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", + "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", + "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", + "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", + "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", + "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", + + "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", + "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", + "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", + "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", + + "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", + "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", + "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", + + "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", + "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", + "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", + "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", + "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", + "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", + "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", + "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", + "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", + + "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", + "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", + "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", + "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", + + "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", + "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", + "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", + "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", + + "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", + "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", + "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", + + "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", + "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", + "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", + + "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", + "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", + "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", + + "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", + "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", + "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", + "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", + "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", + + "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", + "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", + "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", + "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", + + "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", + "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", + "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", + + "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", + "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", + "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", + "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", + "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", + + "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", + "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", + "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", + "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", + "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", + + "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", + "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", + "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", + "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", + "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", + + "create.ponder.mechanical_pump_flow.header": "UNLOCALIZED: Fluid Transportation using Mechanical Pumps", + "create.ponder.mechanical_pump_flow.text_1": "UNLOCALIZED: Mechanical Pumps govern the flow of their attached pipe networks", + "create.ponder.mechanical_pump_flow.text_2": "UNLOCALIZED: When powered, their arrow indicates the direction of flow", + "create.ponder.mechanical_pump_flow.text_3": "UNLOCALIZED: The network behind is now pulling fluids...", + "create.ponder.mechanical_pump_flow.text_4": "UNLOCALIZED: ...while the network in front is transferring it outward", + "create.ponder.mechanical_pump_flow.text_5": "UNLOCALIZED: Reversing the input rotation reverses the direction of flow", + "create.ponder.mechanical_pump_flow.text_6": "UNLOCALIZED: Use a Wrench to reverse the orientation of pumps manually", + + "create.ponder.mechanical_pump_speed.header": "UNLOCALIZED: Throughput of Mechanical Pumps", + "create.ponder.mechanical_pump_speed.text_1": "UNLOCALIZED: Regardless of speed, Mechanical Pumps affect pipes connected up to 16 blocks away", + "create.ponder.mechanical_pump_speed.text_2": "UNLOCALIZED: Speeding up the input rotation changes the speed of flow propagation...", + "create.ponder.mechanical_pump_speed.text_3": "UNLOCALIZED: ...aswell as how quickly fluids are transferred", + "create.ponder.mechanical_pump_speed.text_4": "UNLOCALIZED: Pumps can combine their throughputs within shared pipe networks", + "create.ponder.mechanical_pump_speed.text_5": "UNLOCALIZED: Alternating their orientation can help align their flow directions", + + "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", + "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", + "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", + + "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", + "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", + "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", + + "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", + "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", + "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", + "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", + "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", + "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", + + "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", + "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", + "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", + "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", + "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", + "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", + + "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", + "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", + "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", + "create.ponder.nixie_tube.text_3": "UNLOCALIZED: Right-Click with Dye to change their display colour", + + "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", + "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", + "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", + + "create.ponder.portable_fluid_interface.header": "UNLOCALIZED: Contraption Fluid Exchange", + "create.ponder.portable_fluid_interface.text_1": "UNLOCALIZED: Fluid Tanks on moving contraptions cannot be accessed by any pipes", + "create.ponder.portable_fluid_interface.text_2": "UNLOCALIZED: This component can interact with fluid tanks without the need to stop the contraption", + "create.ponder.portable_fluid_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", + "create.ponder.portable_fluid_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", + "create.ponder.portable_fluid_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL Tanks on the contraption", + "create.ponder.portable_fluid_interface.text_6": "UNLOCALIZED: Fluid can now be inserted...", + "create.ponder.portable_fluid_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", + "create.ponder.portable_fluid_interface.text_8": "UNLOCALIZED: After no contents have been exchanged for a while, the contraption will continue on its way", + + "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", + "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", + "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", + "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", + "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", + "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", + "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", + "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", + "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", + + "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", + "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", + + "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", + "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", + "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", + "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", + "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", + + "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", + "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", + "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", + "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", + "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", + + "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": "UNLOCALIZED: Controlling signals using Pulse Repeaters", + "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters emit a short pulse at a delay", + "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": "UNLOCALIZED: Attaching blocks using Radial Chassis", + "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", + "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", + "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", + "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", + "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", + "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", + "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", + "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", + "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", + + "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", + "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", + "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", + + "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", + "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", + "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", + "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", + "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", + "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", + "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", + + "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", + "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", + "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", + + "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", + "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", + "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", + "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", + + "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", + "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", + "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", + + "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", + "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", + "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", + + "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", + "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", + "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", + "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", + "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", + + "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", + "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", + "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", + + "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", + "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", + "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", + "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", + "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", + "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", + + "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", + "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", + + "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", + "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", + + "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", + "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", + "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", + "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", + "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", + + "create.ponder.smart_pipe.header": "UNLOCALIZED: Controlling Fluid flow using Smart Pipes", + "create.ponder.smart_pipe.text_1": "UNLOCALIZED: Smart pipes can help control flows by fluid type", + "create.ponder.smart_pipe.text_2": "UNLOCALIZED: When placed directly at the source, they can specify the type of fluid to extract", + "create.ponder.smart_pipe.text_3": "UNLOCALIZED: Simply Right-Click their filter slot with any item containing the desired fluid", + "create.ponder.smart_pipe.text_4": "UNLOCALIZED: When placed further down a pipe network, smart pipes will only let matching fluids continue", + + "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", + "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", + "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", + "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", + + "create.ponder.spout_filling.header": "UNLOCALIZED: Filling Items using a Spout", + "create.ponder.spout_filling.text_1": "UNLOCALIZED: The Spout can fill fluid holding items provided beneath it", + "create.ponder.spout_filling.text_2": "UNLOCALIZED: The content of a Spout cannot be accessed manually", + "create.ponder.spout_filling.text_3": "UNLOCALIZED: Instead, Pipes can be used to supply it with fluids", + "create.ponder.spout_filling.text_4": "UNLOCALIZED: The Input items can be placed on a Depot under the Spout", + "create.ponder.spout_filling.text_5": "UNLOCALIZED: When items are provided on a belt...", + "create.ponder.spout_filling.text_6": "UNLOCALIZED: The Spout will hold and process them automatically", + + "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", + "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", + "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", + "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", + "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", + + "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", + "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", + "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", + "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", + "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", + + "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", + "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", + "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", + "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", + + "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", + "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", + "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", + "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", + "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", + "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", + + "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", + "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", + "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", + "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", + "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", + "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", + + "create.ponder.valve_pipe.header": "UNLOCALIZED: Controlling Fluid flow using Valves", + "create.ponder.valve_pipe.text_1": "UNLOCALIZED: Valve pipes help control fluids propagating through pipe networks", + "create.ponder.valve_pipe.text_2": "UNLOCALIZED: Their shaft input controls whether fluid is currently allowed through", + "create.ponder.valve_pipe.text_3": "UNLOCALIZED: Given Rotational Force in the opening direction, the valve will open up", + "create.ponder.valve_pipe.text_4": "UNLOCALIZED: It can be closed again by reversing the input rotation", + + "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", + "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", + "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", + "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", + "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", + + "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", + "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", + "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", + "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", + "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", + "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", + "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", + "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", + "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", + "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", + "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", + "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", + + "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", + "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", + "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", + + "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", + "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", + "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", + "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", + "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", + "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", + + "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", + "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", + "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", + "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", + "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", + "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", + "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", + + "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", + "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", + "_": "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 3e1f9c608..b494e25db 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: 330", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", @@ -9,14 +9,14 @@ "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_pillar": "竖纹安山岩", + "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": "白桦木窗户", @@ -35,8 +35,8 @@ "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_cogwheel": "黄铜齿轮箱", + "block.create.brass_encased_large_cogwheel": "黄铜大齿轮箱", "block.create.brass_encased_shaft": "黄铜传动杆箱", "block.create.brass_funnel": "黄铜漏斗", "block.create.brass_tunnel": "黄铜隧道", @@ -45,7 +45,7 @@ "block.create.brown_seat": "棕色坐垫", "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": "溜槽", @@ -54,137 +54,137 @@ "block.create.cogwheel": "齿轮", "block.create.content_observer": "物品侦测器", "block.create.controller_rail": "控制铁轨", - "block.create.copper_backtank": "Copper Backtank", + "block.create.copper_backtank": "铜制背罐", "block.create.copper_casing": "铜机壳", - "block.create.copper_shingle_slab": "UNLOCALIZED: Copper Shingle Slab", - "block.create.copper_shingle_stairs": "UNLOCALIZED: Copper Shingle Stairs", + "block.create.copper_shingle_slab": "铜砖块台阶", + "block.create.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_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_motor": "创造马达", - "block.create.crimsite": "UNLOCALIZED: Crimsite", - "block.create.crimsite_pillar": "UNLOCALIZED: Crimsite Pillar", + "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": "青色坐垫", @@ -192,21 +192,21 @@ "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.deepslate_pillar": "深板岩柱", + "block.create.deepslate_zinc_ore": "深层锌矿石", "block.create.deployer": "机械手", "block.create.depot": "置物台", - "block.create.diorite_pillar": "竖纹闪长岩", - "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "block.create.diorite_pillar": "闪长岩柱", + "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.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.fluid_pipe": "流体管道", "block.create.fluid_tank": "流体储罐", "block.create.fluid_valve": "流体阀门", @@ -219,7 +219,7 @@ "block.create.gearbox": "十字齿轮箱", "block.create.gearshift": "反转齿轮箱", "block.create.glass_fluid_pipe": "玻璃流体管道", - "block.create.granite_pillar": "竖纹花岗岩", + "block.create.granite_pillar": "花岗岩柱", "block.create.gray_nixie_tube": "灰色辉光管", "block.create.gray_sail": "灰色风帆", "block.create.gray_seat": "灰色坐垫", @@ -237,24 +237,24 @@ "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_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_ochrum": "层叠赭金砂", + "block.create.layered_scorchia": "层叠焦黑熔渣", "block.create.layered_scoria": "层叠熔渣", - "block.create.layered_tuff": "UNLOCALIZED: Layered Tuff", - "block.create.layered_veridium": "UNLOCALIZED: Layered Veridium", + "block.create.layered_tuff": "层叠凝灰岩", + "block.create.layered_veridium": "层叠辉绿矿", "block.create.lectern_controller": "遥控器讲台", "block.create.light_blue_nixie_tube": "淡蓝色辉光管", "block.create.light_blue_sail": "淡蓝色风帆", @@ -272,7 +272,7 @@ "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.magenta_nixie_tube": "品红色辉光管", @@ -300,20 +300,20 @@ "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": "橙色工具箱", "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": "粉红色风帆", @@ -321,68 +321,68 @@ "block.create.pink_toolbox": "粉红色工具箱", "block.create.pink_valve_handle": "粉红色阀门手轮", "block.create.piston_extension_pole": "活塞杆", - "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.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_toggle_latch": "转换锁存器", "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": "紫色风帆", @@ -390,7 +390,7 @@ "block.create.purple_toolbox": "紫色工具箱", "block.create.purple_valve_handle": "紫色阀门手轮", "block.create.radial_chassis": "旋转底盘", - "block.create.raw_zinc_block": "UNLOCALIZED: Block of Raw Zinc", + "block.create.raw_zinc_block": "粗锌块", "block.create.red_nixie_tube": "红色辉光管", "block.create.red_sail": "红色风帆", "block.create.red_seat": "红色坐垫", @@ -405,70 +405,70 @@ "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.scorchia": "焦黑熔渣", + "block.create.scorchia_pillar": "焦黑熔渣柱", "block.create.scoria": "熔渣", - "block.create.scoria_pillar": "竖纹熔渣", + "block.create.scoria_pillar": "熔渣柱", "block.create.secondary_linear_chassis": "机壳底盘 2 号", "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_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_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.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_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_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": "速度表", @@ -481,45 +481,45 @@ "block.create.stressometer": "应力表", "block.create.tiled_glass": "十字玻璃窗", "block.create.tiled_glass_pane": "十字玻璃窗户板", - "block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar", + "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.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": "白色风帆", @@ -591,7 +591,7 @@ "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": "装配过的动力矿车", @@ -612,7 +612,7 @@ "item.create.powdered_obsidian": "黑曜石粉末", "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": "玫瑰石英", @@ -983,10 +983,10 @@ "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": "装置中的方块数量过多。", - "create.gui.assembly.exception.tooManyPistonPoles": "活塞加装的活塞杆数量过多。", + "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", + "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": "网络应力", @@ -1032,7 +1032,7 @@ "create.schematicAndQuill.fallbackName": "我的蓝图", "create.schematicAndQuill.saved": "另存为%1$s", - "create.schematic.invalid": "[!] 无效的项目", + "create.schematic.invalid": "[!] 无效的物品 - 使用蓝图桌来替换", "create.schematic.position": "位置", "create.schematic.rotation": "旋转", "create.schematic.rotation.none": "无", @@ -1075,7 +1075,7 @@ "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "正在同步..", - "create.schematics.uploadTooLarge": "你的蓝图太大", + "create.schematics.uploadTooLarge": "你的蓝图超出了服务器指定的限制。", "create.schematics.maxAllowedSize": "允许的最大蓝图文件大小为:", "create.gui.schematicTable.refresh": "刷新文件", @@ -1101,7 +1101,7 @@ "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": "蓝图加农炮将不会替换工作范围内的任何固体方块。", @@ -1128,7 +1128,7 @@ "create.schematicannon.status.schematicExpired": "蓝图文件已过期", "create.materialChecklist": "材料清单", - "create.materialChecklist.blocksNotLoaded": "*免责声明* ", + "create.materialChecklist.blocksNotLoaded": "*免责声明*\n\n由于相关区块没有被加载,材料列表可能不准确。", "create.gui.filter.deny_list": "黑名单", "create.gui.filter.deny_list.description": "只通过不在黑名单中的物品,如果黑名单为空,所有物品都可以通过", @@ -1335,7 +1335,7 @@ "create.subtitle.mechanical_press_activation_belt": "辊压机:撞击传送带", "create.subtitle.fwoomp": "土豆加农炮:发射", "create.subtitle.worldshaper_place": "环境塑型器:放置方块", - "create.subtitle.sanding_long": "UNLOCALIZED: Sanding noises", + "create.subtitle.sanding_long": "打磨噪音", "create.subtitle.crushing_1": "磨碎声", "create.subtitle.depot_slide": "物品:滑入", "create.subtitle.saw_activate_stone": "动力锯:切割", @@ -1348,7 +1348,7 @@ "create.subtitle.controller_put": "遥控器:放进讲台", "create.subtitle.cranking": "手摇曲柄:转动", "create.subtitle.wrench_remove": "组件:被破坏", - "create.subtitle.sanding_short": "UNLOCALIZED: Sanding noises", + "create.subtitle.sanding_short": "打磨噪音", "create.subtitle.cogs": "齿轮:嘎吱作响", "create.subtitle.slime_added": "粘液:挤碎声", "create.subtitle.wrench_rotate": "扳手:拧动", @@ -1599,10 +1599,10 @@ "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": "装饰用的_黄铜质钟_。放在_灵魂火_的正上方可能会产生意料之外的后果......", @@ -1821,10 +1821,10 @@ "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": "创造流体储罐可以提供无限量的流体", @@ -2046,16 +2046,16 @@ "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.text_1": "大齿轮可以以特定的角度相互连接", @@ -2260,17 +2260,17 @@ "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_2": "通过鼠标滚轮,可以配置充能时间", + "create.ponder.pulse_repeater.text_3": "配置的延迟范围最长可达 30 分钟", "create.ponder.radial_chassis.header": "使用旋转底盘黏着方块", "create.ponder.radial_chassis.text_1": "同一行上的旋转底盘会相互连接在一起", diff --git a/src/generated/resources/data/create/advancements/aesthetics.json b/src/generated/resources/data/create/advancements/aesthetics.json index 59a86f429..d723cbe38 100644 --- a/src/generated/resources/data/create/advancements/aesthetics.json +++ b/src/generated/resources/data/create/advancements/aesthetics.json @@ -28,8 +28,8 @@ "trigger": "create:bracket_apply", "conditions": { "accepted_entries": [ - "create:large_cogwheel", - "create:cogwheel" + "create:cogwheel", + "create:large_cogwheel" ] } }, diff --git a/src/main/resources/assets/create/lang/pt_br.json b/src/main/resources/assets/create/lang/pt_br.json index ba2e42220..5b63b12e8 100644 --- a/src/main/resources/assets/create/lang/pt_br.json +++ b/src/main/resources/assets/create/lang/pt_br.json @@ -1,20 +1,19 @@ { - "_": "Missing Localizations: 1652", + "_": "Missing Localizations: 1670", "_": "->------------------------] Game Elements [------------------------<-", "block.create.adjustable_chain_gearshift": "Correia Ajustável", - "block.create.adjustable_crate": "Caixa Ajustável", - "block.create.adjustable_pulse_repeater": "Repetidor de Pulso Ajustável", - "block.create.adjustable_repeater": "Repetidor Ajustável", "block.create.analog_lever": "Alavanca Analógica", "block.create.andesite_belt_funnel": "Funil de Esteira de Andesito", - "block.create.andesite_bricks": "Tijolos de Andesito", "block.create.andesite_casing": "Revestimento de Andesito", + "block.create.andesite_encased_cogwheel": "Roda dentada revestida com andesito", + "block.create.andesite_encased_large_cogwheel": "Roda dentada grande revestida com andesito", "block.create.andesite_encased_shaft": "Eixo revestido com latão", "block.create.andesite_funnel": "Funil de Andesito", "block.create.andesite_tunnel": "Tunel de Andesito", "block.create.basin": "Bacia", "block.create.belt": "Esteira Mecânica", + "block.create.black_nixie_tube": "Tubo nixie preto", "block.create.black_sail": "Vela preta", "block.create.black_seat": "Assento preto", "block.create.black_toolbox": "Caixa de ferramentas preta", @@ -28,6 +27,8 @@ "block.create.brass_belt_funnel": "Funil de Esteira de Latão", "block.create.brass_block": "Bloco de Latão", "block.create.brass_casing": "Revestimento de Latão", + "block.create.brass_encased_cogwheel": "Roda dentada revestida com latão", + "block.create.brass_encased_large_cogwheel": "Roda dentada grande revestida com latão", "block.create.brass_encased_shaft": "Eixo Revestido com Latão", "block.create.brass_funnel": "Funil de Latão", "block.create.brass_tunnel": "Tunel de Latão", @@ -45,29 +46,21 @@ "block.create.content_observer": "Observador de Conteúdo", "block.create.controller_rail": "Trilho Controlador", "block.create.copper_backtank": "Tanque Traseiro de Cobre", - "block.create.copper_block": "Bloco de Cobre", "block.create.copper_casing": "Revestimento de Cobre", - "block.create.copper_ore": "Minério de Cobre", "block.create.copper_valve_handle": "Válvula de Cobre", "block.create.creative_crate": "Caixa Criativa", "block.create.creative_fluid_tank": "Tanque de Fluidos Criativo", "block.create.creative_motor": "Motor Criativo", "block.create.crushing_wheel": "Roda de Moer", - "block.create.cuckoo_clock": "Relógio Cuckok", + "block.create.cuckoo_clock": "Relógio Cuckoo", "block.create.cyan_nixie_tube": "Tubo nixie ciano", "block.create.cyan_sail": "Vela ciano", "block.create.cyan_seat": "Assento ciano", "block.create.cyan_toolbox": "caixa de ferramentas ciano", "block.create.cyan_valve_handle": "Válvula ciano", + "block.create.deepslate_zinc_ore": "Minério de zinco de ardósia", "block.create.deployer": "Implantador", "block.create.depot": "Depósito", - "block.create.diorite_bricks": "Tijolos de Diorito", - "block.create.dolomite": "Dolomite", - "block.create.dolomite_bricks": "Tijolos de Dolomite", - "block.create.dolomite_bricks_slab": "Lajotas de Tijolos de Dolomite", - "block.create.dolomite_bricks_stairs": "Escadas de Tijolos de Dolomite", - "block.create.dolomite_bricks_wall": "Muro de Tijolos de Dolomite", - "block.create.dolomite_pillar": "Pilar de Dolomite", "block.create.encased_chain_drive": "Correia Revestida", "block.create.encased_fan": "Ventilador Revestida", "block.create.encased_fluid_pipe": "Cano de Fluidos Revestido", @@ -76,16 +69,11 @@ "block.create.fluid_valve": "Válvula", "block.create.flywheel": "Volante de inércia", "block.create.furnace_engine": "Motor de Fornalha", - "block.create.gabbro": "Gabbro", - "block.create.gabbro_bricks": "Tijolos de Gabbro", - "block.create.gabbro_bricks_stairs": "Escadas de Tijolos de Gabbro", - "block.create.gabbro_bricks_wall": "Muros de Tijolos de Gabbro", "block.create.gantry_carriage": "Carruagem de Pórtico", "block.create.gantry_shaft": "Eixo de Pórtico", "block.create.gearbox": "Caixa de Transmissão", "block.create.gearshift": "Câmbio", "block.create.glass_fluid_pipe": "Cano de Fluido de Vidro", - "block.create.granite_bricks": "Tijolos de Granito", "block.create.gray_nixie_tube": "Tubo nixie cinza", "block.create.gray_sail": "Vela cinza", "block.create.gray_seat": "Assento cinza", @@ -101,7 +89,7 @@ "block.create.honey": "Mel", "block.create.hose_pulley": "Polia de Mangueira", "block.create.item_drain": "Dreno de Item", - "block.create.large_cogwheel": "Roda Dentada Grande", + "block.create.item_vault": "Cofre de itens", "block.create.lectern_controller": "Controle de Atril", "block.create.light_blue_nixie_tube": "tubo nixie azul claro", "block.create.light_blue_sail": "Vela azul claro", @@ -118,12 +106,7 @@ "block.create.lime_seat": "Assento lima", "block.create.lime_toolbox": "Caixa de ferramentas lima", "block.create.lime_valve_handle": "Válvula lima", - "block.create.limesand": "Areia Calcária", "block.create.limestone": "Calcário", - "block.create.limestone_bricks": "Tijolos de Calcário", - "block.create.limestone_bricks_slab": "Lajotas de Tijolos de Calcário", - "block.create.limestone_bricks_stairs": "Escadas de Tijolos de Calcário", - "block.create.limestone_bricks_wall": "Muro de Tijolos de Calcário", "block.create.limestone_pillar": "Pilar de Calcário", "block.create.linear_chassis": "Chassis Linear", "block.create.lit_blaze_burner": "Queimador de Blaze Acesso", @@ -144,6 +127,7 @@ "block.create.mechanical_press": "Prensa Mecânica", "block.create.mechanical_pump": "Bomba Mecânica", "block.create.mechanical_saw": "Serra Mecânica", + "block.create.metal_bracket": "Suporte de metal", "block.create.millstone": "Pedra de Moer", "block.create.minecart_anchor": "Ancóra de carrinho de Mina", "block.create.mysterious_cuckoo_clock": "Relógio cuckoo", @@ -160,14 +144,11 @@ "block.create.pink_toolbox": "Caixa de ferramentas rosa", "block.create.pink_valve_handle": "Válvula rosa", "block.create.piston_extension_pole": "Vara de Extensão do Pistão", - "block.create.polished_dolomite": "Dolomite Polido", - "block.create.polished_gabbro": "Gabbro Polido", - "block.create.polished_limestone": "Calcário Polido", - "block.create.polished_limestone_slab": "Lajotas de Calcário Polido", - "block.create.polished_weathered_limestone": "Calcário Polido Resistido", - "block.create.polished_weathered_limestone_slab": "Lajota de Calcário Polido Resistido", + "block.create.portable_fluid_interface": "Interface de fluidos portátil", "block.create.portable_storage_interface": "Interface de armazenamento portátil", + "block.create.powered_latch": "UNLOCALIZED: Powered Latch", "block.create.pulley_magnet": "Imã da Polia", + "block.create.pulse_extender": "Extensor de pulso", "block.create.pulse_repeater": "Repetidor de Pulso", "block.create.purple_nixie_tube": "Tubo nixie roxo", "block.create.purple_sail": "Vela roxo", @@ -175,6 +156,7 @@ "block.create.purple_toolbox": "Caixa de ferramentas roxa", "block.create.purple_valve_handle": "válvula roxa", "block.create.radial_chassis": "Chassis Radial", + "block.create.raw_zinc_block": "Bloco de zinco bruto", "block.create.red_nixie_tube": "Tubo nixie vermelho", "block.create.red_sail": "Vela vermelha", "block.create.red_seat": "Assento vermelho", @@ -183,10 +165,9 @@ "block.create.redstone_contact": "Contato de Redstone", "block.create.redstone_link": "Conexão de Redstone", "block.create.refined_radiance_casing": "Revestimento Brilhante", - "block.create.reinforced_rail": "Trilho reinfirçado", "block.create.rope": "Corda", "block.create.rope_pulley": "Polia", - "block.create.rotation_speed_controller": "Controlador de Velocidade Rotacionalr", + "block.create.rotation_speed_controller": "Controlador de Velocidade Rotacional", "block.create.sail_frame": "moldura de vela", "block.create.schematic_table": "Mesa de Esquema", "block.create.schematicannon": "Canhão de Esquema", @@ -197,6 +178,7 @@ "block.create.smart_chute": "calha Inteligente", "block.create.smart_fluid_pipe": "Cano de Fluidos Inteligente", "block.create.speedometer": "Velocímetro", + "block.create.spout": "Bica", "block.create.sticker": "Adesivo", "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", "block.create.stockpile_switch": "Disjuntor de Armazenamento", @@ -205,19 +187,14 @@ "block.create.tiled_glass_pane": "Vidraça Entalhada", "block.create.turntable": "Mesa giratória", "block.create.water_wheel": "Roda de Água", - "block.create.weathered_limestone": "Calcário Resistido", - "block.create.weathered_limestone_bricks": "Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_slab": "Lajota de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_stairs": "Escadas de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_wall": "Muro de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_pillar": "Pilar de Calcário Resistido", + "block.create.weighted_ejector": "Ejetor ´ponderado", "block.create.white_nixie_tube": "Tubo nixie branco", "block.create.white_sail": "Vela branca", "block.create.white_seat": "Assento branco", "block.create.white_toolbox": "Caixa de ferramentas branca", "block.create.white_valve_handle": "Válvula branca", "block.create.windmill_bearing": "Rolamento de moinho", - "block.create.wooden_bracket": "UNLOCALIZED: Wooden Bracket", + "block.create.wooden_bracket": "Suporte de madeira", "block.create.yellow_nixie_tube": "Tubo nixie amarelo", "block.create.yellow_sail": "Vela amarela", "block.create.yellow_seat": "Assento amarelo", @@ -257,13 +234,12 @@ "item.create.chromatic_compound": "Composto Cromático", "item.create.cinder_flour": "Farinha de Netherrack", "item.create.copper_backtank": "Tanque Traseiro", - "item.create.copper_ingot": "Barra de Cobre", "item.create.copper_nugget": "Pepita de Cobre", "item.create.copper_sheet": "Chapa de Cobre", + "item.create.crafter_slot_cover": "Cobertura do slot de fabricador", "item.create.crafting_blueprint": "Esquema de Fabricação", "item.create.creative_blaze_cake": "Bolo de Blaze Criativo", "item.create.crushed_aluminum_ore": "Minério de Alumínio Esmagado", - "item.create.crushed_brass": "Latão Esmagado", "item.create.crushed_copper_ore": "Minério de Cobre Esmagado", "item.create.crushed_gold_ore": "Minério de Ouro Esmagado", "item.create.crushed_iron_ore": "Minério de Ferro Esmagado", @@ -282,6 +258,7 @@ "item.create.electron_tube": "Tubo de Elétron", "item.create.empty_blaze_burner": "Queimador de Blaze Vazio", "item.create.empty_schematic": "Esquema vazio", + "item.create.experience_nugget": "Pepita de experiencia", "item.create.extendo_grip": "Extensão de Pegador", "item.create.filter": "Filtro", "item.create.furnace_minecart_contraption": "Engenhoca de Carrinho de Mina com Fornalha", @@ -298,10 +275,11 @@ "item.create.minecart_contraption": "Engenhoca de Carrino de Mina", "item.create.minecart_coupling": "Acoplamento de Carrinho de Mina", "item.create.polished_rose_quartz": "Quartzo Rosa Polido", - "item.create.potato_cannon": "Canhão de Batata", + "item.create.potato_cannon": "Canhão de Batata", "item.create.powdered_obsidian": "Pó de Obsidiana", "item.create.precision_mechanism": "Mecanismo de Precisão", "item.create.propeller": "Hélice", + "item.create.raw_zinc": "Zinco bruto", "item.create.red_sand_paper": "Lixa Vermelha", "item.create.refined_radiance": "Luz Refinada", "item.create.rose_quartz": "Quartzo Rosa", @@ -312,7 +290,7 @@ "item.create.super_glue": "Super Cola", "item.create.sweet_roll": "Rolinho Doce", "item.create.tree_fertilizer": "Fertilizante de Árvore", - "item.create.vertical_gearbox": "Caixa de Transmissão Verticla", + "item.create.vertical_gearbox": "Caixa de Transmissão Vertical", "item.create.wand_of_symmetry": "Varinha de Simetria", "item.create.wheat_flour": "Farinha de trigo", "item.create.whisk": "Batedeira", @@ -325,6 +303,7 @@ "advancement.create.root": "Bem vindo a Create", "advancement.create.root.desc": "É hora de construir engenhocas maravilhosas", + "advancement.create.andesite_alloy": "Alinterações Em abundância", "advancement.create.andesite_alloy.desc": "Materiais do Create tem nomes estranhos, a liga de andesito é um deles.", "advancement.create.its_alive": "Esta vivo!", "advancement.create.its_alive.desc": "Assista o seu primeiro componente cinético rodar.", @@ -334,6 +313,8 @@ "advancement.create.overstressed.desc": "Experience os limites da tensão.", "advancement.create.belt": "Correia de alga", "advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecanica.", + "advancement.create.tunnel": "Pegue cover!", + "advancement.create.tunnel.desc": "Embeleze suas esteiras mecânicas com um tunel.", "advancement.create.splitter_tunnel": "Divida e Conquiste", "advancement.create.splitter_tunnel.desc": "Crie um divisor com um grupo de túneis de latão.", "advancement.create.chute": "Caindo", @@ -341,11 +322,49 @@ "advancement.create.upward_chute": "Abdução aéria", "advancement.create.upward_chute.desc": "Assista um item voar para cima numa calha com ventilador.", "advancement.create.belt_funnel.desc": "Coloque um funil lateral em cima de uma esteira ou depósito para criar um tipo especial.", + "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", + "advancement.create.fan": "Dobrador de ar mecânico", + "advancement.create.fan.desc": "Pegue uma carona no fluxo de ar provido pelo ventilador revestido.", + "advancement.create.fan_lava": "Aquecedor de espaço geotermal", + "advancement.create.fan_lava.desc": "Seja pego pelo fluxo de ar que fundi coisas.", + "advancement.create.fan_water": "Lavagem maluca", + "advancement.create.fan_water.desc": "Seja pego no fluxo de ar que lava coisas.", + "advancement.create.fan_smoke": "Fole mecânico", + "advancement.create.fan_smoke.desc": "Seja pego no fluxo de ar que defuma coisas.", + "advancement.create.wrench": "Configurado convenientemente", + "advancement.create.wrench.desc": "Crie a chave inglesa para ajuda-lo em construi suas engenhocas.", + "advancement.create.goggles": "Visão do stress", + "advancement.create.goggles.desc": "Crie o óculos de engenheiro para ajuda-lo a conseguir mais informações cineticas dos conponentes.", + "advancement.create.speedometer": "Mas quão rapido exatamente?", + "advancement.create.speedometer.desc": "Coloque e energise o velocimetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", + "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.aesthetics": "Boom, estética!", + "advancement.create.aesthetics.desc": "Coloque suportes em eixos, canos e rodas dentadas.", + "advancement.create.reinforced": "Boom, Reinforçado!", + "advancement.create.reinforced.desc": "Use um bloco de revestimento apropriado em um eixo, cano e esteira mecânica.", + "advancement.create.water_wheel": "aproveitamento hidráulico", + "advancement.create.water_wheel.desc": "Coloque uma roda de água e tente conseguir gira-la!", + "advancement.create.chocolate_wheel": "Poder delicioso", + "advancement.create.chocolate_wheel.desc": "Gire uma roda de água com chocolate derretido.", + "advancement.create.lava_wheel": "Roda de magma", + "advancement.create.lava_wheel.desc": "Isso não deveria ter funcionado.", + "advancement.create.cuckoo": "É a hora?", + "advancement.create.cuckoo.desc": "Veja um relógio cuckoo anunciar a hora de dormir.", + "advancement.create.millstone": "Moedor portátil", + "advancement.create.millstone.desc": "Coloque e energize uma pedra de moer", + "advancement.create.windmill": "Uma brisa moderada", + "advancement.create.windmill.desc": "Monte um moinho de vento", + "advancement.create.maxed_windmill": "Uma brisa forte", + "advancement.create.maxed_windmill.desc": "Monte um moinho de vento com força maxima.", "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_drill": "Mineradores estacionarios", "advancement.create.mechanical_drill.desc": "coloque e energize uma broca mecânica.", + "advancement.create.press": "Prensa faz 'Bonk!'", + "advancement.create.press.desc": "Energize uma prensa mecânica e usa-lá para criar algumas chapas.", "advancement.create.polished_rose_quartz": "Diamantes rosa", + "advancement.create.polished_rose_quartz.desc": "Use uma lixa para polir um quartzo rosa até este ficar transparente.", "advancement.create.electron_tube": "Beep Boop", "advancement.create.electron_tube.desc": "Faça alguns tubos de elétron, uteis para fabricar maquinas menos primitivas.", "advancement.create.mechanical_saw": "Cortadores estacionarios", @@ -363,7 +382,67 @@ "advancement.create.brass_casing": "a era do latão", "advancement.create.brass_casing.desc": "Use o recentemente obtido latão e um pouco de madeira para criar um revestimento mais avançado.", "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 cobrepper Casings.", + "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.spout_potion.desc": "Assista uma bica encher uma garrafa com uma poção.", + "advancement.create.chocolate": "Um mundo de imaginação", + "advancement.create.chocolate.desc": "Obtenha um balde de chocolate.", + "advancement.create.item_drain": "Cambalhota de drenação", + "advancement.create.item_drain.desc": "assista um item de fluido ser esvaziado por um dreno de item.", + "advancement.create.chained_item_drain": "Deixe rolar!", + "advancement.create.chained_item_drain.desc": "assista um item rolar através de varios drenos consecutivos.", + "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.pipe_collision": "Nunca cruze o fluxo!", + "advancement.create.pipe_collision.desc": "Assista dois fluidos se encontrarem na sua rede de canos.", + "advancement.create.pipe_spill": "Tem um vazamento!", + "advancement.create.pipe_spill.desc": "Assista a extremidade aberta de um cano pegar ou colocar um fluido no mundo.", + "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.infinite_water": "Drenando o oceano", + "advancement.create.infinite_water.desc": "Bombeie de um corpo de água grande o bastante para ser considerado infinito.", + "advancement.create.infinite_lava": "Drenando o nucleo do planeta", + "advancement.create.infinite_lava.desc": "Bombeie de um corpo de lava grande o bastante para ser considerado infinito.", + "advancement.create.infinite_chocolate": "Afogando em imaginação", + "advancement.create.infinite_chocolate.desc": "Bombeie de um corpo de chocolate grande o bastante para ser considerado infinito.", + "advancement.create.crafter": "Montagem automatica", + "advancement.create.crafter.desc": "Coloque e energize alguns fabricadores mecânicos.", + "advancement.create.clockwork_bearing": "Hora da engenhoca", + "advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.", + "advancement.create.nixie_tube": "Placas estilosas", + "advancement.create.nixie_tube.desc": "Obtenha e coloque um par de tubos nixie.", + "advancement.create.deployer": "Cutuque, coloque e ataque", + "advancement.create.deployer.desc": "coloque e energize um implantador, o reflexo perfeito de voce mesmo.", + "advancement.create.speed_controller": "Engenheiros odiam ele!", + "advancement.create.speed_controller.desc": "Coloque um Controlador de velocidade rotacional, o dispositivo ultimato para mudança de marcha.", + "advancement.create.flywheel": "Coração da fabrica", + "advancement.create.flywheel.desc": "Sucessivamente conecte um motor de fornalha a um volante de inércia.", + "advancement.create.overstress_flywheel": "Altos niveis de stress", + "advancement.create.overstress_flywheel.desc": "Emperre um motor de fornalha.", + "advancement.create.precision_mechanism": "Curiosidades complexas", + "advancement.create.precision_mechanism.desc": "Monte um mecanismo de precisão.", + "advancement.create.mechanical_arm": "Mâos ocupadas!", + "advancement.create.mechanical_arm.desc": "Fabrique um braço mecânico,selecione as entradas e saidas,Coloque e energize o; em seguida assista como elo faz todo o trabalho para você.", + "advancement.create.musical_arm": "toque minha musica!", + "advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.", + "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.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.crushing_wheel": "Par de gigantes", + "advancement.create.crushing_wheel.desc": "Crie algumas rodas de moer para triturar alguns materiais eficientemente.", + "advancement.create.blaze_cake.desc": "Asse para o seu queimador de blaze um bolo especial.", + "advancement.create.wand_of_symmetry": "Espelhos radiantes", + "advancement.create.wand_of_symmetry.desc": "Fabrique uma varinha de simetria.", + "advancement.create.extendo_grip": "Boioioing!", + "advancement.create.extendo_grip.desc": "Apossar-se de uma extensão de pegador.", + "advancement.create.potato_cannon": "Fwoomp!", + "advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.", + "advancement.create.dual_extendo_grip": "A era ultimata do boing", + "advancement.create.dual_extendo_grip.desc": "Empunhe duas extensões de pegador para ter alcance super humano.", + "advancement.create.eob": "Fim do beta", + "advancement.create.eob.desc": "Espere mais conteudo aqui no futuro. <3", "_": "->------------------------] UI & Messages [------------------------<-", @@ -385,6 +464,7 @@ "death.attack.create.potato_cannon.item": "%1$s foi atirado por %2$s usando %3$s", "death.attack.create.cuckoo_clock_explosion": "%1$s foi explodido por relógio cuco adulterado", "death.attack.create.cuckoo_clock_explosion.player": "%1$s foi explodido por relógio cuco adulterado", + "create.recipe.crushing": "Moendo", "create.recipe.fan_washing": "Lavagem em massa", "create.recipe.fan_washing.fan": "Ventilador atrás de água", @@ -396,6 +476,8 @@ "create.recipe.mixing": "Misturando", "create.recipe.deploying": "Implantando", "create.recipe.packing": "Compactando", + "create.recipe.sawing": "UNLOCALIZED: Sawing", + "create.generic.range": "Área", "create.generic.radius": "Raio", "create.generic.width": "Largura", @@ -423,10 +505,10 @@ "create.gui.scrollInput.defaultTitle": "Escolha uma Opção:", "create.gui.scrollInput.scrollToModify": "Role o mouse para Modificar", + "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", "create.gui.scrollInput.scrollToSelect": "Role o mouse para Selecionar", "create.gui.toolmenu.focusKey": "Segure [%1$s] para Focar", "create.gui.toolmenu.cycle": "[SCROLL] para Circular", - "create.gui.symmetryWand.mirrorType": "Espelhar", "create.gui.symmetryWand.orientation": "Orientação", @@ -440,7 +522,6 @@ "create.orientation.alongZ": "Através de Z", "create.orientation.alongX": "Através de X", - "create.gui.goggles.generator_stats": "Estatísticas do gerador:", "create.gui.goggles.kinetic_stats": "Estatísticas cinéticas:", "create.gui.goggles.at_current_speed": "Na velocidade atual", @@ -509,7 +590,6 @@ "create.gui.schematicannon.shotsRemainingWithBackup": "Com backup: %1$s", "create.gui.schematicannon.optionEnabled": "Habilitado Atualmente", "create.gui.schematicannon.optionDisabled": "Desabilitado Atualmente", - "create.gui.schematicannon.showOptions": "UNLOCALIZED: Show Printer Settings", "create.gui.schematicannon.option.dontReplaceSolid": "Não Substituir Blocos Sólidos", "create.gui.schematicannon.option.replaceWithSolid": "Substituir Blocos Sólidos", "create.gui.schematicannon.option.replaceWithAny": "Substituir Sólidos com Qualquer", @@ -541,11 +621,8 @@ "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", "create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado", - - "_": "->------------------------] Subtitles [------------------------<-", - "_": "->------------------------] Item Descriptions [------------------------<-", "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", @@ -556,7 +633,6 @@ "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", "item.create.example_item.tooltip.control1": "Quando Ctrl pressed", "item.create.example_item.tooltip.action1": "These controls are displayed.", - "item.create.wand_of_symmetry.tooltip": "VARINHA DE SIMETRIA", "item.create.wand_of_symmetry.tooltip.summary": "Espelhar perfeitamente a colocação de blocos nos planos configurados.", "item.create.wand_of_symmetry.tooltip.condition1": "Quando na Hotbar", @@ -567,12 +643,10 @@ "item.create.wand_of_symmetry.tooltip.action2": "_Remove_ o Espelho ativo", "item.create.wand_of_symmetry.tooltip.control3": "B-Direito enquanto Abaixado", "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", - "item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ARVORE", "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", "item.create.tree_fertilizer.tooltip.condition1": "Quando usada em Mudas", "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", - "item.create.empty_schematic.tooltip": "ESQUEMA VAZIO", "item.create.empty_schematic.tooltip.summary": "Usado como ingrediente em receitas e para escrever na _Mesa_ _de_ _Esquematizar_", @@ -606,20 +680,16 @@ "block.create.turntable.tooltip": "MESA GIRATÓRIA", "block.create.turntable.tooltip.summary": "Muda a _Força_ _Rotacional_ em uma forma refinada de Enjoo.", - "block.create.toolbox.tooltip": "UNLOCALIZED: TOOLBOX", "block.create.stockpile_switch.tooltip": "DISJUNTOR DE ARMAZENAMENTO", "block.create.stockpile_switch.tooltip.summary": "Alterna um sinal de Redstone com base no _Espaço_ de _Armazenamento_ do Reciente conectado.", "block.create.stockpile_switch.tooltip.condition1": "Quando abaixo do Limite Mínimo", "block.create.stockpile_switch.tooltip.behaviour1": "Para de enviar _Sinal_ de _Redstone_", - "block.create.adjustable_crate.tooltip": "adjustable_crate", - "block.create.adjustable_crate.tooltip.summary": "Este _Recipiente_ de _Armazenamento_ permite controle Manual da sua capacidade. Pode conter até _16_ _Pilhas_ de qualquer Item", - + "block.create.creative_crate.tooltip": "Caixa Criativa", "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para Canho~es de Esquema próximos", "_": "->------------------------] Ponder Content [------------------------<-", - "_": "Thank you for translating Create!" }