diff --git a/src/main/java/com/troblecodings/signals/animation/AnimationMode.java b/src/main/java/com/troblecodings/signals/animation/AnimationMode.java new file mode 100644 index 000000000..79b82fcc7 --- /dev/null +++ b/src/main/java/com/troblecodings/signals/animation/AnimationMode.java @@ -0,0 +1,21 @@ +package com.troblecodings.signals.animation; + +import java.util.Arrays; + +public enum AnimationMode { + + ROTATION("ROTATION"), TRANSLATION("TRANSLATION"); + + private String mode; + + private AnimationMode(final String mode) { + this.mode = mode; + } + + public static AnimationMode of(final String mode) { + return Arrays.stream(values()) + .filter(animationMode -> animationMode.mode.equalsIgnoreCase(mode)).findFirst() + .orElse(null); + } + +} \ No newline at end of file diff --git a/src/main/java/com/troblecodings/signals/animation/AnimationRotionCalc.java b/src/main/java/com/troblecodings/signals/animation/AnimationRotionCalc.java new file mode 100644 index 000000000..c48f9cdb2 --- /dev/null +++ b/src/main/java/com/troblecodings/signals/animation/AnimationRotionCalc.java @@ -0,0 +1,83 @@ +package com.troblecodings.signals.animation; + +import java.util.Objects; + +import com.mojang.math.Quaternion; +import com.mojang.math.Vector3f; + +public class AnimationRotionCalc { + + private float step; + private final RotationAxis axis; + private float progress; + private float max; + + public AnimationRotionCalc(final Vector3f startPosition, final Vector3f finalPosition, + final float animationSpeed, final RotationAxis axis) { + this.step = 0.005f * animationSpeed; + this.axis = axis; + calculateWayAndValues(startPosition, finalPosition); + } + + private void calculateWayAndValues(final Vector3f start, final Vector3f end) { + switch (axis) { + case X: { + progress = start.x(); + max = end.x(); + break; + } + case Y: { + progress = start.y(); + max = end.y(); + break; + } + case Z: { + progress = start.z(); + max = end.z(); + break; + } + } + if (max < progress) { + this.step = -step; + } + } + + public void updateAnimation() { + progress += step; + } + + public boolean isAnimationFinished() { + if (step > 0) { + if (progress < max) + return false; + } else { + if (max < progress) + return false; + } + return true; + } + + public Quaternion getQuaternion() { + return axis.getForAxis(progress); + } + + @Override + public int hashCode() { + return Objects.hash(axis, max, progress, step); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final AnimationRotionCalc other = (AnimationRotionCalc) obj; + return axis == other.axis && Float.floatToIntBits(max) == Float.floatToIntBits(other.max) + && Float.floatToIntBits(progress) == Float.floatToIntBits(other.progress) + && Float.floatToIntBits(step) == Float.floatToIntBits(other.step); + } + +} \ No newline at end of file diff --git a/src/main/java/com/troblecodings/signals/animation/AnimationTranslationCalc.java b/src/main/java/com/troblecodings/signals/animation/AnimationTranslationCalc.java new file mode 100644 index 000000000..35be76089 --- /dev/null +++ b/src/main/java/com/troblecodings/signals/animation/AnimationTranslationCalc.java @@ -0,0 +1,110 @@ +package com.troblecodings.signals.animation; + +import java.util.Objects; + +import com.troblecodings.core.VectorWrapper; + +public class AnimationTranslationCalc { + + private float stepX; + private float stepY; + private float stepZ; + private float progressX; + private float progressY; + private float progressZ; + private float maxX; + private float maxY; + private float maxZ; + + private boolean finishedX = false; + private boolean finishedY = false; + private boolean finishedZ = false; + + public AnimationTranslationCalc(final VectorWrapper startPosition, + final VectorWrapper finalPosition, final float animationSpeed) { + this.stepX = 0.005f * animationSpeed; + this.stepY = 0.005f * animationSpeed; + this.stepZ = 0.005f * animationSpeed; + calculateWayAndValues(startPosition, finalPosition); + } + + private void calculateWayAndValues(final VectorWrapper start, final VectorWrapper end) { + this.progressX = start.getX(); + this.progressY = start.getY(); + this.progressZ = start.getZ(); + + this.maxX = end.getX(); + this.maxY = end.getY(); + this.maxZ = end.getZ(); + + if (maxX < progressX) { + this.stepX = -stepX; + } + if (maxY < progressY) { + this.stepY = -stepY; + } + if (maxZ < progressZ) { + this.stepZ = -stepZ; + } + } + + public void updateAnimation() { + if (!finishedX) { + progressX += stepX; + this.finishedX = isAnimationOnAxisIsFinished(stepX, progressX, maxX); + } + if (!finishedY) { + progressY += stepY; + this.finishedY = isAnimationOnAxisIsFinished(stepY, progressY, maxY); + } + if (!finishedZ) { + progressZ += stepZ; + this.finishedZ = isAnimationOnAxisIsFinished(stepZ, progressZ, maxZ); + } + } + + public boolean isAnimationFinished() { + return finishedX && finishedY && finishedZ; + } + + private static boolean isAnimationOnAxisIsFinished(final float step, final float progress, + final float max) { + if (step > 0) { + if (progress < max) { + return false; + } + } else { + if (max < progress) { + return false; + } + } + return true; + } + + public VectorWrapper getTranslation() { + return new VectorWrapper(progressX, progressY, progressZ); + } + + @Override + public int hashCode() { + return Objects.hash(maxX, maxY, maxZ, progressX, progressY, progressZ); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final AnimationTranslationCalc other = (AnimationTranslationCalc) obj; + return Float.floatToIntBits(maxX) == Float.floatToIntBits(other.maxX) + && Float.floatToIntBits(maxY) == Float.floatToIntBits(other.maxY) + && Float.floatToIntBits(maxZ) == Float.floatToIntBits(other.maxZ) + && Float.floatToIntBits(progressX) == Float.floatToIntBits(other.progressX) + && Float.floatToIntBits(progressY) == Float.floatToIntBits(other.progressY) + && Float.floatToIntBits(progressZ) == Float.floatToIntBits(other.progressZ); + } + +} diff --git a/src/main/java/com/troblecodings/signals/animation/ModelTranslation.java b/src/main/java/com/troblecodings/signals/animation/ModelTranslation.java new file mode 100644 index 000000000..a4f9edff5 --- /dev/null +++ b/src/main/java/com/troblecodings/signals/animation/ModelTranslation.java @@ -0,0 +1,101 @@ +package com.troblecodings.signals.animation; + +import java.util.Objects; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Quaternion; +import com.troblecodings.core.VectorWrapper; + +public class ModelTranslation { + + private VectorWrapper pivotTranslation = VectorWrapper.ZERO; + private Quaternion quaternion = Quaternion.ONE; + private SignalAnimation animation; + private VectorWrapper modelTranslation = VectorWrapper.ZERO; + private VectorWrapper translation = VectorWrapper.ZERO; + private boolean renderModel = false; + + public ModelTranslation(final VectorWrapper firstTranslation, final Quaternion quaternion) { + this.pivotTranslation = firstTranslation; + this.quaternion = quaternion; + } + + public ModelTranslation(final VectorWrapper translation) { + this.translation = translation; + } + + public void translate(final PoseStack stack) { + stack.translate(modelTranslation.getX() - 0.5f, modelTranslation.getY() - 0.5f, + modelTranslation.getZ() - 0.5f); + + if (!quaternion.equals(Quaternion.ONE)) { + stack.mulPose(quaternion); + } + if (!translation.equals(VectorWrapper.ZERO)) { + stack.translate(translation.getX(), translation.getY(), translation.getZ()); + } + stack.translate(pivotTranslation.getX(), pivotTranslation.getY(), pivotTranslation.getZ()); + } + + public Quaternion getQuaternion() { + return quaternion; + } + + public VectorWrapper getTranslation() { + return translation; + } + + public boolean shouldRenderModel() { + return renderModel; + } + + public ModelTranslation setRenderModel(final boolean renderModel) { + this.renderModel = renderModel; + return this; + } + + public void setUpNewTranslation(final ModelTranslation other) { + this.pivotTranslation = other.pivotTranslation; + this.quaternion = other.quaternion; + this.translation = other.translation; + } + + public void setModelTranslation(final VectorWrapper translation) { + this.modelTranslation = translation; + } + + public void assignAnimation(final SignalAnimation animation) { + this.animation = animation; + } + + public void removeAnimation() { + this.animation = null; + } + + public boolean isAnimationAssigned() { + return animation != null; + } + + public SignalAnimation getAssigendAnimation() { + return animation; + } + + @Override + public int hashCode() { + return Objects.hash(pivotTranslation, quaternion, renderModel); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final ModelTranslation other = (ModelTranslation) obj; + return Objects.equals(pivotTranslation, other.pivotTranslation) + && Objects.equals(quaternion, other.quaternion) && renderModel == other.renderModel; + } + +} diff --git a/src/main/java/com/troblecodings/signals/animation/RotationAxis.java b/src/main/java/com/troblecodings/signals/animation/RotationAxis.java new file mode 100644 index 000000000..293f9d8a2 --- /dev/null +++ b/src/main/java/com/troblecodings/signals/animation/RotationAxis.java @@ -0,0 +1,42 @@ +package com.troblecodings.signals.animation; + +import java.util.Arrays; + +import com.mojang.math.Quaternion; +import com.troblecodings.signals.OpenSignalsMain; + +public enum RotationAxis { + + X("X"), Y("Y"), Z("Z"); + + private final String axis; + + private RotationAxis(final String axis) { + this.axis = axis; + } + + public static RotationAxis of(final String axis) { + return Arrays.stream(values()) + .filter(rotationAxis -> rotationAxis.axis.equalsIgnoreCase(axis)).findFirst() + .orElseGet(() -> { + OpenSignalsMain.exitMinecraftWithMessage("[" + axis + + "] is not a valid axis for a RotationAnimation! Valid are: " + + values()); + return null; + }); + } + + public Quaternion getForAxis(final float value) { + switch (this) { + case X: + return Quaternion.fromXYZ(value, 0, 0); + case Y: + return Quaternion.fromXYZ(0, value, 0); + case Z: + return Quaternion.fromXYZ(0, 0, value); + default: + return Quaternion.fromXYZ(0, 0, 0); + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/troblecodings/signals/animation/SignalAnimation.java b/src/main/java/com/troblecodings/signals/animation/SignalAnimation.java new file mode 100644 index 000000000..766e2a737 --- /dev/null +++ b/src/main/java/com/troblecodings/signals/animation/SignalAnimation.java @@ -0,0 +1,25 @@ +package com.troblecodings.signals.animation; + +import java.util.function.Predicate; + +import com.troblecodings.signals.models.ModelInfoWrapper; + +public interface SignalAnimation extends Predicate { + + public void updateAnimation(); + + public ModelTranslation getModelTranslation(); + + public ModelTranslation getFinalModelTranslation(); + + public boolean isFinished(); + + public void reset(); + + public void setUpAnimationValues(final ModelTranslation currentTranslation); + + public SignalAnimation copy(); + + public Predicate getPredicate(); + +} \ No newline at end of file diff --git a/src/main/java/com/troblecodings/signals/animation/SignalAnimationHandler.java b/src/main/java/com/troblecodings/signals/animation/SignalAnimationHandler.java new file mode 100644 index 000000000..28abe954a --- /dev/null +++ b/src/main/java/com/troblecodings/signals/animation/SignalAnimationHandler.java @@ -0,0 +1,135 @@ +package com.troblecodings.signals.animation; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.stream.Collectors; + +import com.google.common.collect.Maps; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Quaternion; +import com.troblecodings.core.VectorWrapper; +import com.troblecodings.signals.OpenSignalsMain; +import com.troblecodings.signals.SEProperty; +import com.troblecodings.signals.blocks.Signal; +import com.troblecodings.signals.contentpacks.SignalAnimationConfigParser; +import com.troblecodings.signals.core.RenderAnimationInfo; +import com.troblecodings.signals.core.SignalAngel; +import com.troblecodings.signals.models.ModelInfoWrapper; +import com.troblecodings.signals.models.SignalCustomModel; +import com.troblecodings.signals.tileentitys.SignalTileEntity; + +import net.minecraft.client.renderer.ItemBlockRenderTypes; +import net.minecraft.client.renderer.block.ModelBlockRenderer; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.model.data.IModelData; + +public class SignalAnimationHandler { + + private final SignalTileEntity tile; + + public SignalAnimationHandler(final SignalTileEntity tile) { + this.tile = tile; + } + + private final Map>>// + animationPerModel = new HashMap<>(); + + public void render(final RenderAnimationInfo info) { + final BlockState state = tile.getBlockState(); + final SignalAngel angle = state.getValue(Signal.ANGEL); + final ModelBlockRenderer renderer = info.dispatcher.getModelRenderer(); + final VertexConsumer vertex = info.source + .getBuffer(ItemBlockRenderTypes.getRenderType(state, false)); + final IModelData data = tile.getModelData(); + + animationPerModel.forEach((model, entry) -> { + final ModelTranslation translation = entry.getKey(); + if (!translation.shouldRenderModel()) + return; + + info.stack.pushPose(); + info.stack.translate(0.5f, 0.5f, 0.5f); + info.stack.mulPose(angle.getQuaternion()); + translation.translate(info.stack); + renderer.renderModel(info.stack.last(), vertex, state, model, 0, 0, 0, info.lightColor, + info.overlayTexture, data); + info.stack.popPose(); + + if (translation.isAnimationAssigned()) { + updateAnimation(translation); + } + }); + } + + private void updateAnimation(final ModelTranslation translation) { + final SignalAnimation animation = translation.getAssigendAnimation(); + if (animation.isFinished()) { + translation.setUpNewTranslation(animation.getFinalModelTranslation()); + translation.removeAnimation(); + animation.reset(); + return; + } + animation.updateAnimation(); + translation.setUpNewTranslation(animation.getModelTranslation()); + } + + public void updateStates(final Map newProperties, + final Map oldProperties) { + if (oldProperties.isEmpty()) { + updateToFinalizedAnimations(new ModelInfoWrapper(newProperties)); + } else { + updateAnimations(new ModelInfoWrapper(newProperties)); + } + } + + private void updateAnimations(final ModelInfoWrapper wrapper) { + animationPerModel.values().forEach(entry -> { + entry.getKey().setRenderModel(false); + for (final SignalAnimation animation : entry.getValue()) { + if (animation.test(wrapper)) { + final ModelTranslation translation = entry.getKey(); + translation.setRenderModel(true); + if (translation.isAnimationAssigned()) { + final SignalAnimation other = translation.getAssigendAnimation(); + other.reset(); + } + animation.setUpAnimationValues(translation); + translation.setUpNewTranslation(animation.getModelTranslation()); + translation.assignAnimation(animation); + } + } + }); + } + + private void updateToFinalizedAnimations(final ModelInfoWrapper wrapper) { + animationPerModel.values().forEach((entry) -> { + for (final SignalAnimation animation : entry.getValue()) { + if (animation.test(wrapper)) { + final ModelTranslation translation = entry.getKey(); + translation.setUpNewTranslation(animation.getFinalModelTranslation()); + translation.setRenderModel(true); + } + } + }); + } + + public void updateAnimationListFromBlock() { + animationPerModel.clear(); + final Map, List> map = // + SignalAnimationConfigParser.ALL_ANIMATIONS.get(tile.getSignal()); + map.forEach((entry, animations) -> { + final BakedModel model = SignalCustomModel.getModelFromLocation( + new ResourceLocation(OpenSignalsMain.MODID, entry.getKey())); + final ModelTranslation translation = new ModelTranslation(VectorWrapper.ZERO, + new Quaternion(0, 0, 0, 0)); + translation.setModelTranslation(entry.getValue().copy()); + animationPerModel.put(model, Maps.immutableEntry(translation, animations.stream() + .map(animation -> animation.copy()).collect(Collectors.toList()))); + }); + } + +} diff --git a/src/main/java/com/troblecodings/signals/animation/SignalAnimationRotation.java b/src/main/java/com/troblecodings/signals/animation/SignalAnimationRotation.java new file mode 100644 index 000000000..0cb82a609 --- /dev/null +++ b/src/main/java/com/troblecodings/signals/animation/SignalAnimationRotation.java @@ -0,0 +1,116 @@ +package com.troblecodings.signals.animation; + +import java.util.Objects; +import java.util.function.Predicate; + +import com.mojang.math.Vector3f; +import com.troblecodings.core.VectorWrapper; +import com.troblecodings.signals.models.ModelInfoWrapper; + +public class SignalAnimationRotation implements SignalAnimation { + + private AnimationRotionCalc calc; + + private final Predicate predicate; + private final float animationSpeed; + private final RotationAxis axis; + private final float rotation; + private final VectorWrapper pivot; + private final float finalRotationValue; + + public SignalAnimationRotation(final Predicate predicate, + final float animationSpeed, final RotationAxis axis, final float rotation, + final VectorWrapper pivot) { + this.predicate = predicate; + this.animationSpeed = animationSpeed; + this.axis = axis; + this.rotation = rotation; + this.pivot = pivot; + this.finalRotationValue = rotation * 0.005f * 3.49065f; + } + + @Override + public void updateAnimation() { + calc.updateAnimation(); + } + + @Override + public void setUpAnimationValues(final ModelTranslation currentTranslation) { + final Vector3f vec = currentTranslation.getQuaternion().toYXZ(); + Vector3f maxPos = new Vector3f(0, 0, 0); + switch (axis) { + case X: { + maxPos = new Vector3f(finalRotationValue, 0, 0); + break; + } + case Y: { + maxPos = new Vector3f(0, finalRotationValue, 0); + break; + } + case Z: { + maxPos = new Vector3f(0, 0, finalRotationValue); + break; + } + default: + break; + } + this.calc = new AnimationRotionCalc(vec, maxPos, animationSpeed, axis); + } + + @Override + public ModelTranslation getFinalModelTranslation() { + return new ModelTranslation(pivot, axis.getForAxis(finalRotationValue)); + } + + @Override + public ModelTranslation getModelTranslation() { + return new ModelTranslation(pivot, calc.getQuaternion()); + } + + @Override + public boolean isFinished() { + if (calc == null) + return true; + return calc.isAnimationFinished(); + } + + @Override + public void reset() { + calc = null; + } + + @Override + public boolean test(final ModelInfoWrapper wrapper) { + return predicate.test(wrapper); + } + + @Override + public SignalAnimation copy() { + return new SignalAnimationRotation(predicate, animationSpeed, axis, rotation, pivot); + } + + @Override + public Predicate getPredicate() { + return predicate; + } + + @Override + public int hashCode() { + return Objects.hash(animationSpeed, axis, pivot, calc, rotation); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final SignalAnimationRotation other = (SignalAnimationRotation) obj; + return Float.floatToIntBits(animationSpeed) == Float.floatToIntBits(other.animationSpeed) + && axis == other.axis && Objects.equals(pivot, other.pivot) + && Objects.equals(calc, other.calc) && Objects.equals(rotation, other.rotation); + } + +} \ No newline at end of file diff --git a/src/main/java/com/troblecodings/signals/animation/SignalAnimationTranslation.java b/src/main/java/com/troblecodings/signals/animation/SignalAnimationTranslation.java new file mode 100644 index 000000000..31061e6b9 --- /dev/null +++ b/src/main/java/com/troblecodings/signals/animation/SignalAnimationTranslation.java @@ -0,0 +1,91 @@ +package com.troblecodings.signals.animation; + +import java.util.Objects; +import java.util.function.Predicate; + +import com.troblecodings.core.VectorWrapper; +import com.troblecodings.signals.models.ModelInfoWrapper; + +public class SignalAnimationTranslation implements SignalAnimation { + + private AnimationTranslationCalc calc; + + private final Predicate predicate; + private String model; + private final float animationSpeed; + private final VectorWrapper dest; + + public SignalAnimationTranslation(Predicate predicate, + final float animationSpeed, final VectorWrapper dest) { + this.predicate = predicate; + this.animationSpeed = animationSpeed; + this.dest = dest; + } + + @Override + public void updateAnimation() { + calc.updateAnimation(); + } + + @Override + public void setUpAnimationValues(final ModelTranslation currentTranslation) { + this.calc = new AnimationTranslationCalc(currentTranslation.getTranslation(), dest, + animationSpeed); + } + + @Override + public ModelTranslation getFinalModelTranslation() { + return new ModelTranslation(dest); + } + + @Override + public ModelTranslation getModelTranslation() { + return new ModelTranslation(calc.getTranslation()); + } + + @Override + public boolean isFinished() { + if (calc == null) + return true; + return calc.isAnimationFinished(); + } + + @Override + public void reset() { + calc = null; + } + + @Override + public boolean test(final ModelInfoWrapper wrapper) { + return predicate.test(wrapper); + } + + @Override + public SignalAnimation copy() { + return new SignalAnimationTranslation(predicate, animationSpeed, dest); + } + + @Override + public Predicate getPredicate() { + return predicate; + } + + @Override + public int hashCode() { + return Objects.hash(animationSpeed, dest, model); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final SignalAnimationTranslation other = (SignalAnimationTranslation) obj; + return Float.floatToIntBits(animationSpeed) == Float.floatToIntBits(other.animationSpeed) + && Objects.equals(dest, other.dest) && Objects.equals(model, other.model); + } + +} \ No newline at end of file diff --git a/src/main/java/com/troblecodings/signals/blocks/Signal.java b/src/main/java/com/troblecodings/signals/blocks/Signal.java index 771274edd..ecdae1c24 100644 --- a/src/main/java/com/troblecodings/signals/blocks/Signal.java +++ b/src/main/java/com/troblecodings/signals/blocks/Signal.java @@ -13,6 +13,7 @@ import com.troblecodings.signals.OpenSignalsMain; import com.troblecodings.signals.SEProperty; import com.troblecodings.signals.config.ConfigHandler; +import com.troblecodings.signals.contentpacks.SignalAnimationConfigParser; import com.troblecodings.signals.core.DestroyHelper; import com.troblecodings.signals.core.JsonEnum; import com.troblecodings.signals.core.RenderOverlayInfo; @@ -67,8 +68,8 @@ public class Signal extends BasicBlock { public static final Map SIGNALS = new HashMap<>(); public static final List SIGNAL_IDS = new ArrayList<>(); - public static final EnumProperty ANGEL = - EnumProperty.create("angel", SignalAngel.class); + public static final EnumProperty ANGEL = EnumProperty.create("angel", + SignalAngel.class); public static final SEProperty CUSTOMNAME = new SEProperty("customname", JsonEnum.BOOLEAN, "false", ChangeableStage.AUTOMATICSTAGE, t -> true, 0); public static final TileEntitySupplierWrapper SUPPLIER = SignalTileEntity::new; @@ -122,8 +123,8 @@ public VoxelShape getBlockSupportShape(final BlockState stat, final BlockGetter @Override public BlockState getStateForPlacement(final BlockPlaceContext context) { - final int angel = - Integer.valueOf(Mth.floor(context.getRotation() * 16.0F / 360.0F + 0.5D) & 15); + final int angel = Integer + .valueOf(Mth.floor(context.getRotation() * 16.0F / 360.0F + 0.5D) & 15); return defaultBlockState().setValue(ANGEL, SignalAngel.values()[angel]); } @@ -454,4 +455,8 @@ public void tick(final BlockState state, final ServerLevel world, final BlockPos public Optional getSupplierWrapper() { return Optional.of(SUPPLIER); } + + public boolean hasAnimation() { + return SignalAnimationConfigParser.ALL_ANIMATIONS.containsKey(this); + } } diff --git a/src/main/java/com/troblecodings/signals/contentpacks/SignalAnimationConfig.java b/src/main/java/com/troblecodings/signals/contentpacks/SignalAnimationConfig.java new file mode 100644 index 000000000..cfa5058fa --- /dev/null +++ b/src/main/java/com/troblecodings/signals/contentpacks/SignalAnimationConfig.java @@ -0,0 +1,46 @@ +package com.troblecodings.signals.contentpacks; + +import com.troblecodings.core.VectorWrapper; +import com.troblecodings.signals.animation.AnimationMode; +import com.troblecodings.signals.animation.RotationAxis; +import com.troblecodings.signals.animation.SignalAnimation; +import com.troblecodings.signals.animation.SignalAnimationRotation; +import com.troblecodings.signals.animation.SignalAnimationTranslation; +import com.troblecodings.signals.parser.FunctionParsingInfo; +import com.troblecodings.signals.parser.LogicParser; + +public class SignalAnimationConfig { + + private String predicate; + private float animationSpeed = 1.0f; + private String mode; + private String rotationAxis; + private float rotation = 0; + + private float pivotX = 0; + private float pivotY = 0; + private float pivotZ = 0; + + private float destX = 0; + private float destY = 0; + private float destZ = 0; + + public SignalAnimation createAnimation(final FunctionParsingInfo info, + final VectorWrapper pivot) { + final AnimationMode mode = AnimationMode.of(this.mode); + switch (mode) { + case ROTATION: { + final RotationAxis axis = RotationAxis.of(rotationAxis); + return new SignalAnimationRotation(LogicParser.predicate(predicate, info), + animationSpeed, axis, rotation, new VectorWrapper(pivotX + pivot.getX(), + pivotY + pivot.getY(), pivotZ + pivot.getZ())); + } + case TRANSLATION: { + return new SignalAnimationTranslation(LogicParser.predicate(predicate, info), + animationSpeed, new VectorWrapper(destX, destY, destZ)); + } + default: + return null; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/troblecodings/signals/contentpacks/SignalAnimationConfigParser.java b/src/main/java/com/troblecodings/signals/contentpacks/SignalAnimationConfigParser.java new file mode 100644 index 000000000..5b1900ace --- /dev/null +++ b/src/main/java/com/troblecodings/signals/contentpacks/SignalAnimationConfigParser.java @@ -0,0 +1,74 @@ +package com.troblecodings.signals.contentpacks; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import com.google.common.collect.Maps; +import com.google.gson.Gson; +import com.troblecodings.core.VectorWrapper; +import com.troblecodings.signals.OpenSignalsMain; +import com.troblecodings.signals.animation.SignalAnimation; +import com.troblecodings.signals.blocks.Signal; +import com.troblecodings.signals.parser.FunctionParsingInfo; + +public class SignalAnimationConfigParser { + + private Map animations; + + private static final Gson GSON = new Gson(); + + public static final Map, List>>// + ALL_ANIMATIONS = new HashMap<>(); + + public static void loadAllAnimations() { + if (!ALL_ANIMATIONS.isEmpty()) + return; + OpenSignalsMain.contentPacks.getFiles("animations").forEach(entry -> { + final String signalName = entry.getKey().replace(".json", "").toLowerCase(); + final Signal signal = Signal.SIGNALS.get(signalName); + if (signal == null) + OpenSignalsMain + .exitMinecraftWithMessage("There doesn't exists a signal with the name '" + + signalName + "'! Valid Signals are: " + Signal.SIGNALS.keySet()); + if (ALL_ANIMATIONS.containsKey(signal)) + OpenSignalsMain.exitMinecraftWithMessage( + "There are already existing animations for " + signal + "!"); + final FunctionParsingInfo info = new FunctionParsingInfo(signal); + + final SignalAnimationConfigParser parser = GSON.fromJson(entry.getValue(), + SignalAnimationConfigParser.class); + final Map, List> modelToAnimation = new HashMap<>(); + parser.animations.forEach((modelName, configs) -> { + final VectorWrapper vec = new VectorWrapper(configs.translationX, + configs.translationY, configs.translationZ); + final List animatinos = new ArrayList<>(); + for (final SignalAnimationConfig config : configs.animationConfigs) { + animatinos.add(config.createAnimation(info, + new VectorWrapper(configs.pivotX, configs.pivotY, configs.pivotZ))); + } + if (!animatinos.isEmpty()) + modelToAnimation.put(Maps.immutableEntry(modelName, vec), animatinos); + }); + if (!modelToAnimation.isEmpty()) + ALL_ANIMATIONS.put(signal, modelToAnimation); + }); + } + + private class ModelAnimationConfig { + + private float translationX = 0; + private float translationY = 0; + private float translationZ = 0; + + private float pivotX = 0; + private float pivotY = 0; + private float pivotZ = 0; + + private List animationConfigs; + + } + +} \ No newline at end of file diff --git a/src/main/java/com/troblecodings/signals/core/RenderAnimationInfo.java b/src/main/java/com/troblecodings/signals/core/RenderAnimationInfo.java new file mode 100644 index 000000000..ada4bd81f --- /dev/null +++ b/src/main/java/com/troblecodings/signals/core/RenderAnimationInfo.java @@ -0,0 +1,32 @@ +package com.troblecodings.signals.core; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.troblecodings.signals.tileentitys.SignalTileEntity; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.block.BlockRenderDispatcher; + +public class RenderAnimationInfo { + + public final PoseStack stack; + public SignalTileEntity tileEntity; + public final BlockRenderDispatcher dispatcher; + public final MultiBufferSource source; + public final int lightColor; + public final int overlayTexture; + + public RenderAnimationInfo(final PoseStack stack, final BlockRenderDispatcher dispatcher, + final MultiBufferSource source, final int lightColor, final int overlayTexture) { + this.stack = stack; + this.dispatcher = dispatcher; + this.source = source; + this.lightColor = lightColor; + this.overlayTexture = overlayTexture; + } + + public RenderAnimationInfo with(final SignalTileEntity tileEntity) { + this.tileEntity = tileEntity; + return this; + } + +} diff --git a/src/main/java/com/troblecodings/signals/core/SignalPropertiesBuilder.java b/src/main/java/com/troblecodings/signals/core/SignalPropertiesBuilder.java index 96c8cc5a2..d5a767036 100644 --- a/src/main/java/com/troblecodings/signals/core/SignalPropertiesBuilder.java +++ b/src/main/java/com/troblecodings/signals/core/SignalPropertiesBuilder.java @@ -55,10 +55,11 @@ public SignalProperties build(final FunctionParsingInfo info) { } } } - if (placementtool == null) + if (placementtool == null) { OpenSignalsMain.exitMinecraftWithMessage( "There doesn't exists a placementtool with the name '" + placementToolName + "'! Valid Placementtools: " + OSItems.placementtools); + } final List> signalheights = new ArrayList<>(); if (signalHeights != null) { diff --git a/src/main/java/com/troblecodings/signals/guis/PreviewSideBar.java b/src/main/java/com/troblecodings/signals/guis/PreviewSideBar.java index c4a827846..a4e0351de 100644 --- a/src/main/java/com/troblecodings/signals/guis/PreviewSideBar.java +++ b/src/main/java/com/troblecodings/signals/guis/PreviewSideBar.java @@ -1,28 +1,45 @@ package com.troblecodings.signals.guis; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.Map.Entry; +import java.util.function.Predicate; import com.mojang.math.Quaternion; +import com.troblecodings.core.VectorWrapper; import com.troblecodings.guilib.ecs.entitys.UIBlockRender; import com.troblecodings.guilib.ecs.entitys.UIBlockRenderInfo; import com.troblecodings.guilib.ecs.entitys.UIEntity; +import com.troblecodings.guilib.ecs.entitys.UIMultiBlockRender; import com.troblecodings.guilib.ecs.entitys.input.UIDrag; import com.troblecodings.guilib.ecs.entitys.render.UIColor; import com.troblecodings.guilib.ecs.entitys.render.UIScissor; +import com.troblecodings.signals.OpenSignalsMain; import com.troblecodings.signals.SEProperty; +import com.troblecodings.signals.animation.ModelTranslation; +import com.troblecodings.signals.animation.SignalAnimation; import com.troblecodings.signals.blocks.Signal; +import com.troblecodings.signals.contentpacks.SignalAnimationConfigParser; import com.troblecodings.signals.enums.ChangeableStage; import com.troblecodings.signals.models.ModelInfoWrapper; +import com.troblecodings.signals.models.SignalCustomModel; + +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.resources.ResourceLocation; public class PreviewSideBar { public static final float MODIFIER = 0.1f; - private final UIBlockRender blockRender; + private UIBlockRender blockRender; private final Map properties = new HashMap<>(); private final UIEntity blockRenderEntity = new UIEntity(); + private final float height; + private final List animationInfos = new ArrayList<>(); public PreviewSideBar(final float height) { + this.height = height; blockRender = new UIBlockRender(20, height); blockRenderEntity.setInheritHeight(true); blockRenderEntity.setWidth(60); @@ -69,8 +86,41 @@ public void clear() { properties.clear(); } + private void buildRenderListForAnimations(final Signal signal, final ModelInfoWrapper wrapper) { + animationInfos.clear(); + final Map, List> // + map = SignalAnimationConfigParser.ALL_ANIMATIONS.get(signal); + map.forEach((entry, list) -> { + for (final SignalAnimation animation : list) { + final Predicate predicate = animation.getPredicate(); + final ModelTranslation modelTranslation = animation.getFinalModelTranslation(); + modelTranslation.setModelTranslation(entry.getValue().copy()); + + final BakedModel model = SignalCustomModel.getModelFromLocation( + new ResourceLocation(OpenSignalsMain.MODID, entry.getKey())); + + final UIBlockRenderInfo info = new UIBlockRenderInfo(model, + signal.defaultBlockState(), wrapper, new VectorWrapper(0.5f, 0.5f, 0.5f)); + info.predicate = p -> predicate.test(wrapper); + info.consumer = d -> { + modelTranslation.translate(d.stack); + }; + animationInfos.add(info); + } + }); + } + public void update(final Signal signal) { - blockRender.setBlockState(new UIBlockRenderInfo(signal.defaultBlockState(), - new ModelInfoWrapper(properties))); + final ModelInfoWrapper wrapper = new ModelInfoWrapper(properties); + blockRenderEntity.remove(blockRender); + if (signal.hasAnimation()) { + buildRenderListForAnimations(signal, wrapper); + blockRender = new UIMultiBlockRender(20, height); + animationInfos.forEach(blockRender::setBlockState); + } else { + blockRender = new UIBlockRender(20, height); + } + blockRender.setBlockState(new UIBlockRenderInfo(signal.defaultBlockState(), wrapper)); + blockRenderEntity.add(blockRender); } } diff --git a/src/main/java/com/troblecodings/signals/models/CustomModelLoader.java b/src/main/java/com/troblecodings/signals/models/CustomModelLoader.java index f984180db..551c67f85 100644 --- a/src/main/java/com/troblecodings/signals/models/CustomModelLoader.java +++ b/src/main/java/com/troblecodings/signals/models/CustomModelLoader.java @@ -7,8 +7,11 @@ import java.util.Map.Entry; import java.util.function.Predicate; +import com.troblecodings.core.VectorWrapper; import com.troblecodings.signals.OpenSignalsMain; +import com.troblecodings.signals.animation.SignalAnimation; import com.troblecodings.signals.blocks.Signal; +import com.troblecodings.signals.contentpacks.SignalAnimationConfigParser; import com.troblecodings.signals.core.SignalAngel; import com.troblecodings.signals.parser.FunctionParsingInfo; import com.troblecodings.signals.parser.LogicParser; @@ -211,6 +214,15 @@ public void onResourceManagerReload(final ResourceManager manager) { } } } + SignalAnimationConfigParser.loadAllAnimations(); + final Map, List> animations = // + SignalAnimationConfigParser.ALL_ANIMATIONS.get(signaltype); + if (animations != null) { + animations.keySet() + .forEach(entry -> accumulator.add( + new SignalModelLoaderInfo(entry.getKey(), predicate -> false, 0, + 0, 0, new HashMap<>()).setOnAnimation())); + } registeredModels.put(lowercaseName, accumulator); } } diff --git a/src/main/java/com/troblecodings/signals/models/SignalCustomModel.java b/src/main/java/com/troblecodings/signals/models/SignalCustomModel.java index d90585066..03acef81c 100644 --- a/src/main/java/com/troblecodings/signals/models/SignalCustomModel.java +++ b/src/main/java/com/troblecodings/signals/models/SignalCustomModel.java @@ -25,6 +25,7 @@ import com.troblecodings.signals.OpenSignalsMain; import com.troblecodings.signals.core.SignalAngel; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.renderer.texture.TextureAtlasSprite; @@ -45,6 +46,8 @@ @OnlyIn(Dist.CLIENT) public class SignalCustomModel implements UnbakedModel { + private static final Map locationToModel = new HashMap<>(); + @Nonnull public static final Random RANDOM = new Random(); @@ -81,9 +84,8 @@ private static void transform(final BakedQuad quad, final Matrix4f quaterion) { } } - private static BakedModelPair transform(final SignalModelLoaderInfo info, - final ModelBakery bakery, final ResourceLocation location, - final Function function, + private BakedModelPair transform(final SignalModelLoaderInfo info, final ModelBakery bakery, + final ResourceLocation location, final Function function, final Map> material, final Quaternion rotation) { final Transformation transformation = new Transformation( new Vector3f(info.x, info.y, info.z), null, null, null); @@ -110,6 +112,10 @@ private static BakedModelPair transform(final SignalModelLoaderInfo info, model.getQuads(null, direction, RANDOM, EmptyModelData.INSTANCE) .forEach(quad -> transform(quad, matrix)); } + + if (angel.equals(SignalAngel.ANGEL0) && info.isAnimation) { + locationToModel.put(new ResourceLocation(OpenSignalsMain.MODID, info.name), model); + } return new BakedModelPair(info.state, model); } @@ -153,4 +159,9 @@ public BakedModel bake(final ModelBakery bakery, materialsFromString, quaternion)) .collect(Collectors.toUnmodifiableList())); } + + public static BakedModel getModelFromLocation(final ResourceLocation location) { + return locationToModel.getOrDefault(location, + Minecraft.getInstance().getModelManager().getMissingModel()); + } } \ No newline at end of file diff --git a/src/main/java/com/troblecodings/signals/models/SignalModelLoaderInfo.java b/src/main/java/com/troblecodings/signals/models/SignalModelLoaderInfo.java index 74cae0857..2345b7fa5 100644 --- a/src/main/java/com/troblecodings/signals/models/SignalModelLoaderInfo.java +++ b/src/main/java/com/troblecodings/signals/models/SignalModelLoaderInfo.java @@ -16,6 +16,7 @@ public class SignalModelLoaderInfo { public final float y; public final float z; public final Map retexture; + public boolean isAnimation = false; public UnbakedModel model; public SignalModelLoaderInfo(final String name, final Predicate state, @@ -28,8 +29,8 @@ public SignalModelLoaderInfo(final String name, final Predicate hasNot(final SEProperty property) { @SuppressWarnings("unchecked") public static Predicate with(final ValuePack pack) { return ebs -> { - final Object test = ebs.get(pack.property); - return test != null && pack.predicate.test(test); + final String test = ebs.get(pack.property); + return test != null && pack.predicate.test(test.toUpperCase()); }; } diff --git a/src/main/java/com/troblecodings/signals/proxy/CommonProxy.java b/src/main/java/com/troblecodings/signals/proxy/CommonProxy.java index 75c9a8d62..c300e4d44 100644 --- a/src/main/java/com/troblecodings/signals/proxy/CommonProxy.java +++ b/src/main/java/com/troblecodings/signals/proxy/CommonProxy.java @@ -15,6 +15,7 @@ import com.troblecodings.signals.contentpacks.ChangeConfigParser; import com.troblecodings.signals.contentpacks.OneSignalNonPredicateConfigParser; import com.troblecodings.signals.contentpacks.OneSignalPredicateConfigParser; +import com.troblecodings.signals.contentpacks.SignalAnimationConfigParser; import com.troblecodings.signals.contentpacks.SubsidiarySignalParser; import com.troblecodings.signals.guis.ContainerPlacementtool; import com.troblecodings.signals.guis.ContainerSignalBox; @@ -61,5 +62,6 @@ public void preinit(final FMLCommonSetupEvent event) { ChangeConfigParser.loadChangeConfigs(); OneSignalPredicateConfigParser.loadAllOneSignalPredicateConfigs(); SubsidiarySignalParser.loadAllSubsidiarySignals(); + SignalAnimationConfigParser.loadAllAnimations(); } } \ No newline at end of file diff --git a/src/main/java/com/troblecodings/signals/tileentitys/SignalSpecialRenderer.java b/src/main/java/com/troblecodings/signals/tileentitys/SignalSpecialRenderer.java index b4939e15a..2e54adfba 100644 --- a/src/main/java/com/troblecodings/signals/tileentitys/SignalSpecialRenderer.java +++ b/src/main/java/com/troblecodings/signals/tileentitys/SignalSpecialRenderer.java @@ -1,11 +1,21 @@ package com.troblecodings.signals.tileentitys; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Quaternion; +import com.troblecodings.signals.OpenSignalsMain; +import com.troblecodings.signals.blocks.Signal; +import com.troblecodings.signals.core.RenderAnimationInfo; import com.troblecodings.signals.core.RenderOverlayInfo; +import com.troblecodings.signals.core.SignalAngel; +import com.troblecodings.signals.models.SignalCustomModel; +import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.state.BlockState; public class SignalSpecialRenderer implements BlockEntityRenderer { @@ -18,8 +28,46 @@ public SignalSpecialRenderer(final BlockEntityRendererProvider.Context context) @Override public void render(final SignalTileEntity tile, final float tick, final PoseStack stack, final MultiBufferSource source, final int rand1, final int rand2) { - if (!tile.hasCustomName()) - return; - tile.renderOverlay(new RenderOverlayInfo(stack, 0, 0, 0, context.getFont())); + if (tile.hasCustomName()) { + tile.renderOverlay(new RenderOverlayInfo(stack, 0, 0, 0, context.getFont())); + } + if (tile.getSignal().hasAnimation()) { + tile.getAnimationHandler().render(new RenderAnimationInfo(stack, + context.getBlockRenderDispatcher(), source, rand1, rand2).with(tile)); + } + } + + // @SuppressWarnings("deprecation") + public void renderAnimation(final RenderAnimationInfo info, final SignalTileEntity tile) { + + final BlockState state = tile.getBlockState(); + final SignalAngel angle = state.getValue(Signal.ANGEL); + + info.stack.pushPose(); // erst Berechnungen ausführen, dann Block rendern + + info.stack.translate(0.5f, 0.5f, 0.5f); + + info.stack.mulPose(angle.getQuaternion()); + info.stack.translate(0.15f, 7f, -0.5f); // Block verschieben + + info.stack.mulPose(Quaternion.fromXYZ(0, 0, -tile.animProgress * 0.005f)); + tile.updateAnim(); // Progress aktualisieren + + info.stack.translate(-0.7f, -4.5f, 0f); // Pivot Punkt verschieben + + // info.dispatcher.renderSingleBlock(Blocks.GLASS.defaultBlockState(), + // info.stack, info.source, + // info.lightColor, info.overlayTexture); // Block render + final BakedModel model = SignalCustomModel.getModelFromLocation( + new ResourceLocation(OpenSignalsMain.MODID, "semaphore_signals/sema_main_wing1")); + info.dispatcher.getModelRenderer().renderModel(info.stack.last(), + info.source.getBuffer(ItemBlockRenderTypes.getRenderType(state, false)), state, + model, 0, 0, 0, info.lightColor, info.overlayTexture, tile.getModelData()); + + info.stack.popPose(); + + if (tile.animProgress > 158) { + tile.animProgress = 0; + } } } \ No newline at end of file diff --git a/src/main/java/com/troblecodings/signals/tileentitys/SignalTileEntity.java b/src/main/java/com/troblecodings/signals/tileentitys/SignalTileEntity.java index c96605fa8..46644172c 100644 --- a/src/main/java/com/troblecodings/signals/tileentitys/SignalTileEntity.java +++ b/src/main/java/com/troblecodings/signals/tileentitys/SignalTileEntity.java @@ -9,6 +9,7 @@ import com.troblecodings.core.interfaces.NamableWrapper; import com.troblecodings.guilib.ecs.interfaces.ISyncable; import com.troblecodings.signals.SEProperty; +import com.troblecodings.signals.animation.SignalAnimationHandler; import com.troblecodings.signals.blocks.Signal; import com.troblecodings.signals.core.RenderOverlayInfo; import com.troblecodings.signals.core.SignalStateListener; @@ -25,8 +26,13 @@ public class SignalTileEntity extends SyncableTileEntity implements NamableWrapper, ISyncable { + public float animProgress; + protected final SignalAnimationHandler handler; + public SignalTileEntity(final TileEntityInfo info) { super(info); + animProgress = 0.0F; + this.handler = new SignalAnimationHandler(this); } private final Map properties = new HashMap<>(); @@ -64,6 +70,10 @@ public void renderOverlay(final RenderOverlayInfo info) { signal.renderOverlay(info.with(this)); } + public void updateAnim() { + ++animProgress; + } + @Override public String getNameWrapper() { final String name = super.getNameWrapper(); @@ -82,11 +92,23 @@ public Map getProperties() { return ImmutableMap.copyOf(properties); } + public SignalAnimationHandler getAnimationHandler() { + return handler; + } + @Override public @Nonnull IModelData getModelData() { - final Map states = ClientSignalStateHandler + return new ModelInfoWrapper(properties); + } + + @Override + public void requestModelDataUpdate() { + final Map newProperties = ClientSignalStateHandler .getClientStates(new StateInfo(level, worldPosition)); - return new ModelInfoWrapper(states); + handler.updateStates(newProperties, properties); + this.properties.clear(); + this.properties.putAll(newProperties); + super.requestModelDataUpdate(); } @Override @@ -94,6 +116,9 @@ public void onLoad() { if (!level.isClientSide) { SignalStateHandler.addListener(new SignalStateInfo(level, worldPosition, getSignal()), listener); + } else { + if (getSignal().hasAnimation()) + handler.updateAnimationListFromBlock(); } } diff --git a/src/main/resources/assets/opensignals/animations/railroadgate.json b/src/main/resources/assets/opensignals/animations/railroadgate.json new file mode 100644 index 000000000..a27a19bbd --- /dev/null +++ b/src/main/resources/assets/opensignals/animations/railroadgate.json @@ -0,0 +1,180 @@ +{ + "animations": { + "railroad_gate/barrier_base_top": { + "translationX": 0.5, + "translationY": 1.1875, + "translationZ": 0, + "pivotX": -0.5, + "pivotY": -0.1875, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(BARRIER_OPEN.FALSE)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(BARRIER_OPEN.TRUE)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 90 + } + ] + }, + "railroad_gate/barrier_1": { + "translationX": 0.5, + "translationY": 1.1875, + "translationZ": 0, + "pivotX": 0.5, + "pivotY": -0.1875, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(BARRIER_OPEN.FALSE)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(BARRIER_OPEN.TRUE)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 90 + } + ] + }, + "railroad_gate/barrier_2": { + "translationX": 0.5, + "translationY": 1.1875, + "translationZ": 0, + "pivotX": 1.5, + "pivotY": -0.1875, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(BARRIER_OPEN.FALSE) && (with(BARRIER_LENGTH.L1) || with(BARRIER_LENGTH.L2) || with(BARRIER_LENGTH.L3) || with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(BARRIER_OPEN.TRUE) && (with(BARRIER_LENGTH.L1) || with(BARRIER_LENGTH.L2) || with(BARRIER_LENGTH.L3) || with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 90 + } + ] + }, + "railroad_gate/barrier_3": { + "translationX": 0.5, + "translationY": 1.1875, + "translationZ": 0, + "pivotX": 2.5, + "pivotY": -0.1875, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(BARRIER_OPEN.FALSE) && (with(BARRIER_LENGTH.L2) || with(BARRIER_LENGTH.L3) || with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(BARRIER_OPEN.TRUE) && (with(BARRIER_LENGTH.L2) || with(BARRIER_LENGTH.L3) || with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 90 + } + ] + }, + "railroad_gate/barrier_4": { + "translationX": 0.5, + "translationY": 1.1875, + "translationZ": 0, + "pivotX": 3.5, + "pivotY": -0.1875, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(BARRIER_OPEN.FALSE) && (with(BARRIER_LENGTH.L3) || with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(BARRIER_OPEN.TRUE) && (with(BARRIER_LENGTH.L3) || with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 90 + } + ] + }, + "railroad_gate/barrier_5": { + "translationX": 0.5, + "translationY": 1.1875, + "translationZ": 0, + "pivotX": 4.5, + "pivotY": -0.1875, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(BARRIER_OPEN.FALSE) && (with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(BARRIER_OPEN.TRUE) && (with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 90 + } + ] + }, + "railroad_gate/barrier_6": { + "translationX": 0.5, + "translationY": 1.1875, + "translationZ": 0, + "pivotX": 5.5, + "pivotY": -0.1875, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(BARRIER_OPEN.FALSE) && (with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(BARRIER_OPEN.TRUE) && (with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 90 + } + ] + }, + "railroad_gate/barrier_7": { + "translationX": 0.5, + "translationY": 1.1875, + "translationZ": 0, + "pivotX": 6.5, + "pivotY": -0.1875, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(BARRIER_OPEN.FALSE) && with(BARRIER_LENGTH.L6)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(BARRIER_OPEN.TRUE) && with(BARRIER_LENGTH.L6)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 90 + } + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/animations/semaphoresignal.json b/src/main/resources/assets/opensignals/animations/semaphoresignal.json new file mode 100644 index 000000000..9ba77f465 --- /dev/null +++ b/src/main/resources/assets/opensignals/animations/semaphoresignal.json @@ -0,0 +1,270 @@ +{ + "animations": { + "semaphore_signals/sema_main_wing1": { + "translationX": 0.6875, + "translationY": 7.5625, + "translationZ": 0, + "pivotX": -0.6875, + "pivotY": -0.5625, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(WING1.FALSE) && with(SEMATYPE.MAIN)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(WING1.TRUE) && with(SEMATYPE.MAIN)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": -45 + } + ] + }, + "semaphore_signals/sema_main_wing1_lamp": { + "translationX": 0.6875, + "translationY": 7.5625, + "translationZ": 0, + "pivotX": -0.6875, + "pivotY": -0.5625, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(WING1.FALSE) && with(SEMATYPE.MAIN)", + "mode": "ROTATION", + "rotationAxis": "Z", + "animationSpeed": 0.5, + "rotation": 0 + }, + { + "predicate": "with(WING1.TRUE) && with(SEMATYPE.MAIN)", + "mode": "ROTATION", + "rotationAxis": "Z", + "animationSpeed": 0.5, + "rotation": -25 + } + ] + }, + "semaphore_signals/sema_main_wing2": { + "translationX": 0.6875, + "translationY": 5.5625, + "translationZ": 0, + "pivotX": -0.6875, + "pivotY": -0.5625, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(WING2.FALSE) && with(SEMATYPE.MAIN)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(WING2.TRUE) && with(SEMATYPE.MAIN)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 45 + } + ] + }, + "semaphore_signals/sema_main_wing2_lamp": { + "translationX": 0.6875, + "translationY": 5.5625, + "translationZ": 0, + "pivotX": -0.6875, + "pivotY": -0.5625, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(WING2.FALSE) && with(SEMATYPE.MAIN)", + "mode": "ROTATION", + "rotationAxis": "Z", + "animationSpeed": 0.5, + "rotation": 0 + }, + { + "predicate": "with(WING2.TRUE) && with(SEMATYPE.MAIN)", + "mode": "ROTATION", + "rotationAxis": "Z", + "animationSpeed": 0.5, + "rotation": -25 + } + ] + }, + "semaphore_signals/sema_main_wing1_small": { + "translationX": 0.6875, + "translationY": 4.5625, + "translationZ": 0, + "pivotX": -0.6875, + "pivotY": -0.5625, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "!hasandis(WING1) && with(SEMATYPE.MAIN_SMALL)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "hasandis(WING1) && with(SEMATYPE.MAIN_SMALL)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": -45 + } + ] + }, + "semaphore_signals/sema_main_wing1_small_lamp": { + "translationX": 0.6875, + "translationY": 4.5625, + "translationZ": 0, + "pivotX": -0.6875, + "pivotY": -0.5625, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "!hasandis(WING1) && with(SEMATYPE.MAIN_SMALL)", + "mode": "ROTATION", + "rotationAxis": "Z", + "animationSpeed": 0.5, + "rotation": 0 + }, + { + "predicate": "hasandis(WING1) && with(SEMATYPE.MAIN_SMALL)", + "mode": "ROTATION", + "rotationAxis": "Z", + "animationSpeed": 0.5, + "rotation": -25 + } + ] + }, + "semaphore_signals/sema_main_wing2_small": { + "translationX": 0.6875, + "translationY": 2.5625, + "translationZ": 0, + "pivotX": -0.6875, + "pivotY": -0.5625, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "!hasandis(WING2) && with(SEMATYPE.MAIN_SMALL)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "hasandis(WING2) && with(SEMATYPE.MAIN_SMALL)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 45 + } + ] + }, + "semaphore_signals/sema_main_wing2_small_lamp": { + "translationX": 0.6875, + "translationY": 2.5625, + "translationZ": 0, + "pivotX": -0.6875, + "pivotY": -0.5625, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "!hasandis(WING2) && with(SEMATYPE.MAIN_SMALL)", + "mode": "ROTATION", + "rotationAxis": "Z", + "animationSpeed": 0.5, + "rotation": 0 + }, + { + "predicate": "hasandis(WING2) && with(SEMATYPE.MAIN_SMALL)", + "mode": "ROTATION", + "rotationAxis": "Z", + "animationSpeed": 0.5, + "rotation": -25 + } + ] + }, + "semaphore_signals/sema_distant_plate": { + "translationX": 0, + "translationY": 3.875, + "translationZ": 0.59375, + "pivotX": 0, + "pivotY": 0.125, + "pivotZ": -0.59375, + "animationConfigs": [ + { + "predicate": "with(SEMATYPE.DIST) && !with(SEMAVR.VR1)", + "mode": "ROTATION", + "rotationAxis": "X", + "rotation": 0 + }, + { + "predicate": "with(SEMATYPE.DIST) && with(SEMAVR.VR1)", + "mode": "ROTATION", + "rotationAxis": "X", + "rotation": 90 + } + ] + }, + "semaphore_signals/sema_distant_arrow": { + "translationX": 0.5, + "translationY": 2.5, + "translationZ": 0, + "pivotX": -0.5, + "pivotY": -0.5, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(SEMATYPE.DIST) && !with(SEMAVR.VR2)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(SEMATYPE.DIST) && with(SEMAVR.VR2)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": -45 + } + ] + }, + "semaphore_signals/sema_distant_lamp1": { + "translationX": 0, + "translationY": 2, + "translationZ": 0, + "animationConfigs": [ + { + "predicate": "with(SEMATYPE.DIST) && (with(SEMAVR.VR0) || with(SEMAVR.VR2))", + "mode": "TRANSLATION", + "animationSpeed": 0.25, + "destY": 0 + }, + { + "predicate": "with(SEMATYPE.DIST) && with(SEMAVR.VR1)", + "mode": "TRANSLATION", + "animationSpeed": 0.25, + "destY": -0.25 + } + ] + }, + "semaphore_signals/sema_distant_lamp2": { + "translationX": 0, + "translationY": 2, + "translationZ": 0, + "animationConfigs": [ + { + "predicate": "with(SEMATYPE.DIST) && with(SEMAVR.VR0)", + "mode": "TRANSLATION", + "animationSpeed": 0.25, + "destY": 0 + }, + { + "predicate": "with(SEMATYPE.DIST) && (with(SEMAVR.VR1) || with(SEMAVR.VR2))", + "mode": "TRANSLATION", + "animationSpeed": 0.25, + "destY": 0.25 + } + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/animations/shmech.json b/src/main/resources/assets/opensignals/animations/shmech.json new file mode 100644 index 000000000..e61b838aa --- /dev/null +++ b/src/main/resources/assets/opensignals/animations/shmech.json @@ -0,0 +1,60 @@ +{ + "animations": { + "sh/sh_mech_sh": { + "translationX": 0.5, + "translationY": 0.4375, + "translationZ": 0, + "pivotX": -0.5, + "pivotY": -0.4375, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(SH_MECH.SH0) && hasandisnot(sh_high)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(SH_MECH.SH1) && hasandisnot(sh_high)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": -45 + }, + { + "predicate": "with(SH_MECH.SH1_GSP2) && hasandisnot(sh_high)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": -90 + } + ] + }, + "sh/sh_mech_sh_high": { + "translationX": 0.5, + "translationY": 2.4375, + "translationZ": 0, + "pivotX": -0.5, + "pivotY": -0.4375, + "pivotZ": 0, + "animationConfigs": [ + { + "predicate": "with(SH_MECH.SH0) && hasandis(sh_high)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": 0 + }, + { + "predicate": "with(SH_MECH.SH1) && hasandis(sh_high)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": -45 + }, + { + "predicate": "with(SH_MECH.SH1_GSP2) && hasandis(sh_high)", + "mode": "ROTATION", + "rotationAxis": "Z", + "rotation": -90 + } + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/modeldefinitions/railroadgate.json b/src/main/resources/assets/opensignals/modeldefinitions/railroadgate.json index 2192f0289..4e500cffb 100644 --- a/src/main/resources/assets/opensignals/modeldefinitions/railroadgate.json +++ b/src/main/resources/assets/opensignals/modeldefinitions/railroadgate.json @@ -6,96 +6,6 @@ {} ], "y": 0 - }, - "railroad_gate/barrier_base_top": { - "textures": [ - { - "blockstate": "hasandisnot(BARRIER_OPEN)" - } - ], - "y": 1 - }, - "railroad_gate/barrier_base_top_open": { - "textures": [ - { - "blockstate": "hasandis(BARRIER_OPEN)" - } - ], - "y": 1 - }, - "railroad_gate/barrier_1": { - "textures": [ - { - "blockstate": "hasandisnot(BARRIER_OPEN)" - } - ], - "y": 1, - "x": 1 - }, - "railroad_gate/barrier_2": { - "textures": [ - { - "blockstate": "hasandisnot(BARRIER_OPEN) && (with(BARRIER_LENGTH.L1) || with(BARRIER_LENGTH.L2) || with(BARRIER_LENGTH.L3) || with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))" - }, - { - "blockstate": "hasandisnot(BARRIER_OPEN) && (with(BARRIER_LENGTH.L2) || with(BARRIER_LENGTH.L3) || with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", - "x": 1 - }, - { - "blockstate": "hasandisnot(BARRIER_OPEN) && (with(BARRIER_LENGTH.L3) || with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", - "x": 2 - }, - { - "blockstate": "hasandisnot(BARRIER_OPEN) && (with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", - "x": 3 - }, - { - "blockstate": "hasandisnot(BARRIER_OPEN) && (with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", - "x": 4 - }, - { - "blockstate": "hasandisnot(BARRIER_OPEN) && with(BARRIER_LENGTH.L6)", - "x": 5 - } - ], - "y": 1, - "x": 2 - }, - "railroad_gate/barrier_1_open": { - "textures": [ - { - "blockstate": "hasandis(BARRIER_OPEN)" - } - ], - "y": 2 - }, - "railroad_gate/barrier_2_open": { - "textures": [ - { - "blockstate": "hasandis(BARRIER_OPEN) && (with(BARRIER_LENGTH.L1) || with(BARRIER_LENGTH.L2) || with(BARRIER_LENGTH.L3) || with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))" - }, - { - "blockstate": "hasandis(BARRIER_OPEN) && (with(BARRIER_LENGTH.L2) || with(BARRIER_LENGTH.L3) || with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", - "y": 1 - }, - { - "blockstate": "hasandis(BARRIER_OPEN) && (with(BARRIER_LENGTH.L3) || with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", - "y": 2 - }, - { - "blockstate": "hasandis(BARRIER_OPEN) && (with(BARRIER_LENGTH.L4) || with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", - "y": 3 - }, - { - "blockstate": "hasandis(BARRIER_OPEN) && (with(BARRIER_LENGTH.L5) || with(BARRIER_LENGTH.L6))", - "y": 4 - }, - { - "blockstate": "hasandis(BARRIER_OPEN) && with(BARRIER_LENGTH.L6)", - "y": 5 - } - ], - "y": 3 } } } \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/modeldefinitions/semaphoresignal.json b/src/main/resources/assets/opensignals/modeldefinitions/semaphoresignal.json index 33a9c4057..5d7f136b9 100644 --- a/src/main/resources/assets/opensignals/modeldefinitions/semaphoresignal.json +++ b/src/main/resources/assets/opensignals/modeldefinitions/semaphoresignal.json @@ -1,9 +1,10 @@ { "textures": { - "lamp_green": "opensignals:blocks/lamps/lamp_green", "lamp_white": "opensignals:blocks/lamps/lamp_white", - "lamp_red": "opensignals:blocks/lamps/lamp_red", - "lamp_yellow": "opensignals:blocks/lamps/lamp_yellow" + "lamp_yellow": "opensignals:blocks/lamps/lamp_yellow", + "lamp_red_shield": "opensignals:blocks/semaphore/lamp_red", + "lamp_green_shield": "opensignals:blocks/semaphore/lamp_green", + "lamp_yellow_shield": "opensignals:blocks/semaphore/lamp_yellow" }, "models": { "semaphore_signals/sema_main_base": { @@ -65,7 +66,13 @@ "semaphore_signals/sema_mainsmall_mast2_hp2": { "textures": [ { - "blockstate": "with(SEMATYPE.MAIN_SMALL) && hasandis(HP2)" + "blockstate": "with(SEMATYPE.MAIN_SMALL) && hasandis(HP2) && with(WING2.FALSE)" + }, + { + "blockstate": "with(SEMATYPE.MAIN_SMALL) && hasandis(HP2) && with(WING2.TRUE)", + "retexture": { + "lamp": "lamp_yellow_shield" + } } ], "y": 2 @@ -105,7 +112,13 @@ "semaphore_signals/sema_mainsmall_mast4": { "textures": [ { - "blockstate": "with(SEMATYPE.MAIN_SMALL)" + "blockstate": "with(SEMATYPE.MAIN_SMALL) && with(WING1.FALSE)" + }, + { + "blockstate": "with(SEMATYPE.MAIN_SMALL) && with(WING1.TRUE)", + "retexture": { + "lamp": "lamp_green_shield" + } } ], "y": 4 @@ -121,7 +134,13 @@ "semaphore_signals/sema_main_mast5_hp2": { "textures": [ { - "blockstate": "with(SEMATYPE.MAIN) && hasandis(HP2)" + "blockstate": "with(SEMATYPE.MAIN) && hasandis(HP2) && with(WING2.FALSE)" + }, + { + "blockstate": "with(SEMATYPE.MAIN) && hasandis(HP2) && with(WING2.TRUE)", + "retexture": { + "lamp": "lamp_yellow_shield" + } } ], "y": 5 @@ -137,7 +156,13 @@ "semaphore_signals/sema_main_mast7": { "textures": [ { - "blockstate": "with(SEMATYPE.MAIN)" + "blockstate": "with(SEMATYPE.MAIN) && with(WING1.FALSE)" + }, + { + "blockstate": "with(SEMATYPE.MAIN) && with(WING1.TRUE)", + "retexture": { + "lamp": "lamp_green_shield" + } } ], "y": 7 @@ -326,54 +351,6 @@ "y": 0, "x": -1 }, - "semaphore_signals/sema_main_wing1": { - "textures": [ - { - "blockstate": "with(SEMATYPE.MAIN) && hasandisnot(WING1)" - }, - { - "blockstate": "with(SEMATYPE.MAIN_SMALL) && hasandisnot(WING1)", - "y": -3 - } - ], - "y": 7 - }, - "semaphore_signals/sema_main_wing1_on": { - "textures": [ - { - "blockstate": "with(SEMATYPE.MAIN) && hasandis(WING1)" - }, - { - "blockstate": "with(SEMATYPE.MAIN_SMALL) && hasandis(WING1)", - "y": -3 - } - ], - "y": 7 - }, - "semaphore_signals/sema_main_wing2": { - "textures": [ - { - "blockstate": "with(SEMATYPE.MAIN) && hasandis(HP2) && hasandisnot(WING2)" - }, - { - "blockstate": "with(SEMATYPE.MAIN_SMALL) && hasandis(HP2) && hasandisnot(WING2)", - "y": -3 - } - ], - "y": 5 - }, - "semaphore_signals/sema_main_wing2_on": { - "textures": [ - { - "blockstate": "with(SEMATYPE.MAIN) && hasandis(HP2) && hasandis(WING2)" - }, - { - "blockstate": "with(SEMATYPE.MAIN_SMALL) && hasandis(HP2) && hasandis(WING2)", - "y": -3 - } - ], - "y": 5 - }, "semaphore_signals/sema_distant_base": { "textures": [ { @@ -402,7 +379,20 @@ "semaphore_signals/sema_distant_mast2": { "textures": [ { - "blockstate": "with(SEMATYPE.DIST)" + "blockstate": "with(SEMATYPE.DIST) && with(SEMAVR.VR0)" + }, + { + "blockstate": "with(SEMATYPE.DIST) && with(SEMAVR.VR1)", + "retexture": { + "lamp1": "lamp_green_shield", + "lamp2": "lamp_green_shield" + } + }, + { + "blockstate": "with(SEMATYPE.DIST) && with(SEMAVR.VR2)", + "retexture": { + "lamp2": "lamp_green_shield" + } } ], "y": 2 @@ -415,46 +405,6 @@ ], "y": 3 }, - "semaphore_signals/sema_distant_plate_off": { - "textures": [ - { - "blockstate": "with(SEMATYPE.DIST) && with(SEMAVR.VR1)" - } - ], - "y": 4 - }, - "semaphore_signals/sema_distant_plate_on": { - "textures": [ - { - "blockstate": "with(SEMATYPE.DIST) && !with(SEMAVR.VR1)" - } - ], - "y": 4 - }, - "semaphore_signals/sema_distant_vr0": { - "textures": [ - { - "blockstate": "with(SEMATYPE.DIST) && with(SEMAVR.VR0)" - } - ], - "y": 2 - }, - "semaphore_signals/sema_distant_vr1": { - "textures": [ - { - "blockstate": "with(SEMATYPE.DIST) && with(SEMAVR.VR1)" - } - ], - "y": 2 - }, - "semaphore_signals/sema_distant_vr2": { - "textures": [ - { - "blockstate": "with(SEMATYPE.DIST) && with(SEMAVR.VR2)" - } - ], - "y": 2 - }, "semaphore_signals/sema_distant_ne2_2": { "textures": [ { diff --git a/src/main/resources/assets/opensignals/modeldefinitions/shmech.json b/src/main/resources/assets/opensignals/modeldefinitions/shmech.json index 8e1ec656b..e6034f918 100644 --- a/src/main/resources/assets/opensignals/modeldefinitions/shmech.json +++ b/src/main/resources/assets/opensignals/modeldefinitions/shmech.json @@ -13,49 +13,25 @@ ], "y": 0 }, - "sh/sh0_mech": { - "textures": [ - { - "blockstate": "with(SH_MECH.SH0) && hasandisnot(sh_high)" - }, - { - "blockstate": "with(SH_MECH.SH0) && hasandis(sh_high)", - "y": 2 - } - ], - "y": 0 - }, - "sh/sh1_mech": { - "textures": [ - { - "blockstate": "with(SH_MECH.SH1) && hasandisnot(sh_high)" - }, - { - "blockstate": "with(SH_MECH.SH1) && hasandis(sh_high)", - "y": 2 - } - ], - "y": 0 - }, - "sh/sh1_gsp2_mech": { + "sh/sh_mech_number": { "textures": [ { - "blockstate": "with(SH_MECH.SH1_GSP2) && hasandisnot(sh_high)" + "blockstate": "hasandis(CUSTOMNAME) && hasandisnot(sh_high)" }, { - "blockstate": "with(SH_MECH.SH1_GSP2) && hasandis(sh_high)", + "blockstate": "hasandis(CUSTOMNAME) && hasandis(sh_high)", "y": 2 } ], "y": 0 }, - "sh/sh_mech_number": { + "sh/sh_mech": { "textures": [ { - "blockstate": "hasandis(CUSTOMNAME) && hasandisnot(sh_high)" + "blockstate": "hasandisnot(sh_high)" }, { - "blockstate": "hasandis(CUSTOMNAME) && hasandis(sh_high)", + "blockstate": "hasandis(sh_high)", "y": 2 } ], diff --git a/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_3.json b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_3.json new file mode 100644 index 000000000..d1686e055 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_3.json @@ -0,0 +1 @@ +{"credit": "Made with Blockbench by Mc_Jeronimo", "textures": {"0": "opensignals:blocks/railroad_gate/white_red", "particle": "opensignals:blocks/railroad_gate/white_red"}, "elements": [{"from": [0, 1, 7], "to": [16, 5, 9], "faces": {"north": {"uv": [16, 0, 0, 4], "texture": "#0"}, "east": {"uv": [14, 0, 16, 4], "texture": "#0"}, "south": {"uv": [0, 0, 16, 4], "texture": "#0"}, "up": {"uv": [0, 0, 16, 2], "texture": "#0"}, "down": {"uv": [0, 0, 16, 2], "texture": "#0"}}}, {"from": [0, 2, 6], "to": [16, 4, 7], "faces": {"north": {"uv": [16, 0, 0, 2], "texture": "#0"}, "east": {"uv": [15, 0, 16, 2], "texture": "#0"}, "up": {"uv": [0, 0, 16, 1], "texture": "#0"}, "down": {"uv": [0, 0, 16, 1], "texture": "#0"}}}, {"from": [0, 2, 9], "to": [16, 4, 10], "faces": {"east": {"uv": [15, 0, 16, 2], "texture": "#0"}, "south": {"uv": [0, 0, 16, 2], "texture": "#0"}, "up": {"uv": [0, 0, 16, 1], "texture": "#0"}, "down": {"uv": [0, 0, 16, 1], "texture": "#0"}}}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_4.json b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_4.json new file mode 100644 index 000000000..d1686e055 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_4.json @@ -0,0 +1 @@ +{"credit": "Made with Blockbench by Mc_Jeronimo", "textures": {"0": "opensignals:blocks/railroad_gate/white_red", "particle": "opensignals:blocks/railroad_gate/white_red"}, "elements": [{"from": [0, 1, 7], "to": [16, 5, 9], "faces": {"north": {"uv": [16, 0, 0, 4], "texture": "#0"}, "east": {"uv": [14, 0, 16, 4], "texture": "#0"}, "south": {"uv": [0, 0, 16, 4], "texture": "#0"}, "up": {"uv": [0, 0, 16, 2], "texture": "#0"}, "down": {"uv": [0, 0, 16, 2], "texture": "#0"}}}, {"from": [0, 2, 6], "to": [16, 4, 7], "faces": {"north": {"uv": [16, 0, 0, 2], "texture": "#0"}, "east": {"uv": [15, 0, 16, 2], "texture": "#0"}, "up": {"uv": [0, 0, 16, 1], "texture": "#0"}, "down": {"uv": [0, 0, 16, 1], "texture": "#0"}}}, {"from": [0, 2, 9], "to": [16, 4, 10], "faces": {"east": {"uv": [15, 0, 16, 2], "texture": "#0"}, "south": {"uv": [0, 0, 16, 2], "texture": "#0"}, "up": {"uv": [0, 0, 16, 1], "texture": "#0"}, "down": {"uv": [0, 0, 16, 1], "texture": "#0"}}}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_5.json b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_5.json new file mode 100644 index 000000000..d1686e055 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_5.json @@ -0,0 +1 @@ +{"credit": "Made with Blockbench by Mc_Jeronimo", "textures": {"0": "opensignals:blocks/railroad_gate/white_red", "particle": "opensignals:blocks/railroad_gate/white_red"}, "elements": [{"from": [0, 1, 7], "to": [16, 5, 9], "faces": {"north": {"uv": [16, 0, 0, 4], "texture": "#0"}, "east": {"uv": [14, 0, 16, 4], "texture": "#0"}, "south": {"uv": [0, 0, 16, 4], "texture": "#0"}, "up": {"uv": [0, 0, 16, 2], "texture": "#0"}, "down": {"uv": [0, 0, 16, 2], "texture": "#0"}}}, {"from": [0, 2, 6], "to": [16, 4, 7], "faces": {"north": {"uv": [16, 0, 0, 2], "texture": "#0"}, "east": {"uv": [15, 0, 16, 2], "texture": "#0"}, "up": {"uv": [0, 0, 16, 1], "texture": "#0"}, "down": {"uv": [0, 0, 16, 1], "texture": "#0"}}}, {"from": [0, 2, 9], "to": [16, 4, 10], "faces": {"east": {"uv": [15, 0, 16, 2], "texture": "#0"}, "south": {"uv": [0, 0, 16, 2], "texture": "#0"}, "up": {"uv": [0, 0, 16, 1], "texture": "#0"}, "down": {"uv": [0, 0, 16, 1], "texture": "#0"}}}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_6.json b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_6.json new file mode 100644 index 000000000..d1686e055 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_6.json @@ -0,0 +1 @@ +{"credit": "Made with Blockbench by Mc_Jeronimo", "textures": {"0": "opensignals:blocks/railroad_gate/white_red", "particle": "opensignals:blocks/railroad_gate/white_red"}, "elements": [{"from": [0, 1, 7], "to": [16, 5, 9], "faces": {"north": {"uv": [16, 0, 0, 4], "texture": "#0"}, "east": {"uv": [14, 0, 16, 4], "texture": "#0"}, "south": {"uv": [0, 0, 16, 4], "texture": "#0"}, "up": {"uv": [0, 0, 16, 2], "texture": "#0"}, "down": {"uv": [0, 0, 16, 2], "texture": "#0"}}}, {"from": [0, 2, 6], "to": [16, 4, 7], "faces": {"north": {"uv": [16, 0, 0, 2], "texture": "#0"}, "east": {"uv": [15, 0, 16, 2], "texture": "#0"}, "up": {"uv": [0, 0, 16, 1], "texture": "#0"}, "down": {"uv": [0, 0, 16, 1], "texture": "#0"}}}, {"from": [0, 2, 9], "to": [16, 4, 10], "faces": {"east": {"uv": [15, 0, 16, 2], "texture": "#0"}, "south": {"uv": [0, 0, 16, 2], "texture": "#0"}, "up": {"uv": [0, 0, 16, 1], "texture": "#0"}, "down": {"uv": [0, 0, 16, 1], "texture": "#0"}}}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_7.json b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_7.json new file mode 100644 index 000000000..d1686e055 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_7.json @@ -0,0 +1 @@ +{"credit": "Made with Blockbench by Mc_Jeronimo", "textures": {"0": "opensignals:blocks/railroad_gate/white_red", "particle": "opensignals:blocks/railroad_gate/white_red"}, "elements": [{"from": [0, 1, 7], "to": [16, 5, 9], "faces": {"north": {"uv": [16, 0, 0, 4], "texture": "#0"}, "east": {"uv": [14, 0, 16, 4], "texture": "#0"}, "south": {"uv": [0, 0, 16, 4], "texture": "#0"}, "up": {"uv": [0, 0, 16, 2], "texture": "#0"}, "down": {"uv": [0, 0, 16, 2], "texture": "#0"}}}, {"from": [0, 2, 6], "to": [16, 4, 7], "faces": {"north": {"uv": [16, 0, 0, 2], "texture": "#0"}, "east": {"uv": [15, 0, 16, 2], "texture": "#0"}, "up": {"uv": [0, 0, 16, 1], "texture": "#0"}, "down": {"uv": [0, 0, 16, 1], "texture": "#0"}}}, {"from": [0, 2, 9], "to": [16, 4, 10], "faces": {"east": {"uv": [15, 0, 16, 2], "texture": "#0"}, "south": {"uv": [0, 0, 16, 2], "texture": "#0"}, "up": {"uv": [0, 0, 16, 1], "texture": "#0"}, "down": {"uv": [0, 0, 16, 1], "texture": "#0"}}}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_base.json b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_base.json index 1e77cc3cc..7d0654bac 100644 --- a/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_base.json +++ b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_base.json @@ -1 +1,33 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"0": "opensignals:blocks/default/controlbox", "particle": "opensignals:blocks/default/controlbox"}, "elements": [{"from": [3, 0, 5], "to": [13, 16, 11], "faces": {"north": {"uv": [0, 0, 5, 8], "texture": "#0"}, "east": {"uv": [0, 0, 3, 8], "texture": "#0"}, "south": {"uv": [0, 0, 5, 8], "texture": "#0"}, "west": {"uv": [0, 0, 3, 8], "texture": "#0"}, "down": {"uv": [0, 0, 5, 3], "texture": "#0"}}}]} \ No newline at end of file +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "0": "opensignals:blocks/default/controlbox", + "particle": "opensignals:blocks/default/controlbox" + }, + "elements": [ + { + "from": [3, 0, 5], + "to": [13, 16, 11], + "faces": { + "north": {"uv": [0, 0, 5, 8], "texture": "#0"}, + "east": {"uv": [0, 0, 3, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 5, 8], "texture": "#0"}, + "west": {"uv": [0, 0, 3, 8], "texture": "#0"}, + "down": {"uv": [0, 0, 5, 3], "texture": "#0"} + } + }, + { + "from": [3, 16, 5], + "to": [13, 22, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 16, 0]}, + "faces": { + "north": {"uv": [0, 0, 5, 8], "texture": "#0"}, + "east": {"uv": [0, 0, 3, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 5, 8], "texture": "#0"}, + "west": {"uv": [0, 0, 3, 8], "texture": "#0"}, + "up": {"uv": [0, 0, 5, 3], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_base_top.json b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_base_top.json index dbb03be13..5e4bd9433 100644 --- a/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_base_top.json +++ b/src/main/resources/assets/opensignals/models/block/railroad_gate/barrier_base_top.json @@ -1 +1,100 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"0": "opensignals:blocks/default/controlbox", "1": "opensignals:blocks/default/shield_black", "2": "opensignals:blocks/default/shield_gray", "particle": "opensignals:blocks/default/controlbox"}, "elements": [{"from": [3, 0, 5], "to": [13, 6, 11], "faces": {"north": {"uv": [0, 0, 5, 8], "texture": "#0"}, "east": {"uv": [0, 0, 3, 8], "texture": "#0"}, "south": {"uv": [0, 0, 5, 8], "texture": "#0"}, "west": {"uv": [0, 0, 3, 8], "texture": "#0"}, "up": {"uv": [0, 0, 5, 3], "texture": "#0"}}}, {"from": [17, 1, 6], "to": [18, 5, 10], "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, "faces": {"north": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, "east": {"uv": [0, 0, 2, 2], "texture": "#1"}, "south": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, "west": {"uv": [0, 0, 2, 2], "texture": "#1"}, "up": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, "down": {"uv": [0, 0, 0.5, 2], "texture": "#1"}}}, {"from": [15, 1, 5], "to": [17, 5, 6], "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, "faces": {"north": {"uv": [0, 0, 1, 2], "texture": "#1"}, "east": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, "south": {"uv": [0, 0, 1, 2], "texture": "#1"}, "west": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, "up": {"uv": [0, 0, 1, 0.5], "texture": "#1"}, "down": {"uv": [0, 0, 1, 0.5], "texture": "#1"}}}, {"from": [6, 1, 4], "to": [15, 5, 5], "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, "faces": {"north": {"uv": [0, 0, 4.5, 2], "texture": "#1"}, "east": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, "south": {"uv": [0, 0, 4.5, 2], "texture": "#1"}, "up": {"uv": [0, 0, 4.5, 0.5], "texture": "#1"}, "down": {"uv": [0, 0, 4.5, 0.5], "texture": "#1"}}}, {"from": [-3, 1, 2], "to": [6, 5, 5], "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, "faces": {"north": {"uv": [0, 0, 4.5, 2], "texture": "#2"}, "east": {"uv": [0, 0, 1.5, 2], "texture": "#2"}, "south": {"uv": [0, 0, 4.5, 2], "texture": "#2"}, "west": {"uv": [0, 0, 1.5, 2], "texture": "#2"}, "up": {"uv": [0, 0, 4.5, 1.5], "texture": "#2"}, "down": {"uv": [0, 0, 4.5, 1.5], "texture": "#2"}}}, {"from": [-3, 1, 11], "to": [6, 5, 14], "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, "faces": {"north": {"uv": [0, 0, 4.5, 2], "texture": "#2"}, "east": {"uv": [0, 0, 1.5, 2], "texture": "#2"}, "south": {"uv": [0, 0, 4.5, 2], "texture": "#2"}, "west": {"uv": [0, 0, 1.5, 2], "texture": "#2"}, "up": {"uv": [0, 0, 4.5, 1.5], "texture": "#2"}, "down": {"uv": [0, 0, 4.5, 1.5], "texture": "#2"}}}, {"from": [6, 1, 11], "to": [15, 5, 12], "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, "faces": {"north": {"uv": [0, 0, 4.5, 2], "texture": "#1"}, "east": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, "south": {"uv": [0, 0, 4.5, 2], "texture": "#1"}, "up": {"uv": [0, 0, 4.5, 0.5], "texture": "#1"}, "down": {"uv": [0, 0, 4.5, 0.5], "texture": "#1"}}}, {"from": [15, 1, 10], "to": [17, 5, 11], "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, "faces": {"north": {"uv": [0, 0, 1, 2], "texture": "#1"}, "east": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, "south": {"uv": [0, 0, 1, 2], "texture": "#1"}, "west": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, "up": {"uv": [0, 0, 1, 0.5], "texture": "#1"}, "down": {"uv": [0, 0, 1, 0.5], "texture": "#1"}}}]} \ No newline at end of file +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "1": "opensignals:blocks/default/shield_black", + "2": "opensignals:blocks/default/shield_gray", + "particle": "opensignals:blocks/default/shield_black" + }, + "elements": [ + { + "from": [17, 1, 6], + "to": [18, 5, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 2], "texture": "#1"} + } + }, + { + "from": [15, 1, 5], + "to": [17, 5, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 2], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 2], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 0.5], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 0.5], "texture": "#1"} + } + }, + { + "from": [6, 1, 4], + "to": [15, 5, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, + "faces": { + "north": {"uv": [0, 0, 4.5, 2], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, + "south": {"uv": [0, 0, 4.5, 2], "texture": "#1"}, + "up": {"uv": [0, 0, 4.5, 0.5], "texture": "#1"}, + "down": {"uv": [0, 0, 4.5, 0.5], "texture": "#1"} + } + }, + { + "from": [-3, 1, 2], + "to": [6, 5, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, + "faces": { + "north": {"uv": [0, 0, 4.5, 2], "texture": "#2"}, + "east": {"uv": [0, 0, 1.5, 2], "texture": "#2"}, + "south": {"uv": [0, 0, 4.5, 2], "texture": "#2"}, + "west": {"uv": [0, 0, 1.5, 2], "texture": "#2"}, + "up": {"uv": [0, 0, 4.5, 1.5], "texture": "#2"}, + "down": {"uv": [0, 0, 4.5, 1.5], "texture": "#2"} + } + }, + { + "from": [-3, 1, 11], + "to": [6, 5, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, + "faces": { + "north": {"uv": [0, 0, 4.5, 2], "texture": "#2"}, + "east": {"uv": [0, 0, 1.5, 2], "texture": "#2"}, + "south": {"uv": [0, 0, 4.5, 2], "texture": "#2"}, + "west": {"uv": [0, 0, 1.5, 2], "texture": "#2"}, + "up": {"uv": [0, 0, 4.5, 1.5], "texture": "#2"}, + "down": {"uv": [0, 0, 4.5, 1.5], "texture": "#2"} + } + }, + { + "from": [6, 1, 11], + "to": [15, 5, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, + "faces": { + "north": {"uv": [0, 0, 4.5, 2], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, + "south": {"uv": [0, 0, 4.5, 2], "texture": "#1"}, + "up": {"uv": [0, 0, 4.5, 0.5], "texture": "#1"}, + "down": {"uv": [0, 0, 4.5, 0.5], "texture": "#1"} + } + }, + { + "from": [15, 1, 10], + "to": [17, 5, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 2], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 2], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 0.5], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 0.5], "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_arrow.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_arrow.json new file mode 100644 index 000000000..b7b5ae536 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_arrow.json @@ -0,0 +1,75 @@ +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "15": "opensignals:blocks/semaphore/semaphore_distant", + "particle": "opensignals:blocks/default/shield_black" + }, + "elements": [ + { + "name": "wing", + "from": [7, -5, 5], + "to": [9, -4, 6], + "faces": { + "north": {"uv": [2, 13, 4, 13.5], "texture": "#15"}, + "east": {"uv": [0.5, 13, 1, 13.5], "texture": "#15"}, + "south": {"uv": [0, 14, 1, 14.5], "texture": "#15"}, + "west": {"uv": [5, 13, 5.5, 13.5], "texture": "#15"}, + "down": {"uv": [0, 14, 1, 14.5], "texture": "#15"} + } + }, + { + "name": "wing", + "from": [6.5, -4, 5], + "to": [9.5, -3, 6], + "faces": { + "north": {"uv": [1.5, 12.5, 4.5, 13], "texture": "#15"}, + "east": {"uv": [0.5, 13, 1, 13.5], "texture": "#15"}, + "south": {"uv": [0, 15, 1.5, 15.5], "texture": "#15"}, + "west": {"uv": [5, 13, 5.5, 13.5], "texture": "#15"}, + "down": {"uv": [0, 15, 1.5, 15.5], "texture": "#15"} + } + }, + { + "name": "wing", + "from": [6, -3, 5], + "to": [10, 22, 6], + "faces": { + "north": {"uv": [1, 0, 5, 12.5], "texture": "#15"}, + "east": {"uv": [0, 0, 0.5, 12.5], "texture": "#15"}, + "south": {"uv": [6.5, 0, 8.5, 12.5], "texture": "#15"}, + "west": {"uv": [5.5, 0, 6, 12.5], "texture": "#15"}, + "up": {"uv": [2, 14, 4, 14.5], "texture": "#15"}, + "down": {"uv": [2, 14, 4, 14.5], "texture": "#15"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Vor", + "origin": [0, 0, 0], + "color": 0, + "children": [ + { + "name": "vr2", + "origin": [0, -32, 0], + "color": 0, + "children": [0, 1, 2] + } + ] + }, + { + "name": "Formsignal_Vor", + "origin": [0, -32, 0], + "color": 0, + "children": [ + { + "name": "lamp3", + "origin": [-1, 88, -5.5], + "color": 0, + "children": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_lamp1.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_lamp1.json new file mode 100644 index 000000000..76d8fb764 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_lamp1.json @@ -0,0 +1,34 @@ +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "3": "opensignals:blocks/semaphore/lamps_shield_off", + "particle": "opensignals:blocks/default/shield_black" + }, + "elements": [ + { + "name": "shield", + "from": [10.5, 2, 6.9], + "to": [16.5, 12, 6.9], + "faces": { + "north": {"uv": [0, 0, 10, 6], "rotation": 90, "texture": "#3"}, + "south": {"uv": [0, 0, 10, 6], "rotation": 90, "texture": "#3"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Vor", + "origin": [0, -32, 0], + "color": 0, + "children": [ + { + "name": "lamp3", + "origin": [-1, 88, -5.5], + "color": 0, + "children": [0] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_lamp2.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_lamp2.json new file mode 100644 index 000000000..f08a65cbb --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_lamp2.json @@ -0,0 +1,47 @@ +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "3": "opensignals:blocks/semaphore/lamps_shield_off", + "particle": "opensignals:blocks/default/shield_black" + }, + "elements": [ + { + "name": "shield", + "from": [-0.5, 13, 6.9], + "to": [5.5, 23, 6.9], + "faces": { + "north": {"uv": [0, 0, 10, 6], "rotation": 270, "texture": "#3"}, + "south": {"uv": [0, 0, 10, 6], "rotation": 90, "texture": "#3"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Vor", + "origin": [0, 0, 0], + "color": 0, + "children": [ + { + "name": "vr2", + "origin": [0, -32, 0], + "color": 0, + "children": [] + } + ] + }, + { + "name": "Formsignal_Vor", + "origin": [0, -32, 0], + "color": 0, + "children": [ + { + "name": "lamp3", + "origin": [-1, 88, -5.5], + "color": 0, + "children": [0] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_lamps.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_lamps.json deleted file mode 100644 index 7e8860c7f..000000000 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_lamps.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"1": "opensignals:blocks/default/shield_black", "18": "opensignals:blocks/semaphore/semaphore_lamps3"}, "elements": [{"name": "shield", "from": [-0.5, 13, 6], "to": [5.5, 23, 7], "faces": {"north": {"uv": [0, 0, 10, 6], "rotation": 270, "texture": "#18"}, "east": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, "west": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "up": {"uv": [0, 0, 3, 0.5], "texture": "#1"}, "down": {"uv": [0, 0, 3, 0.5], "texture": "#1"}}}, {"name": "shield", "from": [10.5, 2, 6], "to": [16.5, 12, 7], "faces": {"north": {"uv": [0, 0, 10, 6], "rotation": 90, "texture": "#18"}, "east": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, "west": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "up": {"uv": [0, 0, 3, 0.5], "texture": "#1"}, "down": {"uv": [0, 0, 3, 0.5], "texture": "#1"}}}], "groups": [{"name": "Formsignal_Vor", "origin": [0, -32, 0], "color": 0, "children": [{"name": "lamp3", "origin": [-1, 88, -5.5], "color": 0, "children": [0, 1]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_mast2.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_mast2.json index c63058240..aa8fa4b46 100644 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_mast2.json +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_mast2.json @@ -1 +1,118 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"0": "opensignals:blocks/default/mast", "2": "opensignals:blocks/default/shield_gray"}, "elements": [{"name": "mast", "from": [7, 0, 7], "to": [9, 16, 9], "faces": {"north": {"uv": [0, 0, 1, 8], "texture": "#0"}, "east": {"uv": [0, 0, 1, 8], "texture": "#0"}, "south": {"uv": [0, 0, 1, 8], "texture": "#0"}, "west": {"uv": [0, 0, 1, 8], "texture": "#0"}, "up": {"uv": [0, 0, 1, 1], "texture": "#0"}, "down": {"uv": [0, 0, 1, 1], "texture": "#0"}}}, {"name": "wire_wing4", "from": [7.75, 0, 10.5], "to": [8.25, 16, 11], "faces": {"north": {"uv": [0, 0, 0.25, 2.5], "texture": "#2"}, "east": {"uv": [0, 0, 0.25, 2.5], "texture": "#2"}, "south": {"uv": [0, 0, 0.25, 2.5], "texture": "#2"}, "west": {"uv": [0, 0, 0.25, 2.5], "texture": "#2"}}}, {"name": "bracket1", "from": [4, 19, 7], "to": [7, 21, 9], "faces": {"north": {"uv": [0, 0, 2, 2], "texture": "#0"}, "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, "up": {"uv": [0, 0, 2, 2], "texture": "#0"}, "down": {"uv": [0, 0, 2, 2], "texture": "#0"}}}, {"name": "lamp1", "from": [0.5, 18, 7], "to": [4.5, 22, 11], "faces": {"north": {"uv": [0, 0, 2, 2], "texture": "#0"}, "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, "up": {"uv": [0, 0, 2, 2], "texture": "#0"}, "down": {"uv": [0, 0, 2, 2], "texture": "#0"}}}, {"name": "lamp2", "from": [11.5, 3, 7], "to": [15.5, 7, 11], "faces": {"north": {"uv": [0, 0, 2, 2], "texture": "#0"}, "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, "up": {"uv": [0, 0, 2, 2], "texture": "#0"}, "down": {"uv": [0, 0, 2, 2], "texture": "#0"}}}, {"name": "bracket2", "from": [9, 4, 7], "to": [11.5, 6, 9], "faces": {"north": {"uv": [0, 0, 2, 2], "texture": "#0"}, "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, "up": {"uv": [0, 0, 2, 2], "texture": "#0"}, "down": {"uv": [0, 0, 2, 2], "texture": "#0"}}}, {"name": "bracket", "from": [7.5, 8, 4], "to": [8.5, 9, 7], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}}}], "groups": [{"name": "Formsignal_Vor", "origin": [0, -32, 0], "color": 0, "children": [{"name": "mast9", "origin": [0, -32, 0], "color": 0, "children": [0, 1, 2, 3, 4, 5, 6]}]}]} \ No newline at end of file +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "0": "opensignals:blocks/default/mast", + "2": "opensignals:blocks/default/shield_gray", + "3": "opensignals:blocks/default/shield_black", + "particle": "opensignals:blocks/semaphore/lamp_yellow", + "lamp1": "opensignals:blocks/semaphore/lamp_yellow", + "lamp2": "opensignals:blocks/semaphore/lamp_yellow" + }, + "elements": [ + { + "name": "mast", + "from": [7, 0, 7], + "to": [9, 16, 9], + "faces": { + "north": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#0"} + } + }, + { + "name": "wire_wing4", + "from": [7.75, 0, 10.5], + "to": [8.25, 16, 11], + "faces": { + "north": {"uv": [0, 0, 0.25, 2.5], "texture": "#2"}, + "east": {"uv": [0, 0, 0.25, 2.5], "texture": "#2"}, + "south": {"uv": [0, 0, 0.25, 2.5], "texture": "#2"}, + "west": {"uv": [0, 0, 0.25, 2.5], "texture": "#2"} + } + }, + { + "name": "bracket1", + "from": [4.5, 19, 7], + "to": [7, 21, 9], + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#3"} + } + }, + { + "name": "lamp1", + "from": [0.5, 18, 7], + "to": [4.5, 22, 11], + "faces": { + "north": {"uv": [0, 0, 4, 4], "texture": "#lamp1"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#3"} + } + }, + { + "name": "lamp2", + "from": [11.5, 3, 7], + "to": [15.5, 7, 11], + "faces": { + "north": {"uv": [0, 0, 4, 4], "texture": "#lamp2"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#3"} + } + }, + { + "name": "bracket2", + "from": [9, 4, 7], + "to": [11.5, 6, 9], + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#3"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#3"} + } + }, + { + "name": "bracket", + "from": [7.5, 8, 4], + "to": [8.5, 9, 7], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Vor", + "origin": [0, -32, 0], + "color": 0, + "children": [ + { + "name": "mast9", + "origin": [0, -32, 0], + "color": 0, + "children": [0, 1, 2, 3, 4, 5, 6] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_plate_on.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_plate.json similarity index 100% rename from src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_plate_on.json rename to src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_plate.json diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_plate_off.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_plate_off.json deleted file mode 100644 index fb02fb816..000000000 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_plate_off.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"1": "opensignals:blocks/default/shield_black", "15": "opensignals:blocks/semaphore/semaphore_distant"}, "elements": [{"name": "sign", "from": [5.5, 1.5, 3.5], "to": [10.5, 2.5, 4.5], "rotation": {"angle": 0, "axis": "x", "origin": [8, -1.5, 9]}, "faces": {"north": {"uv": [11, 7, 13.5, 7.5], "rotation": 180, "texture": "#15"}, "east": {"uv": [0, 0, 0.5, 0.5], "rotation": 270, "texture": "#15"}, "west": {"uv": [0, 0, 0.5, 0.5], "rotation": 90, "texture": "#15"}, "up": {"uv": [11, 7, 13.5, 7.5], "rotation": 180, "texture": "#15"}, "down": {"uv": [11, 15.5, 13.5, 16], "texture": "#15"}}}, {"name": "sign", "from": [3.5, 1.5, 4.5], "to": [12.5, 2.5, 5.5], "rotation": {"angle": 0, "axis": "x", "origin": [8, -1.5, 9]}, "faces": {"north": {"uv": [10, 6.5, 14.5, 7], "rotation": 180, "texture": "#15"}, "east": {"uv": [0, 0, 0.5, 0.5], "rotation": 270, "texture": "#15"}, "west": {"uv": [0, 0, 0.5, 0.5], "rotation": 90, "texture": "#15"}, "up": {"uv": [10, 6.5, 14.5, 7], "rotation": 180, "texture": "#15"}, "down": {"uv": [10, 15, 14.5, 15.5], "texture": "#15"}}}, {"name": "sign", "from": [2.5, 1.5, 5.5], "to": [13.5, 2.5, 6.5], "rotation": {"angle": 0, "axis": "x", "origin": [8, -1.5, 9]}, "faces": {"north": {"uv": [9.5, 6, 15, 6.5], "rotation": 180, "texture": "#15"}, "east": {"uv": [0, 0, 0.5, 0.5], "rotation": 270, "texture": "#15"}, "west": {"uv": [0, 0, 0.5, 0.5], "rotation": 90, "texture": "#15"}, "up": {"uv": [9.5, 6, 15, 6.5], "rotation": 180, "texture": "#15"}, "down": {"uv": [9.5, 14.5, 15, 15], "texture": "#15"}}}, {"name": "sign", "from": [1.5, 1.5, 6.5], "to": [14.5, 2.5, 8.5], "rotation": {"angle": 0, "axis": "x", "origin": [8, -1.5, 9]}, "faces": {"north": {"uv": [9, 5.5, 15.5, 6], "rotation": 180, "texture": "#15"}, "east": {"uv": [0, 0, 0.5, 1], "rotation": 270, "texture": "#15"}, "west": {"uv": [0, 0, 0.5, 1], "rotation": 90, "texture": "#15"}, "up": {"uv": [9, 5, 15.5, 6], "rotation": 180, "texture": "#15"}, "down": {"uv": [9, 13.5, 15.5, 14.5], "texture": "#15"}}}, {"name": "sign", "from": [0.5, 1.5, 8.5], "to": [15.5, 2.5, 13.5], "rotation": {"angle": 0, "axis": "x", "origin": [8, -1.5, 9]}, "faces": {"north": {"uv": [8.5, 4.5, 16, 5], "rotation": 180, "texture": "#15"}, "east": {"uv": [0, 0, 0.5, 2.5], "rotation": 270, "texture": "#15"}, "south": {"uv": [8.5, 2.5, 16, 3], "texture": "#15"}, "west": {"uv": [0, 0, 0.5, 2.5], "rotation": 90, "texture": "#15"}, "up": {"uv": [8.5, 2.5, 16, 5], "rotation": 180, "texture": "#15"}, "down": {"uv": [8.5, 11, 16, 13.5], "texture": "#15"}}}, {"name": "sign", "from": [1.5, 1.5, 13.5], "to": [14.5, 2.5, 15.5], "rotation": {"angle": 0, "axis": "x", "origin": [8, -1.5, 9]}, "faces": {"east": {"uv": [0, 0, 0.5, 1], "rotation": 270, "texture": "#15"}, "south": {"uv": [9, 1.5, 15.5, 2], "texture": "#15"}, "west": {"uv": [0, 0, 0.5, 1], "rotation": 90, "texture": "#15"}, "up": {"uv": [9, 1.5, 15.5, 2.5], "rotation": 180, "texture": "#15"}, "down": {"uv": [9, 10, 15.5, 11], "texture": "#15"}}}, {"name": "sign", "from": [2.5, 1.5, 15.5], "to": [13.5, 2.5, 16.5], "rotation": {"angle": 0, "axis": "x", "origin": [8, -1.5, 9]}, "faces": {"east": {"uv": [0, 0, 0.5, 0.5], "rotation": 270, "texture": "#15"}, "south": {"uv": [9.5, 1, 15, 1.5], "texture": "#15"}, "west": {"uv": [0, 0, 0.5, 0.5], "rotation": 90, "texture": "#15"}, "up": {"uv": [9.5, 1, 15, 1.5], "rotation": 180, "texture": "#15"}, "down": {"uv": [9.5, 9.5, 15, 10], "texture": "#15"}}}, {"name": "sign", "from": [3.5, 1.5, 16.5], "to": [12.5, 2.5, 17.5], "rotation": {"angle": 0, "axis": "x", "origin": [8, -1.5, 9]}, "faces": {"east": {"uv": [0, 0, 0.5, 0.5], "rotation": 270, "texture": "#15"}, "south": {"uv": [10, 0.5, 14.5, 1], "texture": "#15"}, "west": {"uv": [0, 0, 0.5, 0.5], "rotation": 90, "texture": "#15"}, "up": {"uv": [10, 0.5, 14.5, 1], "rotation": 180, "texture": "#15"}, "down": {"uv": [10, 9, 14.5, 9.5], "texture": "#15"}}}, {"name": "sign", "from": [5.5, 1.5, 17.5], "to": [10.5, 2.5, 18.5], "rotation": {"angle": 0, "axis": "x", "origin": [8, -1.5, 9]}, "faces": {"east": {"uv": [11, 0, 13.5, 0.5], "rotation": 270, "texture": "#15"}, "south": {"uv": [11, 0, 13.5, 0.5], "texture": "#15"}, "west": {"uv": [11, 0, 13.5, 0.5], "rotation": 90, "texture": "#15"}, "up": {"uv": [11, 0, 13.5, 0.5], "rotation": 180, "texture": "#15"}, "down": {"uv": [11, 8.5, 13.5, 9], "texture": "#15"}}}, {"name": "coil_wire_wing5", "from": [7.5, -2.5, 9.5], "to": [8.5, 1.5, 10.5], "rotation": {"angle": 0, "axis": "x", "origin": [8, -1.5, 9]}, "faces": {"north": {"uv": [0, 0, 1.5, 0.5], "rotation": 180, "texture": "#1"}, "east": {"uv": [0, 0, 1.5, 0.5], "rotation": 270, "texture": "#1"}, "south": {"uv": [0, 0, 1.5, 0.5], "texture": "#1"}, "west": {"uv": [0, 0, 1.5, 0.5], "rotation": 90, "texture": "#1"}, "up": {"uv": [0, 0, 1.5, 0.5], "rotation": 180, "texture": "#1"}, "down": {"uv": [0, 0, 1.5, 0.5], "texture": "#1"}}}], "groups": [{"name": "Formsignal_Vor", "origin": [0, -64, 0], "color": 0, "children": [{"name": "sign", "origin": [0, -2, 0], "color": 0, "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_vr0.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_vr0.json deleted file mode 100644 index af7c7dae7..000000000 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_vr0.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"1": "opensignals:blocks/default/shield_black", "15": "opensignals:blocks/semaphore/semaphore_distant", "18": "opensignals:blocks/semaphore/semaphore_lamps3_yellow", "particle": "opensignals:blocks/default/shield_black"}, "elements": [{"name": "wing", "from": [7, -5, 5], "to": [9, -4, 6], "faces": {"north": {"uv": [2, 13, 4, 13.5], "texture": "#15"}, "east": {"uv": [0.5, 13, 1, 13.5], "texture": "#15"}, "south": {"uv": [0, 14, 1, 14.5], "texture": "#15"}, "west": {"uv": [5, 13, 5.5, 13.5], "texture": "#15"}, "down": {"uv": [0, 14, 1, 14.5], "texture": "#15"}}}, {"name": "wing", "from": [6.5, -4, 5], "to": [9.5, -3, 6], "faces": {"north": {"uv": [1.5, 12.5, 4.5, 13], "texture": "#15"}, "east": {"uv": [0.5, 13, 1, 13.5], "texture": "#15"}, "south": {"uv": [0, 15, 1.5, 15.5], "texture": "#15"}, "west": {"uv": [5, 13, 5.5, 13.5], "texture": "#15"}, "down": {"uv": [0, 15, 1.5, 15.5], "texture": "#15"}}}, {"name": "wing", "from": [6, -3, 5], "to": [10, 22, 6], "faces": {"north": {"uv": [1, 0, 5, 12.5], "texture": "#15"}, "east": {"uv": [0, 0, 0.5, 12.5], "texture": "#15"}, "south": {"uv": [6.5, 0, 8.5, 12.5], "texture": "#15"}, "west": {"uv": [5.5, 0, 6, 12.5], "texture": "#15"}, "up": {"uv": [2, 14, 4, 14.5], "texture": "#15"}, "down": {"uv": [2, 14, 4, 14.5], "texture": "#15"}}}, {"name": "shield", "from": [-0.5, 13, 6], "to": [5.5, 23, 7], "faces": {"north": {"uv": [0, 0, 10, 6], "rotation": 270, "texture": "#18"}, "east": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, "west": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "up": {"uv": [0, 0, 3, 0.5], "texture": "#1"}, "down": {"uv": [0, 0, 3, 0.5], "texture": "#1"}}}, {"name": "shield", "from": [10.5, 2, 6], "to": [16.5, 12, 7], "faces": {"north": {"uv": [0, 0, 10, 6], "rotation": 90, "texture": "#18"}, "east": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, "west": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "up": {"uv": [0, 0, 3, 0.5], "texture": "#1"}, "down": {"uv": [0, 0, 3, 0.5], "texture": "#1"}}}], "groups": [{"name": "Formsignal_Vor", "origin": [0, 0, 0], "color": 0, "children": [{"name": "vr2", "origin": [0, -32, 0], "color": 0, "children": [0, 1, 2]}]}, {"name": "Formsignal_Vor", "origin": [0, -32, 0], "color": 0, "children": [{"name": "lamp3", "origin": [-1, 88, -5.5], "color": 0, "children": [3, 4]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_vr1.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_vr1.json deleted file mode 100644 index ce1306f58..000000000 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_vr1.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"1": "opensignals:blocks/default/shield_black", "15": "opensignals:blocks/semaphore/semaphore_distant", "18": "opensignals:blocks/semaphore/semaphore_lamps3_green", "particle": "opensignals:blocks/default/shield_black"}, "elements": [{"name": "wing", "from": [7, -5, 5], "to": [9, -4, 6], "rotation": {"angle": 0, "axis": "z", "origin": [8, 8.5, 4]}, "faces": {"north": {"uv": [2, 13, 4, 13.5], "texture": "#15"}, "east": {"uv": [0.5, 13, 1, 13.5], "texture": "#15"}, "south": {"uv": [0, 14, 1, 14.5], "texture": "#15"}, "west": {"uv": [5, 13, 5.5, 13.5], "texture": "#15"}, "down": {"uv": [0, 14, 1, 14.5], "texture": "#15"}}}, {"name": "wing", "from": [6.5, -4, 5], "to": [9.5, -3, 6], "rotation": {"angle": 0, "axis": "z", "origin": [8, 8.5, 4]}, "faces": {"north": {"uv": [1.5, 12.5, 4.5, 13], "texture": "#15"}, "east": {"uv": [0.5, 13, 1, 13.5], "texture": "#15"}, "south": {"uv": [0, 15, 1.5, 15.5], "texture": "#15"}, "west": {"uv": [5, 13, 5.5, 13.5], "texture": "#15"}, "down": {"uv": [0, 15, 1.5, 15.5], "texture": "#15"}}}, {"name": "wing", "from": [6, -3, 5], "to": [10, 22, 6], "rotation": {"angle": 0, "axis": "z", "origin": [8, 8.5, 4]}, "faces": {"north": {"uv": [1, 0, 5, 12.5], "texture": "#15"}, "east": {"uv": [0, 0, 0.5, 12.5], "texture": "#15"}, "south": {"uv": [6.5, 0, 8.5, 12.5], "texture": "#15"}, "west": {"uv": [5.5, 0, 6, 12.5], "texture": "#15"}, "up": {"uv": [2, 14, 4, 14.5], "texture": "#15"}, "down": {"uv": [2, 14, 4, 14.5], "texture": "#15"}}}, {"name": "shield", "from": [-0.5, 17, 6], "to": [5.5, 27, 7], "faces": {"north": {"uv": [0, 0, 10, 6], "rotation": 270, "texture": "#18"}, "east": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, "west": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "up": {"uv": [0, 0, 3, 0.5], "texture": "#1"}, "down": {"uv": [0, 0, 3, 0.5], "texture": "#1"}}}, {"name": "shield", "from": [10.5, -2, 6], "to": [16.5, 8, 7], "faces": {"north": {"uv": [0, 0, 10, 6], "rotation": 90, "texture": "#18"}, "east": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, "west": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "up": {"uv": [0, 0, 3, 0.5], "texture": "#1"}, "down": {"uv": [0, 0, 3, 0.5], "texture": "#1"}}}], "groups": [{"name": "Formsignal_Vor", "origin": [0, 0, 0], "color": 0, "children": [{"name": "vr2", "origin": [0, -32, 0], "color": 0, "children": [0, 1, 2]}]}, {"name": "Formsignal_Vor", "origin": [0, -32, 0], "color": 0, "children": [{"name": "lamp3", "origin": [-1, 88, -5.5], "color": 0, "children": [3, 4]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_vr2.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_vr2.json deleted file mode 100644 index 7a1ed0034..000000000 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_distant_vr2.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"1": "opensignals:blocks/default/shield_black", "3": "opensignals:blocks/semaphore/semaphore_lamps3_yellow", "15": "opensignals:blocks/semaphore/semaphore_distant", "18": "opensignals:blocks/semaphore/semaphore_lamps3_green", "particle": "opensignals:blocks/default/shield_black"}, "elements": [{"name": "wing", "from": [7, -5, 5], "to": [9, -4, 6], "rotation": {"angle": -45, "axis": "z", "origin": [8, 8.5, 4]}, "faces": {"north": {"uv": [2, 13, 4, 13.5], "texture": "#15"}, "east": {"uv": [0.5, 13, 1, 13.5], "texture": "#15"}, "south": {"uv": [0, 14, 1, 14.5], "texture": "#15"}, "west": {"uv": [5, 13, 5.5, 13.5], "texture": "#15"}, "down": {"uv": [0, 14, 1, 14.5], "texture": "#15"}}}, {"name": "wing", "from": [6.5, -4, 5], "to": [9.5, -3, 6], "rotation": {"angle": -45, "axis": "z", "origin": [8, 8.5, 4]}, "faces": {"north": {"uv": [1.5, 12.5, 4.5, 13], "texture": "#15"}, "east": {"uv": [0.5, 13, 1, 13.5], "texture": "#15"}, "south": {"uv": [0, 15, 1.5, 15.5], "texture": "#15"}, "west": {"uv": [5, 13, 5.5, 13.5], "texture": "#15"}, "down": {"uv": [0, 15, 1.5, 15.5], "texture": "#15"}}}, {"name": "wing", "from": [6, -3, 5], "to": [10, 22, 6], "rotation": {"angle": -45, "axis": "z", "origin": [8, 8.5, 4]}, "faces": {"north": {"uv": [1, 0, 5, 12.5], "texture": "#15"}, "east": {"uv": [0, 0, 0.5, 12.5], "texture": "#15"}, "south": {"uv": [6.5, 0, 8.5, 12.5], "texture": "#15"}, "west": {"uv": [5.5, 0, 6, 12.5], "texture": "#15"}, "up": {"uv": [2, 14, 4, 14.5], "texture": "#15"}, "down": {"uv": [2, 14, 4, 14.5], "texture": "#15"}}}, {"name": "shield", "from": [-0.5, 17, 6], "to": [5.5, 27, 7], "faces": {"north": {"uv": [0, 0, 10, 6], "rotation": 270, "texture": "#18"}, "east": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, "west": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "up": {"uv": [0, 0, 3, 0.5], "texture": "#1"}, "down": {"uv": [0, 0, 3, 0.5], "texture": "#1"}}}, {"name": "shield", "from": [10.5, 2, 6], "to": [16.5, 12, 7], "faces": {"north": {"uv": [0, 0, 10, 6], "rotation": 90, "texture": "#3"}, "east": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, "west": {"uv": [0, 0, 0.5, 5], "texture": "#1"}, "up": {"uv": [0, 0, 3, 0.5], "texture": "#1"}, "down": {"uv": [0, 0, 3, 0.5], "texture": "#1"}}}], "groups": [{"name": "Formsignal_Vor", "origin": [0, 0, 0], "color": 0, "children": [{"name": "vr2", "origin": [0, -32, 0], "color": 0, "children": [0, 1, 2]}]}, {"name": "Formsignal_Vor", "origin": [0, -32, 0], "color": 0, "children": [{"name": "lamp3", "origin": [-1, 88, -5.5], "color": 0, "children": [3, 4]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_mast5_hp2.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_mast5_hp2.json index 382b85ce6..86477982d 100644 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_mast5_hp2.json +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_mast5_hp2.json @@ -1 +1,91 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"0": "opensignals:blocks/default/mast", "1": "opensignals:blocks/default/shield_black", "2": "opensignals:blocks/default/shield_gray"}, "elements": [{"name": "wire_wing2", "from": [11, 0, 8.25], "to": [11.5, 11, 8.75], "faces": {"north": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}, "east": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}, "south": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}, "west": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}}}, {"name": "mast", "from": [10.5, 8, 6.5], "to": [12, 9, 9], "faces": {"north": {"uv": [0, 0, 0.75, 0.5], "texture": "#1"}, "east": {"uv": [0, 0, 1.25, 0.5], "texture": "#1"}, "south": {"uv": [0, 0, 0.75, 0.5], "texture": "#1"}, "west": {"uv": [0, 0, 1.25, 0.5], "texture": "#1"}, "up": {"uv": [0, 0, 0.75, 1.25], "texture": "#1"}, "down": {"uv": [0, 0, 0.75, 1.25], "texture": "#1"}}}, {"name": "mast", "from": [10.5, 8, 2.5], "to": [11.5, 9, 5.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}}}, {"name": "lamp", "from": [3.5, 3, 6.5], "to": [8.5, 5, 8.5], "faces": {"north": {"uv": [0, 0, 3, 5], "texture": "#1"}, "east": {"uv": [0, 0, 3, 5], "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, "west": {"uv": [0, 0, 3, 5], "texture": "#1"}, "up": {"uv": [0, 0, 3, 5], "texture": "#1"}, "down": {"uv": [0, 0, 3, 5], "texture": "#1"}}}, {"name": "lamp", "from": [-0.5, 2, 5.5], "to": [3.5, 6, 9.5], "faces": {"north": {"uv": [0, 0, 2, 2], "texture": "#1"}, "east": {"uv": [0, 0, 2, 2], "texture": "#1"}, "south": {"uv": [0, 0, 2, 2], "texture": "#1"}, "west": {"uv": [0, 0, 2, 2], "texture": "#1"}, "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, "down": {"uv": [0, 0, 2, 2], "texture": "#1"}}}], "groups": [{"name": "Formsignal_Haupt", "origin": [0, -80, 0], "color": 0, "children": [{"name": "mast5_hp2", "origin": [0, -80, 0], "color": 0, "children": [0, 1, 2, 3, 4]}]}]} \ No newline at end of file +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "0": "opensignals:blocks/default/mast", + "1": "opensignals:blocks/default/shield_black", + "2": "opensignals:blocks/default/shield_gray", + "particle": "opensignals:blocks/semaphore/lamp_off", + "lamp": "opensignals:blocks/semaphore/lamp_off" + }, + "elements": [ + { + "name": "wire_wing2", + "from": [11, 0, 8.25], + "to": [11.5, 11, 8.75], + "faces": { + "north": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}, + "east": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}, + "south": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}, + "west": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"} + } + }, + { + "name": "mast", + "from": [10.5, 8, 6.5], + "to": [12, 9, 9], + "faces": { + "north": {"uv": [0, 0, 0.75, 0.5], "texture": "#1"}, + "east": {"uv": [0, 0, 1.25, 0.5], "texture": "#1"}, + "south": {"uv": [0, 0, 0.75, 0.5], "texture": "#1"}, + "west": {"uv": [0, 0, 1.25, 0.5], "texture": "#1"}, + "up": {"uv": [0, 0, 0.75, 1.25], "texture": "#1"}, + "down": {"uv": [0, 0, 0.75, 1.25], "texture": "#1"} + } + }, + { + "name": "mast", + "from": [10.5, 8, 2.5], + "to": [11.5, 9, 5.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"} + } + }, + { + "name": "lamp", + "from": [3.5, 3, 6.5], + "to": [8.5, 5, 8.5], + "faces": { + "north": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "east": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "west": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "up": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "down": {"uv": [0, 0, 3, 5], "texture": "#1"} + } + }, + { + "name": "lamp", + "from": [-0.5, 2, 5.5], + "to": [3.5, 6, 9.5], + "faces": { + "north": {"uv": [0, 0, 4, 4], "texture": "#lamp"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Haupt", + "origin": [0, -80, 0], + "color": 0, + "children": [ + { + "name": "mast5_hp2", + "origin": [0, -80, 0], + "color": 0, + "children": [0, 1, 2, 3, 4] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_mast7.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_mast7.json index 9de525659..fe1d8e4ec 100644 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_mast7.json +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_mast7.json @@ -1 +1,605 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"0": "opensignals:blocks/default/mast", "1": "opensignals:blocks/default/shield_black", "2": "opensignals:blocks/default/shield_gray", "6": "opensignals:blocks/default/white", "10": "opensignals:blocks/default/red"}, "elements": [{"name": "mast", "from": [12.5, 0, 5.5], "to": [13.5, 13, 6.5], "faces": {"north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 0, 5.5], "to": [9.5, 13, 6.5], "faces": {"north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 0, 9.5], "to": [9.5, 13, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 13, 5.5], "to": [13.5, 16, 10.5], "faces": {"north": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, "east": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, "south": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, "west": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, "up": {"uv": [0, 0, 2.5, 2.5], "texture": "#0"}, "down": {"uv": [0, 0, 2.5, 2.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 0, 9.5], "to": [13.5, 13, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}}}, {"name": "mast", "from": [9.5, 0, 5.5], "to": [10.5, 1, 6.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [9.5, 2, 5.5], "to": [10.5, 3, 6.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [10.5, 3, 5.5], "to": [11.5, 4, 6.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [11.5, 4, 5.5], "to": [12.5, 5, 6.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [9.5, 6, 5.5], "to": [12.5, 13, 6.5], "faces": {"north": {"uv": [0, 0, 1.5, 3.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 3.5], "texture": "#0"}, "south": {"uv": [0, 0, 1.5, 3.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 3.5], "texture": "#0"}, "up": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 12, 8.5], "to": [9.5, 13, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 11, 7.5], "to": [9.5, 12, 8.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 10, 6.5], "to": [9.5, 11, 7.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 8, 6.5], "to": [9.5, 9, 7.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 7, 7.5], "to": [9.5, 8, 8.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 6, 8.5], "to": [9.5, 7, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 2, 6.5], "to": [9.5, 5, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, "east": {"uv": [0, 0, 1.5, 1.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, "west": {"uv": [0, 0, 1.5, 1.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 0, 6.5], "to": [9.5, 1, 7.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [11.5, 0, 9.5], "to": [12.5, 1, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [11.5, 2, 9.5], "to": [12.5, 3, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [10.5, 3, 9.5], "to": [11.5, 4, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [9.5, 4, 9.5], "to": [10.5, 5, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [9.5, 6, 9.5], "to": [10.5, 7, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [10.5, 7, 9.5], "to": [11.5, 8, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [11.5, 8, 9.5], "to": [12.5, 9, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [11.5, 10, 9.5], "to": [12.5, 11, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [10.5, 11, 9.5], "to": [11.5, 12, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [9.5, 12, 9.5], "to": [10.5, 13, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 12, 6.5], "to": [13.5, 13, 7.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 11, 7.5], "to": [13.5, 12, 8.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 10, 8.5], "to": [13.5, 11, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 8, 8.5], "to": [13.5, 9, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [10.5, 8.5, 2.5], "to": [11.5, 9.5, 5.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 7, 7.5], "to": [13.5, 8, 8.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 6, 6.5], "to": [13.5, 7, 7.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 4, 6.5], "to": [13.5, 5, 7.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 3, 7.5], "to": [13.5, 4, 8.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 2, 8.5], "to": [13.5, 3, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 0, 8.5], "to": [13.5, 1, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "bracket_wire_wing1", "from": [13.5, 3, 7.5], "to": [15.5, 4, 8.5], "faces": {"north": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 1, 0.5], "texture": "#0"}}}, {"name": "bracket_wire_wing1", "from": [14.25, 8.5, 4.5], "to": [15.25, 9.5, 8.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, "east": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, "west": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, "up": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, "down": {"uv": [0, 0, 0.5, 2], "texture": "#1"}}}, {"name": "wire_wing1", "from": [14.5, 0, 7.75], "to": [15, 9, 8.25], "faces": {"north": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}, "east": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}, "south": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}, "west": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}}}, {"name": "lamp", "from": [-0.5, 1, 5.5], "to": [3.5, 5, 9.5], "faces": {"north": {"uv": [0, 0, 2, 2], "texture": "#1"}, "east": {"uv": [0, 0, 2, 2], "texture": "#1"}, "south": {"uv": [0, 0, 2, 2], "texture": "#1"}, "west": {"uv": [0, 0, 2, 2], "texture": "#1"}, "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, "down": {"uv": [0, 0, 2, 2], "texture": "#1"}}}, {"name": "lamp", "from": [3.5, 2, 6.5], "to": [8.5, 4, 8.5], "faces": {"north": {"uv": [0, 0, 3, 5], "texture": "#1"}, "east": {"uv": [0, 0, 3, 5], "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, "west": {"uv": [0, 0, 3, 5], "texture": "#1"}, "up": {"uv": [0, 0, 3, 5], "texture": "#1"}, "down": {"uv": [0, 0, 3, 5], "texture": "#1"}}}, {"name": "sign1", "from": [9, -7, 4.5], "to": [13, 7, 5.5], "faces": {"north": {"uv": [0, 0, 2, 16], "texture": "#10"}, "east": {"uv": [0, 0, 2, 13], "texture": "#6"}, "south": {"uv": [0, 0, 2, 13], "texture": "#6"}, "west": {"uv": [0, 0, 2, 13], "texture": "#6"}, "up": {"uv": [0, 0, 2, 13], "texture": "#6"}, "down": {"uv": [0, 0, 2, 13], "texture": "#6"}}}], "groups": [{"name": "Formsignal_Haupt", "origin": [0, -112, 0], "color": 0, "children": [{"name": "mast7", "origin": [0, -16, 0], "color": 0, "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44]}]}]} \ No newline at end of file +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "0": "opensignals:blocks/default/mast", + "1": "opensignals:blocks/default/shield_black", + "2": "opensignals:blocks/default/shield_gray", + "6": "opensignals:blocks/default/white", + "10": "opensignals:blocks/default/red", + "particle": "opensignals:blocks/semaphore/lamp_red", + "lamp": "opensignals:blocks/semaphore/lamp_red" + }, + "elements": [ + { + "name": "mast", + "from": [12.5, 0, 5.5], + "to": [13.5, 13, 6.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 0, 5.5], + "to": [9.5, 13, 6.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 0, 9.5], + "to": [9.5, 13, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 13, 5.5], + "to": [13.5, 16, 10.5], + "faces": { + "north": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, + "east": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, + "south": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, + "west": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, + "up": {"uv": [0, 0, 2.5, 2.5], "texture": "#0"}, + "down": {"uv": [0, 0, 2.5, 2.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 0, 9.5], + "to": [13.5, 13, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [9.5, 0, 5.5], + "to": [10.5, 1, 6.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [9.5, 2, 5.5], + "to": [10.5, 3, 6.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [10.5, 3, 5.5], + "to": [11.5, 4, 6.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [11.5, 4, 5.5], + "to": [12.5, 5, 6.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [9.5, 6, 5.5], + "to": [12.5, 13, 6.5], + "faces": { + "north": {"uv": [0, 0, 1.5, 3.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 3.5], "texture": "#0"}, + "south": {"uv": [0, 0, 1.5, 3.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 3.5], "texture": "#0"}, + "up": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 12, 8.5], + "to": [9.5, 13, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 11, 7.5], + "to": [9.5, 12, 8.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 10, 6.5], + "to": [9.5, 11, 7.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 8, 6.5], + "to": [9.5, 9, 7.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 7, 7.5], + "to": [9.5, 8, 8.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 6, 8.5], + "to": [9.5, 7, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 2, 6.5], + "to": [9.5, 5, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, + "east": {"uv": [0, 0, 1.5, 1.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, + "west": {"uv": [0, 0, 1.5, 1.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 0, 6.5], + "to": [9.5, 1, 7.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [11.5, 0, 9.5], + "to": [12.5, 1, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [11.5, 2, 9.5], + "to": [12.5, 3, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [10.5, 3, 9.5], + "to": [11.5, 4, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [9.5, 4, 9.5], + "to": [10.5, 5, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [9.5, 6, 9.5], + "to": [10.5, 7, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [10.5, 7, 9.5], + "to": [11.5, 8, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [11.5, 8, 9.5], + "to": [12.5, 9, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [11.5, 10, 9.5], + "to": [12.5, 11, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [10.5, 11, 9.5], + "to": [11.5, 12, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [9.5, 12, 9.5], + "to": [10.5, 13, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 12, 6.5], + "to": [13.5, 13, 7.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 11, 7.5], + "to": [13.5, 12, 8.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 10, 8.5], + "to": [13.5, 11, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 8, 8.5], + "to": [13.5, 9, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [10.5, 8.5, 2.5], + "to": [11.5, 9.5, 5.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 7, 7.5], + "to": [13.5, 8, 8.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 6, 6.5], + "to": [13.5, 7, 7.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 4, 6.5], + "to": [13.5, 5, 7.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 3, 7.5], + "to": [13.5, 4, 8.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 2, 8.5], + "to": [13.5, 3, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 0, 8.5], + "to": [13.5, 1, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "bracket_wire_wing1", + "from": [13.5, 3, 7.5], + "to": [15.5, 4, 8.5], + "faces": { + "north": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 0.5], "texture": "#0"} + } + }, + { + "name": "bracket_wire_wing1", + "from": [14.25, 8.5, 4.5], + "to": [15.25, 9.5, 8.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, + "east": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 2], "texture": "#1"} + } + }, + { + "name": "wire_wing1", + "from": [14.5, 0, 7.75], + "to": [15, 9, 8.25], + "faces": { + "north": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}, + "east": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}, + "south": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}, + "west": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"} + } + }, + { + "name": "lamp", + "from": [-0.5, 1, 5.5], + "to": [3.5, 5, 9.5], + "faces": { + "north": {"uv": [0, 0, 4, 4], "texture": "#lamp"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + }, + { + "name": "lamp", + "from": [3.5, 2, 6.5], + "to": [8.5, 4, 8.5], + "faces": { + "north": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "east": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "west": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "up": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "down": {"uv": [0, 0, 3, 5], "texture": "#1"} + } + }, + { + "name": "sign1", + "from": [9, -7, 4.5], + "to": [13, 7, 5.5], + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#10"}, + "east": {"uv": [0, 0, 2, 13], "texture": "#6"}, + "south": {"uv": [0, 0, 2, 13], "texture": "#6"}, + "west": {"uv": [0, 0, 2, 13], "texture": "#6"}, + "up": {"uv": [0, 0, 2, 13], "texture": "#6"}, + "down": {"uv": [0, 0, 2, 13], "texture": "#6"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Haupt", + "origin": [0, -112, 0], + "color": 0, + "children": [ + { + "name": "mast7", + "origin": [0, -16, 0], + "color": 0, + "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1.json index 121a896e5..4f7ec4adc 100644 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1.json +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1.json @@ -1 +1,71 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"1": "opensignals:blocks/default/shield_black", "4": "opensignals:blocks/semaphore/semaphore", "8": "opensignals:blocks/semaphore/semaphore_lamps1_red"}, "elements": [{"name": "wing1", "from": [-14, 7, 3.5], "to": [18, 11, 4.5], "faces": {"north": {"uv": [0, 0.5, 16, 2.5], "texture": "#4"}, "east": {"uv": [0, 6.5, 0.5, 8.5], "texture": "#4"}, "south": {"uv": [0, 3.5, 16, 5.5], "rotation": 180, "texture": "#4"}, "west": {"uv": [15.5, 6.5, 16, 8.5], "texture": "#4"}, "up": {"uv": [0, 6, 16, 6.5], "texture": "#4"}, "down": {"uv": [0, 8.5, 16, 9], "texture": "#4"}}}, {"name": "wing1", "from": [-13, 11, 3.5], "to": [-9, 12, 4.5], "faces": {"north": {"uv": [13.5, 0, 15.5, 0.5], "texture": "#4"}, "east": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, "south": {"uv": [13.5, 3, 15.5, 3.5], "texture": "#4"}, "west": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, "up": {"uv": [12.5, 9.5, 14.5, 10], "texture": "#4"}}}, {"name": "wing1", "from": [-13, 6, 3.5], "to": [-9, 7, 4.5], "faces": {"north": {"uv": [13.5, 2.5, 15.5, 3], "texture": "#4"}, "east": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, "south": {"uv": [13.5, 5.5, 15.5, 6], "texture": "#4"}, "west": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, "down": {"uv": [12.5, 9.5, 14.5, 10], "texture": "#4"}}}, {"name": "shield", "from": [-3.6434, 0.06802, 4.5], "to": [6.3566, 6.06802, 5.5], "rotation": {"angle": -45, "axis": "z", "origin": [0, 0, 0]}, "faces": {"north": {"uv": [0, 0, 10, 6], "texture": "#8"}, "east": {"uv": [0, 0, 3, 0.5], "rotation": 270, "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "rotation": 270, "texture": "#1"}, "west": {"uv": [0, 0, 3, 0.5], "rotation": 270, "texture": "#1"}, "up": {"uv": [0, 0, 0.5, 5], "rotation": 270, "texture": "#1"}, "down": {"uv": [0, 0, 0.5, 5], "rotation": 270, "texture": "#1"}}}], "groups": [{"name": "Formsignal_Haupt", "origin": [0, -112, 0], "color": 0, "children": [{"name": "wing1", "origin": [0, 9, -5.5], "color": 0, "children": [0, 1, 2, {"name": "lamp1", "origin": [-1, 8, -5.5], "color": 0, "children": [3]}]}]}]} \ No newline at end of file +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "4": "opensignals:blocks/semaphore/semaphore" + }, + "elements": [ + { + "name": "wing1", + "from": [-14, 7, 3.5], + "to": [18, 11, 4.5], + "faces": { + "north": {"uv": [0, 0.5, 16, 2.5], "texture": "#4"}, + "east": {"uv": [0, 6.5, 0.5, 8.5], "texture": "#4"}, + "south": {"uv": [0, 3.5, 16, 5.5], "rotation": 180, "texture": "#4"}, + "west": {"uv": [15.5, 6.5, 16, 8.5], "texture": "#4"}, + "up": {"uv": [0, 6, 16, 6.5], "texture": "#4"}, + "down": {"uv": [0, 8.5, 16, 9], "texture": "#4"} + } + }, + { + "name": "wing1", + "from": [-13, 11, 3.5], + "to": [-9, 12, 4.5], + "faces": { + "north": {"uv": [13.5, 0, 15.5, 0.5], "texture": "#4"}, + "east": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, + "south": {"uv": [13.5, 3, 15.5, 3.5], "texture": "#4"}, + "west": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, + "up": {"uv": [12.5, 9.5, 14.5, 10], "texture": "#4"} + } + }, + { + "name": "wing1", + "from": [-13, 6, 3.5], + "to": [-9, 7, 4.5], + "faces": { + "north": {"uv": [13.5, 2.5, 15.5, 3], "texture": "#4"}, + "east": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, + "south": {"uv": [13.5, 5.5, 15.5, 6], "texture": "#4"}, + "west": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, + "down": {"uv": [12.5, 9.5, 14.5, 10], "texture": "#4"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Haupt", + "origin": [0, -112, 0], + "color": 0, + "children": [ + { + "name": "wing1", + "origin": [0, 9, -5.5], + "color": 0, + "children": [ + 0, + 1, + 2, + { + "name": "lamp1", + "origin": [-1, 8, -5.5], + "color": 0, + "children": [] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1_lamp.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1_lamp.json new file mode 100644 index 000000000..35b464c00 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1_lamp.json @@ -0,0 +1,42 @@ +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "8": "opensignals:blocks/semaphore/lamps_shield_off", + "particle": "opensignals:blocks/semaphore/lamps_shield_off" + }, + "elements": [ + { + "name": "shield", + "from": [-3.6434, 0.06802, 5.4], + "to": [6.3566, 6.06802, 5.4], + "rotation": {"angle": -45, "axis": "z", "origin": [0, 0, 0]}, + "faces": { + "north": {"uv": [0, 0, 10, 6], "texture": "#8"}, + "south": {"uv": [0, 0, 10, 6], "texture": "#8"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Haupt", + "origin": [0, -112, 0], + "color": 0, + "children": [ + { + "name": "wing1", + "origin": [0, 9, -5.5], + "color": 0, + "children": [ + { + "name": "lamp1", + "origin": [-1, 8, -5.5], + "color": 0, + "children": [0] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1_on.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1_on.json deleted file mode 100644 index 0c211d580..000000000 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1_on.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"1": "opensignals:blocks/default/shield_black", "4": "opensignals:blocks/semaphore/semaphore", "8": "opensignals:blocks/semaphore/semaphore_lamps1_green"}, "elements": [{"name": "wing1", "from": [-9.09404, 18.84404, 3.5], "to": [22.90596, 22.84404, 4.5], "rotation": {"angle": -45, "axis": "z", "origin": [-0.84404, 20.84404, 4]}, "faces": {"north": {"uv": [0, 0.5, 16, 2.5], "texture": "#4"}, "east": {"uv": [0, 6.5, 0.5, 8.5], "texture": "#4"}, "south": {"uv": [0, 3.5, 16, 5.5], "rotation": 180, "texture": "#4"}, "west": {"uv": [15.5, 6.5, 16, 8.5], "texture": "#4"}, "up": {"uv": [0, 6, 16, 6.5], "texture": "#4"}, "down": {"uv": [0, 8.5, 16, 9], "texture": "#4"}}}, {"name": "wing1", "from": [-8.09404, 22.84404, 3.5], "to": [-4.09404, 23.84404, 4.5], "rotation": {"angle": -45, "axis": "z", "origin": [-0.84404, 20.84404, 4]}, "faces": {"north": {"uv": [13.5, 0, 15.5, 0.5], "texture": "#4"}, "east": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, "south": {"uv": [13.5, 3, 15.5, 3.5], "texture": "#4"}, "west": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, "up": {"uv": [12.5, 9.5, 14.5, 10], "texture": "#4"}}}, {"name": "wing1", "from": [-8.09404, 17.84404, 3.5], "to": [-4.09404, 18.84404, 4.5], "rotation": {"angle": -45, "axis": "z", "origin": [-0.84404, 20.84404, 4]}, "faces": {"north": {"uv": [13.5, 2.5, 15.5, 3], "texture": "#4"}, "east": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, "south": {"uv": [13.5, 5.5, 15.5, 6], "texture": "#4"}, "west": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, "down": {"uv": [12.5, 9.5, 14.5, 10], "texture": "#4"}}}, {"name": "shield", "from": [-8.6434, 0.06802, 4.5], "to": [1.3566, 6.06802, 5.5], "rotation": {"angle": -45, "axis": "z", "origin": [0, 0, 0]}, "faces": {"north": {"uv": [0, 0, 10, 6], "texture": "#8"}, "east": {"uv": [0, 0, 3, 0.5], "rotation": 270, "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "rotation": 270, "texture": "#1"}, "west": {"uv": [0, 0, 3, 0.5], "rotation": 270, "texture": "#1"}, "up": {"uv": [0, 0, 0.5, 5], "rotation": 270, "texture": "#1"}, "down": {"uv": [0, 0, 0.5, 5], "rotation": 270, "texture": "#1"}}}], "groups": [{"name": "Formsignal_Haupt", "origin": [0, -112, 0], "color": 0, "children": [{"name": "wing1", "origin": [0, 9, -5.5], "color": 0, "children": [0, 1, 2, {"name": "lamp1", "origin": [-1, 8, -5.5], "color": 0, "children": [3]}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1_small.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1_small.json new file mode 100644 index 000000000..4f7ec4adc --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1_small.json @@ -0,0 +1,71 @@ +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "4": "opensignals:blocks/semaphore/semaphore" + }, + "elements": [ + { + "name": "wing1", + "from": [-14, 7, 3.5], + "to": [18, 11, 4.5], + "faces": { + "north": {"uv": [0, 0.5, 16, 2.5], "texture": "#4"}, + "east": {"uv": [0, 6.5, 0.5, 8.5], "texture": "#4"}, + "south": {"uv": [0, 3.5, 16, 5.5], "rotation": 180, "texture": "#4"}, + "west": {"uv": [15.5, 6.5, 16, 8.5], "texture": "#4"}, + "up": {"uv": [0, 6, 16, 6.5], "texture": "#4"}, + "down": {"uv": [0, 8.5, 16, 9], "texture": "#4"} + } + }, + { + "name": "wing1", + "from": [-13, 11, 3.5], + "to": [-9, 12, 4.5], + "faces": { + "north": {"uv": [13.5, 0, 15.5, 0.5], "texture": "#4"}, + "east": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, + "south": {"uv": [13.5, 3, 15.5, 3.5], "texture": "#4"}, + "west": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, + "up": {"uv": [12.5, 9.5, 14.5, 10], "texture": "#4"} + } + }, + { + "name": "wing1", + "from": [-13, 6, 3.5], + "to": [-9, 7, 4.5], + "faces": { + "north": {"uv": [13.5, 2.5, 15.5, 3], "texture": "#4"}, + "east": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, + "south": {"uv": [13.5, 5.5, 15.5, 6], "texture": "#4"}, + "west": {"uv": [11.5, 9.5, 12, 10], "texture": "#4"}, + "down": {"uv": [12.5, 9.5, 14.5, 10], "texture": "#4"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Haupt", + "origin": [0, -112, 0], + "color": 0, + "children": [ + { + "name": "wing1", + "origin": [0, 9, -5.5], + "color": 0, + "children": [ + 0, + 1, + 2, + { + "name": "lamp1", + "origin": [-1, 8, -5.5], + "color": 0, + "children": [] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1_small_lamp.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1_small_lamp.json new file mode 100644 index 000000000..35b464c00 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing1_small_lamp.json @@ -0,0 +1,42 @@ +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "8": "opensignals:blocks/semaphore/lamps_shield_off", + "particle": "opensignals:blocks/semaphore/lamps_shield_off" + }, + "elements": [ + { + "name": "shield", + "from": [-3.6434, 0.06802, 5.4], + "to": [6.3566, 6.06802, 5.4], + "rotation": {"angle": -45, "axis": "z", "origin": [0, 0, 0]}, + "faces": { + "north": {"uv": [0, 0, 10, 6], "texture": "#8"}, + "south": {"uv": [0, 0, 10, 6], "texture": "#8"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Haupt", + "origin": [0, -112, 0], + "color": 0, + "children": [ + { + "name": "wing1", + "origin": [0, 9, -5.5], + "color": 0, + "children": [ + { + "name": "lamp1", + "origin": [-1, 8, -5.5], + "color": 0, + "children": [0] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2.json index 5d9c6552a..c6cdc19c9 100644 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2.json +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2.json @@ -1 +1,61 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"1": "opensignals:blocks/default/shield_black", "4": "opensignals:blocks/semaphore/semaphore", "9": "opensignals:blocks/semaphore/semaphore_lamps2_dark"}, "elements": [{"name": "wing2", "from": [9, 0, 3.5], "to": [13, 32, 4.5], "faces": {"north": {"uv": [0, 0.5, 16, 2.5], "rotation": 270, "texture": "#4"}, "east": {"uv": [0, 6, 16, 6.5], "rotation": 90, "texture": "#4"}, "south": {"uv": [0, 3.5, 16, 5.5], "rotation": 270, "texture": "#4"}, "west": {"uv": [0, 8.5, 16, 9], "rotation": 90, "texture": "#4"}, "up": {"uv": [15.5, 6.5, 16, 8.5], "rotation": 90, "texture": "#4"}, "down": {"uv": [0, 6.5, 0.5, 8.5], "rotation": 90, "texture": "#4"}}}, {"name": "wing2", "from": [13, 27, 3.5], "to": [14, 31, 4.5], "faces": {"north": {"uv": [13.5, 0, 15.5, 0.5], "rotation": 270, "texture": "#4"}, "east": {"uv": [12.5, 9.5, 14.5, 10], "rotation": 90, "texture": "#4"}, "south": {"uv": [13.5, 3, 15.5, 3.5], "rotation": 90, "texture": "#4"}, "up": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"}, "down": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"}}}, {"name": "wing2", "from": [8, 27, 3.5], "to": [9, 31, 4.5], "faces": {"north": {"uv": [13.5, 2.5, 15.5, 3], "rotation": 270, "texture": "#4"}, "south": {"uv": [13.5, 5.5, 15.5, 6], "rotation": 90, "texture": "#4"}, "west": {"uv": [12.5, 9.5, 14.5, 10], "rotation": 90, "texture": "#4"}, "up": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"}, "down": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"}}}, {"name": "shield", "from": [-4.42893, 0.32233, 4.5], "to": [5.57107, 6.32233, 5.5], "rotation": {"angle": -45, "axis": "z", "origin": [0, 0, 0]}, "faces": {"north": {"uv": [0, 0, 10, 6], "texture": "#9"}, "east": {"uv": [0, 0, 3, 0.5], "rotation": 270, "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "rotation": 270, "texture": "#1"}, "west": {"uv": [0, 0, 3, 0.5], "rotation": 270, "texture": "#1"}, "up": {"uv": [0, 0, 0.5, 5], "rotation": 270, "texture": "#1"}, "down": {"uv": [0, 0, 0.5, 5], "rotation": 270, "texture": "#1"}}}], "groups": [{"name": "Formsignal_Haupt", "origin": [0, -80, 0], "color": 0, "children": [{"name": "wing2", "origin": [0, 11.5, -3.5], "color": 0, "children": [0, 1, 2, 3]}]}]} \ No newline at end of file +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "4": "opensignals:blocks/semaphore/semaphore" + }, + "elements": [ + { + "name": "wing2", + "from": [9, 0, 3.5], + "to": [13, 32, 4.5], + "faces": { + "north": {"uv": [0, 0.5, 16, 2.5], "rotation": 270, "texture": "#4"}, + "east": {"uv": [0, 6, 16, 6.5], "rotation": 90, "texture": "#4"}, + "south": {"uv": [0, 3.5, 16, 5.5], "rotation": 270, "texture": "#4"}, + "west": {"uv": [0, 8.5, 16, 9], "rotation": 90, "texture": "#4"}, + "up": {"uv": [15.5, 6.5, 16, 8.5], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 6.5, 0.5, 8.5], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "wing2", + "from": [13, 27, 3.5], + "to": [14, 31, 4.5], + "faces": { + "north": {"uv": [13.5, 0, 15.5, 0.5], "rotation": 270, "texture": "#4"}, + "east": {"uv": [12.5, 9.5, 14.5, 10], "rotation": 90, "texture": "#4"}, + "south": {"uv": [13.5, 3, 15.5, 3.5], "rotation": 90, "texture": "#4"}, + "up": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"}, + "down": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "wing2", + "from": [8, 27, 3.5], + "to": [9, 31, 4.5], + "faces": { + "north": {"uv": [13.5, 2.5, 15.5, 3], "rotation": 270, "texture": "#4"}, + "south": {"uv": [13.5, 5.5, 15.5, 6], "rotation": 90, "texture": "#4"}, + "west": {"uv": [12.5, 9.5, 14.5, 10], "rotation": 90, "texture": "#4"}, + "up": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"}, + "down": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Haupt", + "origin": [0, -80, 0], + "color": 0, + "children": [ + { + "name": "wing2", + "origin": [0, 11.5, -3.5], + "color": 0, + "children": [0, 1, 2] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2_lamp.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2_lamp.json new file mode 100644 index 000000000..d00195935 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2_lamp.json @@ -0,0 +1,35 @@ +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "9": "opensignals:blocks/semaphore/lamps_shield_half", + "particle": "opensignals:blocks/semaphore/lamps_shield_half" + }, + "elements": [ + { + "name": "shield", + "from": [-4.42893, 0.32233, 5.4], + "to": [5.57107, 6.32233, 5.4], + "rotation": {"angle": -45, "axis": "z", "origin": [0, 0, 0]}, + "faces": { + "north": {"uv": [0, 0, 10, 6], "texture": "#9"}, + "south": {"uv": [0, 0, 10, 6], "rotation": 180, "texture": "#9"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Haupt", + "origin": [0, -80, 0], + "color": 0, + "children": [ + { + "name": "wing2", + "origin": [0, 11.5, -3.5], + "color": 0, + "children": [0] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2_on.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2_on.json deleted file mode 100644 index 2ca9c7036..000000000 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2_on.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"1": "opensignals:blocks/default/shield_black", "4": "opensignals:blocks/semaphore/semaphore", "9": "opensignals:blocks/semaphore/semaphore_lamps2"}, "elements": [{"name": "wing2", "from": [9, 0, 3.5], "to": [13, 32, 4.5], "rotation": {"angle": 45, "axis": "z", "origin": [11, 8.5, 3]}, "faces": {"north": {"uv": [0, 0.5, 16, 2.5], "rotation": 270, "texture": "#4"}, "east": {"uv": [0, 6, 16, 6.5], "rotation": 90, "texture": "#4"}, "south": {"uv": [0, 3.5, 16, 5.5], "rotation": 270, "texture": "#4"}, "west": {"uv": [0, 8.5, 16, 9], "rotation": 90, "texture": "#4"}, "up": {"uv": [15.5, 6.5, 16, 8.5], "rotation": 90, "texture": "#4"}, "down": {"uv": [0, 6.5, 0.5, 8.5], "rotation": 90, "texture": "#4"}}}, {"name": "wing2", "from": [13, 27, 3.5], "to": [14, 31, 4.5], "rotation": {"angle": 45, "axis": "z", "origin": [11, 8.5, 3]}, "faces": {"north": {"uv": [13.5, 0, 15.5, 0.5], "rotation": 270, "texture": "#4"}, "east": {"uv": [12.5, 9.5, 14.5, 10], "rotation": 90, "texture": "#4"}, "south": {"uv": [13.5, 3, 15.5, 3.5], "rotation": 90, "texture": "#4"}, "up": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"}, "down": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"}}}, {"name": "wing2", "from": [8, 27, 3.5], "to": [9, 31, 4.5], "rotation": {"angle": 45, "axis": "z", "origin": [11, 8.5, 3]}, "faces": {"north": {"uv": [13.5, 2.5, 15.5, 3], "rotation": 270, "texture": "#4"}, "south": {"uv": [13.5, 5.5, 15.5, 6], "rotation": 90, "texture": "#4"}, "west": {"uv": [12.5, 9.5, 14.5, 10], "rotation": 90, "texture": "#4"}, "up": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"}, "down": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"}}}, {"name": "shield", "from": [-8.42893, 0.32233, 4.5], "to": [1.57107, 6.32233, 5.5], "rotation": {"angle": -45, "axis": "z", "origin": [0, 0, 0]}, "faces": {"north": {"uv": [0, 0, 10, 6], "texture": "#9"}, "east": {"uv": [0, 0, 3, 0.5], "rotation": 270, "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "rotation": 270, "texture": "#1"}, "west": {"uv": [0, 0, 3, 0.5], "rotation": 270, "texture": "#1"}, "up": {"uv": [0, 0, 0.5, 5], "rotation": 270, "texture": "#1"}, "down": {"uv": [0, 0, 0.5, 5], "rotation": 270, "texture": "#1"}}}], "groups": [{"name": "Formsignal_Haupt", "origin": [0, -80, 0], "color": 0, "children": [{"name": "wing2", "origin": [0, 11.5, -3.5], "color": 0, "children": [0, 1, 2, 3]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2_small.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2_small.json new file mode 100644 index 000000000..c6cdc19c9 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2_small.json @@ -0,0 +1,61 @@ +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "4": "opensignals:blocks/semaphore/semaphore" + }, + "elements": [ + { + "name": "wing2", + "from": [9, 0, 3.5], + "to": [13, 32, 4.5], + "faces": { + "north": {"uv": [0, 0.5, 16, 2.5], "rotation": 270, "texture": "#4"}, + "east": {"uv": [0, 6, 16, 6.5], "rotation": 90, "texture": "#4"}, + "south": {"uv": [0, 3.5, 16, 5.5], "rotation": 270, "texture": "#4"}, + "west": {"uv": [0, 8.5, 16, 9], "rotation": 90, "texture": "#4"}, + "up": {"uv": [15.5, 6.5, 16, 8.5], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 6.5, 0.5, 8.5], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "wing2", + "from": [13, 27, 3.5], + "to": [14, 31, 4.5], + "faces": { + "north": {"uv": [13.5, 0, 15.5, 0.5], "rotation": 270, "texture": "#4"}, + "east": {"uv": [12.5, 9.5, 14.5, 10], "rotation": 90, "texture": "#4"}, + "south": {"uv": [13.5, 3, 15.5, 3.5], "rotation": 90, "texture": "#4"}, + "up": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"}, + "down": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "wing2", + "from": [8, 27, 3.5], + "to": [9, 31, 4.5], + "faces": { + "north": {"uv": [13.5, 2.5, 15.5, 3], "rotation": 270, "texture": "#4"}, + "south": {"uv": [13.5, 5.5, 15.5, 6], "rotation": 90, "texture": "#4"}, + "west": {"uv": [12.5, 9.5, 14.5, 10], "rotation": 90, "texture": "#4"}, + "up": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"}, + "down": {"uv": [11.5, 9.5, 12, 10], "rotation": 90, "texture": "#4"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Haupt", + "origin": [0, -80, 0], + "color": 0, + "children": [ + { + "name": "wing2", + "origin": [0, 11.5, -3.5], + "color": 0, + "children": [0, 1, 2] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2_small_lamp.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2_small_lamp.json new file mode 100644 index 000000000..d00195935 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_main_wing2_small_lamp.json @@ -0,0 +1,35 @@ +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "9": "opensignals:blocks/semaphore/lamps_shield_half", + "particle": "opensignals:blocks/semaphore/lamps_shield_half" + }, + "elements": [ + { + "name": "shield", + "from": [-4.42893, 0.32233, 5.4], + "to": [5.57107, 6.32233, 5.4], + "rotation": {"angle": -45, "axis": "z", "origin": [0, 0, 0]}, + "faces": { + "north": {"uv": [0, 0, 10, 6], "texture": "#9"}, + "south": {"uv": [0, 0, 10, 6], "rotation": 180, "texture": "#9"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Haupt", + "origin": [0, -80, 0], + "color": 0, + "children": [ + { + "name": "wing2", + "origin": [0, 11.5, -3.5], + "color": 0, + "children": [0] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_mainsmall_mast2_hp2.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_mainsmall_mast2_hp2.json index 382b85ce6..86477982d 100644 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_mainsmall_mast2_hp2.json +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_mainsmall_mast2_hp2.json @@ -1 +1,91 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"0": "opensignals:blocks/default/mast", "1": "opensignals:blocks/default/shield_black", "2": "opensignals:blocks/default/shield_gray"}, "elements": [{"name": "wire_wing2", "from": [11, 0, 8.25], "to": [11.5, 11, 8.75], "faces": {"north": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}, "east": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}, "south": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}, "west": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}}}, {"name": "mast", "from": [10.5, 8, 6.5], "to": [12, 9, 9], "faces": {"north": {"uv": [0, 0, 0.75, 0.5], "texture": "#1"}, "east": {"uv": [0, 0, 1.25, 0.5], "texture": "#1"}, "south": {"uv": [0, 0, 0.75, 0.5], "texture": "#1"}, "west": {"uv": [0, 0, 1.25, 0.5], "texture": "#1"}, "up": {"uv": [0, 0, 0.75, 1.25], "texture": "#1"}, "down": {"uv": [0, 0, 0.75, 1.25], "texture": "#1"}}}, {"name": "mast", "from": [10.5, 8, 2.5], "to": [11.5, 9, 5.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}}}, {"name": "lamp", "from": [3.5, 3, 6.5], "to": [8.5, 5, 8.5], "faces": {"north": {"uv": [0, 0, 3, 5], "texture": "#1"}, "east": {"uv": [0, 0, 3, 5], "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, "west": {"uv": [0, 0, 3, 5], "texture": "#1"}, "up": {"uv": [0, 0, 3, 5], "texture": "#1"}, "down": {"uv": [0, 0, 3, 5], "texture": "#1"}}}, {"name": "lamp", "from": [-0.5, 2, 5.5], "to": [3.5, 6, 9.5], "faces": {"north": {"uv": [0, 0, 2, 2], "texture": "#1"}, "east": {"uv": [0, 0, 2, 2], "texture": "#1"}, "south": {"uv": [0, 0, 2, 2], "texture": "#1"}, "west": {"uv": [0, 0, 2, 2], "texture": "#1"}, "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, "down": {"uv": [0, 0, 2, 2], "texture": "#1"}}}], "groups": [{"name": "Formsignal_Haupt", "origin": [0, -80, 0], "color": 0, "children": [{"name": "mast5_hp2", "origin": [0, -80, 0], "color": 0, "children": [0, 1, 2, 3, 4]}]}]} \ No newline at end of file +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "0": "opensignals:blocks/default/mast", + "1": "opensignals:blocks/default/shield_black", + "2": "opensignals:blocks/default/shield_gray", + "particle": "opensignals:blocks/semaphore/lamp_off", + "lamp": "opensignals:blocks/semaphore/lamp_off" + }, + "elements": [ + { + "name": "wire_wing2", + "from": [11, 0, 8.25], + "to": [11.5, 11, 8.75], + "faces": { + "north": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}, + "east": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}, + "south": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"}, + "west": {"uv": [0, 0, 0.25, 5.5], "texture": "#2"} + } + }, + { + "name": "mast", + "from": [10.5, 8, 6.5], + "to": [12, 9, 9], + "faces": { + "north": {"uv": [0, 0, 0.75, 0.5], "texture": "#1"}, + "east": {"uv": [0, 0, 1.25, 0.5], "texture": "#1"}, + "south": {"uv": [0, 0, 0.75, 0.5], "texture": "#1"}, + "west": {"uv": [0, 0, 1.25, 0.5], "texture": "#1"}, + "up": {"uv": [0, 0, 0.75, 1.25], "texture": "#1"}, + "down": {"uv": [0, 0, 0.75, 1.25], "texture": "#1"} + } + }, + { + "name": "mast", + "from": [10.5, 8, 2.5], + "to": [11.5, 9, 5.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"} + } + }, + { + "name": "lamp", + "from": [3.5, 3, 6.5], + "to": [8.5, 5, 8.5], + "faces": { + "north": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "east": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "west": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "up": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "down": {"uv": [0, 0, 3, 5], "texture": "#1"} + } + }, + { + "name": "lamp", + "from": [-0.5, 2, 5.5], + "to": [3.5, 6, 9.5], + "faces": { + "north": {"uv": [0, 0, 4, 4], "texture": "#lamp"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Haupt", + "origin": [0, -80, 0], + "color": 0, + "children": [ + { + "name": "mast5_hp2", + "origin": [0, -80, 0], + "color": 0, + "children": [0, 1, 2, 3, 4] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_mainsmall_mast4.json b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_mainsmall_mast4.json index dd91d7d70..eb27a2da5 100644 --- a/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_mainsmall_mast4.json +++ b/src/main/resources/assets/opensignals/models/block/semaphore_signals/sema_mainsmall_mast4.json @@ -1 +1,590 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"0": "opensignals:blocks/default/mast", "1": "opensignals:blocks/default/shield_black", "2": "opensignals:blocks/default/shield_gray"}, "elements": [{"name": "mast", "from": [12.5, 0, 5.5], "to": [13.5, 13, 6.5], "faces": {"north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 0, 5.5], "to": [9.5, 13, 6.5], "faces": {"north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 0, 9.5], "to": [9.5, 13, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 13, 5.5], "to": [13.5, 16, 10.5], "faces": {"north": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, "east": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, "south": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, "west": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, "up": {"uv": [0, 0, 2.5, 2.5], "texture": "#0"}, "down": {"uv": [0, 0, 2.5, 2.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 0, 9.5], "to": [13.5, 13, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}}}, {"name": "mast", "from": [9.5, 0, 5.5], "to": [10.5, 1, 6.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [9.5, 2, 5.5], "to": [10.5, 3, 6.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [10.5, 3, 5.5], "to": [11.5, 4, 6.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [11.5, 4, 5.5], "to": [12.5, 5, 6.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [9.5, 6, 5.5], "to": [12.5, 13, 6.5], "faces": {"north": {"uv": [0, 0, 1.5, 3.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 3.5], "texture": "#0"}, "south": {"uv": [0, 0, 1.5, 3.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 3.5], "texture": "#0"}, "up": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 12, 8.5], "to": [9.5, 13, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 11, 7.5], "to": [9.5, 12, 8.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 10, 6.5], "to": [9.5, 11, 7.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 8, 6.5], "to": [9.5, 9, 7.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 7, 7.5], "to": [9.5, 8, 8.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 6, 8.5], "to": [9.5, 7, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 2, 6.5], "to": [9.5, 5, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, "east": {"uv": [0, 0, 1.5, 1.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, "west": {"uv": [0, 0, 1.5, 1.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}}}, {"name": "mast", "from": [8.5, 0, 6.5], "to": [9.5, 1, 7.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [11.5, 0, 9.5], "to": [12.5, 1, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [11.5, 2, 9.5], "to": [12.5, 3, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [10.5, 3, 9.5], "to": [11.5, 4, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [9.5, 4, 9.5], "to": [10.5, 5, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [9.5, 6, 9.5], "to": [10.5, 7, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [10.5, 7, 9.5], "to": [11.5, 8, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [11.5, 8, 9.5], "to": [12.5, 9, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [11.5, 10, 9.5], "to": [12.5, 11, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [10.5, 11, 9.5], "to": [11.5, 12, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [9.5, 12, 9.5], "to": [10.5, 13, 10.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 12, 6.5], "to": [13.5, 13, 7.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 11, 7.5], "to": [13.5, 12, 8.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 10, 8.5], "to": [13.5, 11, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 8, 8.5], "to": [13.5, 9, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [10.5, 8.5, 2.5], "to": [11.5, 9.5, 5.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 7, 7.5], "to": [13.5, 8, 8.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 6, 6.5], "to": [13.5, 7, 7.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 4, 6.5], "to": [13.5, 5, 7.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 3, 7.5], "to": [13.5, 4, 8.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 2, 8.5], "to": [13.5, 3, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "mast", "from": [12.5, 0, 8.5], "to": [13.5, 1, 9.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}}}, {"name": "bracket_wire_wing1", "from": [13.5, 3, 7.5], "to": [15.5, 4, 8.5], "faces": {"north": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "south": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, "up": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, "down": {"uv": [0, 0, 1, 0.5], "texture": "#0"}}}, {"name": "bracket_wire_wing1", "from": [14.25, 8.5, 4.5], "to": [15.25, 9.5, 8.5], "faces": {"north": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, "east": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, "west": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, "up": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, "down": {"uv": [0, 0, 0.5, 2], "texture": "#1"}}}, {"name": "wire_wing1", "from": [14.5, 0, 7.75], "to": [15, 9, 8.25], "faces": {"north": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}, "east": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}, "south": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}, "west": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}}}, {"name": "lamp", "from": [-0.5, 1, 5.5], "to": [3.5, 5, 9.5], "faces": {"north": {"uv": [0, 0, 2, 2], "texture": "#1"}, "east": {"uv": [0, 0, 2, 2], "texture": "#1"}, "south": {"uv": [0, 0, 2, 2], "texture": "#1"}, "west": {"uv": [0, 0, 2, 2], "texture": "#1"}, "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, "down": {"uv": [0, 0, 2, 2], "texture": "#1"}}}, {"name": "lamp", "from": [3.5, 2, 6.5], "to": [8.5, 4, 8.5], "faces": {"north": {"uv": [0, 0, 3, 5], "texture": "#1"}, "east": {"uv": [0, 0, 3, 5], "texture": "#1"}, "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, "west": {"uv": [0, 0, 3, 5], "texture": "#1"}, "up": {"uv": [0, 0, 3, 5], "texture": "#1"}, "down": {"uv": [0, 0, 3, 5], "texture": "#1"}}}], "groups": [{"name": "Formsignal_Haupt", "origin": [0, -112, 0], "color": 0, "children": [{"name": "mast7", "origin": [0, -16, 0], "color": 0, "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43]}]}]} \ No newline at end of file +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "0": "opensignals:blocks/default/mast", + "1": "opensignals:blocks/default/shield_black", + "2": "opensignals:blocks/default/shield_gray", + "particle": "opensignals:blocks/semaphore/lamp_red", + "lamp": "opensignals:blocks/semaphore/lamp_red" + }, + "elements": [ + { + "name": "mast", + "from": [12.5, 0, 5.5], + "to": [13.5, 13, 6.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 0, 5.5], + "to": [9.5, 13, 6.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 0, 9.5], + "to": [9.5, 13, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 13, 5.5], + "to": [13.5, 16, 10.5], + "faces": { + "north": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, + "east": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, + "south": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, + "west": {"uv": [0, 0, 2.5, 1.5], "texture": "#0"}, + "up": {"uv": [0, 0, 2.5, 2.5], "texture": "#0"}, + "down": {"uv": [0, 0, 2.5, 2.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 0, 9.5], + "to": [13.5, 13, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 6.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [9.5, 0, 5.5], + "to": [10.5, 1, 6.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [9.5, 2, 5.5], + "to": [10.5, 3, 6.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [10.5, 3, 5.5], + "to": [11.5, 4, 6.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [11.5, 4, 5.5], + "to": [12.5, 5, 6.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [9.5, 6, 5.5], + "to": [12.5, 13, 6.5], + "faces": { + "north": {"uv": [0, 0, 1.5, 3.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 3.5], "texture": "#0"}, + "south": {"uv": [0, 0, 1.5, 3.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 3.5], "texture": "#0"}, + "up": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 12, 8.5], + "to": [9.5, 13, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 11, 7.5], + "to": [9.5, 12, 8.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 10, 6.5], + "to": [9.5, 11, 7.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 8, 6.5], + "to": [9.5, 9, 7.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 7, 7.5], + "to": [9.5, 8, 8.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 6, 8.5], + "to": [9.5, 7, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 2, 6.5], + "to": [9.5, 5, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, + "east": {"uv": [0, 0, 1.5, 1.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, + "west": {"uv": [0, 0, 1.5, 1.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [8.5, 0, 6.5], + "to": [9.5, 1, 7.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [11.5, 0, 9.5], + "to": [12.5, 1, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [11.5, 2, 9.5], + "to": [12.5, 3, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [10.5, 3, 9.5], + "to": [11.5, 4, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [9.5, 4, 9.5], + "to": [10.5, 5, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [9.5, 6, 9.5], + "to": [10.5, 7, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [10.5, 7, 9.5], + "to": [11.5, 8, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [11.5, 8, 9.5], + "to": [12.5, 9, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [11.5, 10, 9.5], + "to": [12.5, 11, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [10.5, 11, 9.5], + "to": [11.5, 12, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [9.5, 12, 9.5], + "to": [10.5, 13, 10.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 12, 6.5], + "to": [13.5, 13, 7.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 11, 7.5], + "to": [13.5, 12, 8.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 10, 8.5], + "to": [13.5, 11, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 8, 8.5], + "to": [13.5, 9, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [10.5, 8.5, 2.5], + "to": [11.5, 9.5, 5.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 1.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 1.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 7, 7.5], + "to": [13.5, 8, 8.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 6, 6.5], + "to": [13.5, 7, 7.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 4, 6.5], + "to": [13.5, 5, 7.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 3, 7.5], + "to": [13.5, 4, 8.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 2, 8.5], + "to": [13.5, 3, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [12.5, 0, 8.5], + "to": [13.5, 1, 9.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"} + } + }, + { + "name": "bracket_wire_wing1", + "from": [13.5, 3, 7.5], + "to": [15.5, 4, 8.5], + "faces": { + "north": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 0.5], "texture": "#0"} + } + }, + { + "name": "bracket_wire_wing1", + "from": [14.25, 8.5, 4.5], + "to": [15.25, 9.5, 8.5], + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, + "east": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 2], "texture": "#1"} + } + }, + { + "name": "wire_wing1", + "from": [14.5, 0, 7.75], + "to": [15, 9, 8.25], + "faces": { + "north": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}, + "east": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}, + "south": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"}, + "west": {"uv": [0, 0, 0.25, 4.5], "texture": "#2"} + } + }, + { + "name": "lamp", + "from": [-0.5, 1, 5.5], + "to": [3.5, 5, 9.5], + "faces": { + "north": {"uv": [0, 0, 4, 4], "texture": "#lamp"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + }, + { + "name": "lamp", + "from": [3.5, 2, 6.5], + "to": [8.5, 4, 8.5], + "faces": { + "north": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "east": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "south": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "west": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "up": {"uv": [0, 0, 3, 5], "texture": "#1"}, + "down": {"uv": [0, 0, 3, 5], "texture": "#1"} + } + } + ], + "groups": [ + { + "name": "Formsignal_Haupt", + "origin": [0, -112, 0], + "color": 0, + "children": [ + { + "name": "mast7", + "origin": [0, -16, 0], + "color": 0, + "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/sh/sh0_mech.json b/src/main/resources/assets/opensignals/models/block/sh/sh0_mech.json deleted file mode 100644 index 24827c68d..000000000 --- a/src/main/resources/assets/opensignals/models/block/sh/sh0_mech.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"0": "opensignals:blocks/default/shield_black", "1": "opensignals:blocks/default/mast", "2": "opensignals:blocks/sh/sh", "particle": "opensignals:blocks/default/shield_black"}, "elements": [{"name": "body", "from": [3, 2, 5], "to": [13, 12, 11], "faces": {"north": {"uv": [0, 0, 10, 10], "texture": "#0"}, "east": {"uv": [0, 0, 3, 5], "texture": "#0"}, "south": {"uv": [0, 0, 5, 5], "texture": "#0"}, "west": {"uv": [0, 0, 3, 5], "texture": "#0"}, "up": {"uv": [0, 0, 5, 3], "texture": "#0"}, "down": {"uv": [0, 0, 5, 3], "texture": "#0"}}}, {"name": "mast", "from": [7, 0, 7], "to": [9, 2, 9], "faces": {"north": {"uv": [0, 0, 1, 1], "texture": "#1"}, "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, "south": {"uv": [0, 0, 1, 1], "texture": "#1"}, "west": {"uv": [0, 0, 1, 1], "texture": "#1"}}}, {"name": "sh", "from": [4, 3, 4.9], "to": [12, 11, 4.9], "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 5]}, "faces": {"north": {"uv": [0, 0, 16, 16], "texture": "#2"}}}], "groups": [{"name": "body", "origin": [8, 7, 5], "color": 0, "children": [0, 1]}, {"name": "sh", "origin": [8, 7, 5], "color": 0, "children": [2]}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/sh/sh1_gsp2_mech.json b/src/main/resources/assets/opensignals/models/block/sh/sh1_gsp2_mech.json deleted file mode 100644 index b6003d724..000000000 --- a/src/main/resources/assets/opensignals/models/block/sh/sh1_gsp2_mech.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"0": "opensignals:blocks/default/shield_black", "1": "opensignals:blocks/default/mast", "2": "opensignals:blocks/sh/sh", "particle": "opensignals:blocks/default/shield_black"}, "elements": [{"name": "body", "from": [3, 2, 5], "to": [13, 12, 11], "faces": {"north": {"uv": [0, 0, 10, 10], "texture": "#0"}, "east": {"uv": [0, 0, 3, 5], "texture": "#0"}, "south": {"uv": [0, 0, 5, 5], "texture": "#0"}, "west": {"uv": [0, 0, 3, 5], "texture": "#0"}, "up": {"uv": [0, 0, 5, 3], "texture": "#0"}, "down": {"uv": [0, 0, 5, 3], "texture": "#0"}}}, {"name": "mast", "from": [7, 0, 7], "to": [9, 2, 9], "faces": {"north": {"uv": [0, 0, 1, 1], "texture": "#1"}, "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, "south": {"uv": [0, 0, 1, 1], "texture": "#1"}, "west": {"uv": [0, 0, 1, 1], "texture": "#1"}}}, {"name": "sh", "from": [4, 3, 4.9], "to": [12, 11, 4.9], "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 5]}, "faces": {"north": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#2"}}}], "groups": [{"name": "body", "origin": [8, 7, 5], "color": 0, "children": [0, 1]}, {"name": "sh", "origin": [8, 7, 5], "color": 0, "children": [2]}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/sh/sh1_mech.json b/src/main/resources/assets/opensignals/models/block/sh/sh1_mech.json deleted file mode 100644 index 5f10425ad..000000000 --- a/src/main/resources/assets/opensignals/models/block/sh/sh1_mech.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"0": "opensignals:blocks/default/shield_black", "1": "opensignals:blocks/default/mast", "2": "opensignals:blocks/sh/sh", "particle": "opensignals:blocks/default/shield_black"}, "elements": [{"name": "body", "from": [3, 2, 5], "to": [13, 12, 11], "faces": {"north": {"uv": [0, 0, 10, 10], "texture": "#0"}, "east": {"uv": [0, 0, 3, 5], "texture": "#0"}, "south": {"uv": [0, 0, 5, 5], "texture": "#0"}, "west": {"uv": [0, 0, 3, 5], "texture": "#0"}, "up": {"uv": [0, 0, 5, 3], "texture": "#0"}, "down": {"uv": [0, 0, 5, 3], "texture": "#0"}}}, {"name": "mast", "from": [7, 0, 7], "to": [9, 2, 9], "faces": {"north": {"uv": [0, 0, 1, 1], "texture": "#1"}, "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, "south": {"uv": [0, 0, 1, 1], "texture": "#1"}, "west": {"uv": [0, 0, 1, 1], "texture": "#1"}}}, {"name": "sh", "from": [4, 3, 4.9], "to": [12, 11, 4.9], "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 5]}, "faces": {"north": {"uv": [0, 0, 16, 16], "texture": "#2"}}}], "groups": [{"name": "body", "origin": [8, 7, 5], "color": 0, "children": [0, 1]}, {"name": "sh", "origin": [8, 7, 5], "color": 0, "children": [2]}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/sh/sh_mech.json b/src/main/resources/assets/opensignals/models/block/sh/sh_mech.json new file mode 100644 index 000000000..13bab9028 --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/sh/sh_mech.json @@ -0,0 +1,50 @@ +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "0": "opensignals:blocks/default/shield_black", + "1": "opensignals:blocks/default/mast", + "2": "opensignals:blocks/sh/shield_mech", + "particle": "opensignals:blocks/default/shield_black" + }, + "elements": [ + { + "name": "body", + "from": [3, 2, 5], + "to": [13, 12, 11], + "faces": { + "north": {"uv": [3, 3, 13, 13], "texture": "#2"}, + "east": {"uv": [0, 0, 3, 5], "texture": "#0"}, + "south": {"uv": [0, 0, 5, 5], "texture": "#0"}, + "west": {"uv": [0, 0, 3, 5], "texture": "#0"}, + "up": {"uv": [0, 0, 5, 3], "texture": "#0"}, + "down": {"uv": [0, 0, 5, 3], "texture": "#0"} + } + }, + { + "name": "mast", + "from": [7, 0, 7], + "to": [9, 2, 9], + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + } + ], + "groups": [ + { + "name": "body", + "origin": [8, 7, 5], + "color": 0, + "children": [0, 1] + }, + { + "name": "sh", + "origin": [8, 7, 5], + "color": 0, + "children": [] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/sh/sh_mech_sh.json b/src/main/resources/assets/opensignals/models/block/sh/sh_mech_sh.json new file mode 100644 index 000000000..a4f0a103d --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/sh/sh_mech_sh.json @@ -0,0 +1,27 @@ +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "2": "opensignals:blocks/sh/sh", + "particle": "opensignals:blocks/sh/sh" + }, + "elements": [ + { + "name": "sh", + "from": [3.5, 3, 4.9], + "to": [12.5, 11, 4.9], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 5]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#2"} + } + } + ], + "groups": [ + { + "name": "sh", + "origin": [8, 7, 5], + "color": 0, + "children": [0] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/models/block/sh/sh_mech_sh_high.json b/src/main/resources/assets/opensignals/models/block/sh/sh_mech_sh_high.json new file mode 100644 index 000000000..a4f0a103d --- /dev/null +++ b/src/main/resources/assets/opensignals/models/block/sh/sh_mech_sh_high.json @@ -0,0 +1,27 @@ +{ + "credit": "Made with Blockbench by Mc_Jeronimo", + "texture_size": [32, 32], + "textures": { + "2": "opensignals:blocks/sh/sh", + "particle": "opensignals:blocks/sh/sh" + }, + "elements": [ + { + "name": "sh", + "from": [3.5, 3, 4.9], + "to": [12.5, 11, 4.9], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 5]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#2"} + } + } + ], + "groups": [ + { + "name": "sh", + "origin": [8, 7, 5], + "color": 0, + "children": [0] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_green.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_green.png new file mode 100644 index 000000000..e08c547da Binary files /dev/null and b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_green.png differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_green_e.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_green_e.png new file mode 100644 index 000000000..8d38f13e6 Binary files /dev/null and b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_green_e.png differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_off.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_off.png new file mode 100644 index 000000000..f4e7b8fd6 Binary files /dev/null and b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_off.png differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_red.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_red.png new file mode 100644 index 000000000..cf1001c6b Binary files /dev/null and b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_red.png differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_red_e.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_red_e.png new file mode 100644 index 000000000..7794eca07 Binary files /dev/null and b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_red_e.png differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_yellow.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_yellow.png new file mode 100644 index 000000000..2fd4a66a0 Binary files /dev/null and b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_yellow.png differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_yellow_e.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_yellow_e.png new file mode 100644 index 000000000..727dba681 Binary files /dev/null and b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamp_yellow_e.png differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamps_shield_half.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamps_shield_half.png new file mode 100644 index 000000000..6413a42d2 Binary files /dev/null and b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamps_shield_half.png differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamps_shield_off.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamps_shield_off.png new file mode 100644 index 000000000..3afed3a63 Binary files /dev/null and b/src/main/resources/assets/opensignals/textures/blocks/semaphore/lamps_shield_off.png differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps1_green.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps1_green.png deleted file mode 100644 index 3c13065ec..000000000 Binary files a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps1_green.png and /dev/null differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps1_green_e.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps1_green_e.png deleted file mode 100644 index 3cd6ecc11..000000000 Binary files a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps1_green_e.png and /dev/null differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps1_red.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps1_red.png deleted file mode 100644 index 8c8750912..000000000 Binary files a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps1_red.png and /dev/null differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps1_red_e.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps1_red_e.png deleted file mode 100644 index 3571480f4..000000000 Binary files a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps1_red_e.png and /dev/null differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps2.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps2.png deleted file mode 100644 index 06b0456c1..000000000 Binary files a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps2.png and /dev/null differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps2_dark.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps2_dark.png deleted file mode 100644 index e7f3dd251..000000000 Binary files a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps2_dark.png and /dev/null differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps2_e.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps2_e.png deleted file mode 100644 index 06b0456c1..000000000 Binary files a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps2_e.png and /dev/null differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps3_green.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps3_green.png deleted file mode 100644 index 50796aa0a..000000000 Binary files a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps3_green.png and /dev/null differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps3_green_e.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps3_green_e.png deleted file mode 100644 index 59a130b9a..000000000 Binary files a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps3_green_e.png and /dev/null differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps3_yellow.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps3_yellow.png deleted file mode 100644 index 2b7b64993..000000000 Binary files a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps3_yellow.png and /dev/null differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps3_yellow_e.png b/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps3_yellow_e.png deleted file mode 100644 index aed099ee9..000000000 Binary files a/src/main/resources/assets/opensignals/textures/blocks/semaphore/semaphore_lamps3_yellow_e.png and /dev/null differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/sh/sh.png b/src/main/resources/assets/opensignals/textures/blocks/sh/sh.png index 1b6c089cc..8ddcd8661 100644 Binary files a/src/main/resources/assets/opensignals/textures/blocks/sh/sh.png and b/src/main/resources/assets/opensignals/textures/blocks/sh/sh.png differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_e.png b/src/main/resources/assets/opensignals/textures/blocks/sh/sh_e.png deleted file mode 100644 index 1b6c089cc..000000000 Binary files a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_e.png and /dev/null differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/sh/shield_mech.png b/src/main/resources/assets/opensignals/textures/blocks/sh/shield_mech.png new file mode 100644 index 000000000..ca304451f Binary files /dev/null and b/src/main/resources/assets/opensignals/textures/blocks/sh/shield_mech.png differ diff --git a/src/main/resources/assets/opensignals/textures/blocks/sh/shield_mech_e.png b/src/main/resources/assets/opensignals/textures/blocks/sh/shield_mech_e.png new file mode 100644 index 000000000..1db3c7a7d Binary files /dev/null and b/src/main/resources/assets/opensignals/textures/blocks/sh/shield_mech_e.png differ