W.I.P. Diagonal scaffolds, partly working

This commit is contained in:
melchior 2021-05-27 19:53:44 -04:00
parent 3b852ac5dd
commit 66ba8061c1
11 changed files with 316 additions and 116 deletions

View file

@ -24,7 +24,7 @@ namespace ConstructionSupport
{
CoreAPI.RegisterBlockClass(DeckworkHorizontalBlock.BlockClassName, typeof(DeckworkHorizontalBlock));
CoreAPI.RegisterBlockClass(DeckworkCornerBlock.BlockClassName, typeof(DeckworkCornerBlock));
CoreAPI.RegisterBlockClass(TrussBlock.BlockClassName, typeof(TrussBlock));
//CoreAPI.RegisterBlockClass(TrussBlock.BlockClassName, typeof(TrussBlock));
}

View file

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using Vintagestory.API.Common;
using Vintagestory.API.Common.Entities;
using Vintagestory.API.MathTools;
namespace ConstructionSupport
@ -55,12 +56,12 @@ namespace ConstructionSupport
}
}
public override bool CanCreatureSpawnOn(IBlockAccessor blockAccessor, BlockPos pos, Vintagestory.API.Common.Entities.EntityProperties type, Vintagestory.API.Common.Entities.BaseSpawnConditions sc)
public override bool CanCreatureSpawnOn(IBlockAccessor blockAccessor, BlockPos pos, EntityProperties type, BaseSpawnConditions sc)
{
return false;//Never, anything.
}
protected bool IsHardSurface(IBlockAccessor world, Block checkBlock, BlockPos checkPos, BlockFacing checkFace)
public bool IsHardSurface(IBlockAccessor world, Block checkBlock, BlockPos checkPos, BlockFacing checkFace)
{
if (checkBlock != null && checkBlock.MatterState == EnumMatterState.Solid &&
(
@ -70,6 +71,7 @@ namespace ConstructionSupport
checkBlock.BlockMaterial == EnumBlockMaterial.Ore ||
checkBlock.BlockMaterial == EnumBlockMaterial.Other ||
checkBlock.BlockMaterial == EnumBlockMaterial.Stone ||
checkBlock.BlockMaterial == EnumBlockMaterial.Metal ||
checkBlock.BlockMaterial == EnumBlockMaterial.Wood
))
{
@ -80,6 +82,35 @@ namespace ConstructionSupport
return false;
}
public bool CheckCornerSolid(IBlockAccessor world, BlockPos checkPos )
{
//Visit all diagonal combinations
Stack<BlockPos> checkList = new Stack<BlockPos>( );
checkList.Push(checkPos.Copy( ).Add( 1, 1, 0));
checkList.Push(checkPos.Copy( ).Add( 1,-1, 0));
checkList.Push(checkPos.Copy( ).Add(-1, 1, 0));
checkList.Push(checkPos.Copy( ).Add(-1,-1, 0));
Block toCheck;
while (checkList.Count > 0 )
{
toCheck = world.GetBlock(checkList.Pop( ));
if (toCheck != null && toCheck.IsSolid()) return true;
}
return false;
}
public bool IsDeckwork(IBlockAccessor world, BlockPos checkPos)
{
var aBlock = world.GetBlock(checkPos);
if (aBlock != null && aBlock is GenericScaffold) {
return true;
}
return false;
}
protected BlockFacing OwnRotation
{
get

View file

@ -1,10 +1,18 @@
using System;
using System.Linq;
using Vintagestory.API.Client;
using Vintagestory.API.Common;
using Vintagestory.API.Config;
using Vintagestory.API.MathTools;
using Vintagestory.GameContent;
namespace ConstructionSupport
{
public class DeckworkCornerBlock: GenericScaffold
public class DeckworkCornerBlock : GenericScaffold
{
public static readonly string BlockClassName = @"DeckworkDiagonal";
public static readonly string BlockClassName = @"DeckworkCorner";
@ -14,13 +22,127 @@ namespace ConstructionSupport
/*
"deckwork_corner":
Diagonal corner N+E / S+W : MUST contact 1 "deckwork_horiz" > (brace)+Deck
--Must be in contact(NEWS) with 1 other "deckwork_horiz" (or 2, or more)
Diagonal corner N+W / N+E / S+W / S+E : MUST contact 1 other "deckwork_horiz" > (brace)+Deck
--Must be in contact(NEWS) with 1 other "deckwork_horiz" (or more)
--Directly below: AIR ONLY!
[If 'attached' face/block breaks - scaffold(s) break off surface too!]
[If 'attached' side-scafolds - block breaks off too!]
[If B.U.D. with solid (non-truss) block Above - scaffold(s) breaks !]
*/
public override bool TryPlaceBlock(IWorldAccessor world, IPlayer byPlayer, ItemStack itemstack, BlockSelection blockSel, ref string failureCode)
{
var placeSpot = blockSel.Position.AddCopy(blockSel.Face.Opposite, 1);
var lookSpot = blockSel.Position.Copy( ).Offset(blockSel.Face.Opposite);
var surfaceBlock = world.BlockAccessor.GetBlock(lookSpot);
if (base.ValidAttachmentFaces.Contains(blockSel.Face)) {
//of the 4 Corners - any 1 a solid block; AND attachment to deckwork on faces...
if (IsDeckwork(world.BlockAccessor, lookSpot)
&& CheckCornerSolid(world.BlockAccessor, placeSpot ))
{
#if DEBUG
api.World.Logger.VerboseDebug($"Success: {blockSel.Face} for {this.Code} onto {surfaceBlock.Code} @ {blockSel.Position}");
#endif
if (CanPlaceBlock(world, byPlayer, blockSel, ref failureCode)) {
return DoPlaceBlock(world, byPlayer, blockSel, itemstack);
}
}
}
#if DEBUG
api.World.Logger.VerboseDebug($"Attempt to place fails: {blockSel.Face} for {this.Code} onto {surfaceBlock.Code}");
#endif
failureCode = "surface_solid_diagonal";
return false;
}
public override bool DoPlaceBlock(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, ItemStack byItemStack)
{
bool result = true;
bool preventDefault = false;
foreach (BlockBehavior behavior in BlockBehaviors) {
EnumHandling handled = EnumHandling.PassThrough;
bool behaviorResult = behavior.DoPlaceBlock(world, byPlayer, blockSel, byItemStack, ref handled);
if (handled != EnumHandling.PassThrough) {
result &= behaviorResult;
preventDefault = true;
}
if (handled == EnumHandling.PreventSubsequent) return result;
}
if (preventDefault) return result;
var rotatedBlockId = RotateToFace(blockSel.Face.Opposite);
//Switcheroo!
world.BlockAccessor.SetBlock(rotatedBlockId.BlockId, blockSel.Position, byItemStack);
return true;
}
/// <summary>
/// Prevent most other 'normal' blocks from attaching to this.
/// </summary>
/// <returns>The <see cref="T:System.Boolean"/>.</returns>
/// <param name="world">World.</param>
/// <param name="block">Block.</param>
/// <param name="pos">Position.</param>
/// <param name="blockFace">Block face.</param>
public override bool CanAttachBlockAt(IBlockAccessor world, Block block, BlockPos pos, BlockFacing blockFace, Cuboidi attachmentArea)
{
if (block.HasBehavior<BlockBehaviorLadder>( )) return true;
#if DEBUG
api.World.Logger.VerboseDebug($"Reject Attach: {blockFace} for {this.Code} onto {block.Code} @ {pos}");
#endif
return false;
}
//If above block is unsupported/interfereing material; BREAK OFF!
public override void OnNeighbourBlockChange(IWorldAccessor world, BlockPos pos, BlockPos neibpos)
{
//Above: Dropping blocks cause breakage!
if (pos.Above(neibpos)) {
var blockAbove = api.World.BlockAccessor.GetBlock(neibpos);
if (blockAbove.IsGaseous( ) == false) {
if (blockAbove.RainPermeable
|| blockAbove.HasBehavior<BlockBehaviorLadder>( )
|| blockAbove.HasBehavior<BlockBehaviorOmniAttachable>( )
) return;
if (blockAbove.MaterialDensity > 200 || blockAbove.HasBehavior<BlockBehaviorUnstableFalling>( ))
world.BlockAccessor.BreakBlock(pos, null);
#if DEBUG
api.World.Logger.VerboseDebug($"Collapsing! {this.Code} because {blockAbove.Code} @ {pos}");
#endif
}
}
else
//Corner attached: Missing supports cause brakeage!
if (pos.OnSide(this.OwnRotation, neibpos)) {
var mabeyBlock = api.World.BlockAccessor.GetBlock(neibpos);
if (mabeyBlock == null || mabeyBlock.IsGaseous( ))
world.BlockAccessor.BreakBlock(pos, null);
#if DEBUG
api.World.Logger.VerboseDebug($"Lost support! V.Faces: {string.Join("+", this.ValidAttachmentFaces.Select(bf => bf.Code))} , Facing:{OwnRotation.Code}, Other:{(mabeyBlock == null ? "null" : mabeyBlock.BlockMaterial.ToString( ))}");
#endif
}
//Things below arn't considered.
}
}
}

View file

@ -31,12 +31,12 @@ namespace ConstructionSupport
public override bool TryPlaceBlock(IWorldAccessor world, IPlayer byPlayer, ItemStack itemstack, BlockSelection blockSel, ref string failureCode)
{
var surfaceBlock = world.BlockAccessor.GetBlock(blockSel.Position.Copy().Offset(blockSel.Face.GetOpposite()));
var surfaceBlock = world.BlockAccessor.GetBlock(blockSel.Position.Copy().Offset(blockSel.Face.Opposite));
if (base.ValidAttachmentFaces.Contains(blockSel.Face))
{
if (IsHardSurface(world.BlockAccessor, surfaceBlock, blockSel.Position, OwnRotation.GetOpposite()))
if (IsHardSurface(world.BlockAccessor, surfaceBlock, blockSel.Position, OwnRotation.Opposite))
{
#if DEBUG
@ -77,7 +77,7 @@ namespace ConstructionSupport
if (preventDefault) return result;
var rotatedBlockId = RotateToFace(blockSel.Face.GetOpposite());
var rotatedBlockId = RotateToFace(blockSel.Face.Opposite);
//Switcheroo!
world.BlockAccessor.SetBlock(rotatedBlockId.BlockId, blockSel.Position, byItemStack);

View file

@ -7,7 +7,7 @@
<OutputType>Library</OutputType>
<RootNamespace>ConstructionSupport</RootNamespace>
<AssemblyName>ConstructionSupport</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@ -20,7 +20,7 @@
<ConsolePause>false</ConsolePause>
<CustomCommands>
<CustomCommands>
<Command type="AfterBuild" command="7z -tzip a ${ProjectName}_${ProjectConfig}.zip" workingdir="${TargetDir}" />
<Command type="AfterBuild" command="7z a -tzip -x!*.zip -aoa ${ProjectName}_${ProjectConfig}.zip" workingdir="${TargetDir}" />
<Command type="AfterClean" command="rm -f *.zip" workingdir="${TargetDir}" />
</CustomCommands>
</CustomCommands>
@ -73,7 +73,6 @@
<Compile Include="Assignments.cs" />
<Compile Include="Blocks\DeckworkHorizontalBlock.cs" />
<Compile Include="Blocks\DeckworkCornerBlock.cs" />
<Compile Include="Blocks\TrussBlock.cs" />
<Compile Include="Blocks\Common\GenericScaffold.cs" />
<Compile Include="Blocks\Common\BlockHelpers.cs" />
</ItemGroup>
@ -93,7 +92,9 @@
<None Include="assets\fma\blocktypes\frames\deckwork_horiz.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="assets\fma\blocktypes\frames\deckwork_corner.json" />
<None Include="assets\fma\blocktypes\frames\deckwork_corner.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="assets\fma\blocktypes\frames\truss_vert.json" />
<None Include="assets\fma\recipes\grid\frames\deckwork_horiz.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
@ -104,6 +105,10 @@
<None Include="assets\fma\blocktypes\frames\bamboo_scaffold.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="assets\fma\textures\materials\rope_texture.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Blocks\TrussBlock.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="assets\" />

View file

@ -11,7 +11,7 @@
{ code:"side", loadFromProperties: "abstract/horizontalorientation" }
],
textures: {
"linen": { base: "game:block/linen"},
"rope": { base: "materials/rope_texture"},
"stem": { base: "game:block/plant/bamboo/stem-brown"}
},
creativeinventory: { "general": ["bamboo_scaffold-north"], "decorative": ["bamboo_scaffold-north"] },

View file

@ -1 +1,55 @@

{
code: "deckwork_corner",
class: "DeckworkCorner",
attributes: {
reinforcable: false,
canChisel: false,
handbook: {
groupBy: ["deckwork_corner-*"]
},
ValidAttachemtFaces: ["north","east", "south", "west"],
},
replaceable: 200,
resistance: 1.5,
blockmaterial: "Wood",
variantgroups: [
{ code: "corner", states: ["ne", "nw", "se", "sw"] }
],
creativeinventory: { "general": ["*-ne"], "construction": ["*-ne"] },
drops: [{ code: "deckwork_corner-ne" }],
shapebytype: {
"*-ne": { base: "block/frames/deckwork_diag", rotateY: 0 },
"*-nw": { base: "block/frames/deckwork_diag", rotateY: 90 },
"*-se": { base: "block/frames/deckwork_diag", rotateY: 180 },
"*-sw": { base: "block/frames/deckwork_diag", rotateY: 270 },
},
sideopaque: { all: false, up: true },
emitSideAo: {all: false, up: true },
textures: {
"ladder": { base: "game:block/wood/ladder" },
"generic": { base:"game:block/wood/planks/generic"}
},
selectionBox: { x1: 0, y1: 0.55, z1: 0, x2: 1, y2: 1, z2: 1 },
selectionBox: { x1: 0, y1: 0.55, z1: 0, x2: 1, y2: 1, z2: 1 },
sounds: {
"hit": "game:block/planks",
"break": "game:block/planks",
"place": "game:block/planks",
"walk": "game:walk/wood"
},
combustibleProps: {
burnTemperature: 800,
burnDuration: 20,
},
materialDensity: 600,
guiTransform: {
translation: { x: 0, y: 2, z: 0 },
origin: { x: 0.5, y: 0.25, z: 0.5 }
},
heldTpIdleAnimation: "holdbothhandslarge", heldTpUseAnimation: "twohandplaceblock",
tpHandTransform: {
translation: { x: -1.2, y: -1.1, z: -0.8 },
rotation: { x: -2, y: 25, z: -78 },
scale: 0.37
}
}

View file

@ -8,7 +8,7 @@
"textureSizes": {
},
"textures": {
"linen": "block/linen",
"rope": "materials/rope_texture",
"stem": "block/plant/bamboo/stem-brown"
},
"elements": [
@ -26,33 +26,29 @@
},
"children": [
{
"name": "Twine1",
"from": [ -1.125, 2.0, -0.35 ],
"to": [ 2.625, 2.5, 4.4 ],
"rotationOrigin": [ 1.125, 2.0, 1.5 ],
"rotationZ": -45.0,
"name": "Rope1",
"from": [ -0.75, 1.25, 1.75 ],
"to": [ 2.75, 3.75, 4.25 ],
"faces": {
"north": { "texture": "#linen", "uv": [ 6.0, 6.0, 9.5, 6.5 ] },
"east": { "texture": "#linen", "uv": [ 5.0, 6.0, 9.5, 6.5 ] },
"south": { "texture": "#linen", "uv": [ 5.5, 7.0, 9.0, 7.5 ] },
"west": { "texture": "#linen", "uv": [ 3.5, 6.5, 8.0, 7.0 ] },
"up": { "texture": "#linen", "uv": [ 4.5, 5.0, 8.0, 9.5 ] },
"down": { "texture": "#linen", "uv": [ 3.0, 2.0, 6.5, 6.5 ] }
"north": { "texture": "#rope", "uv": [ 1.0, 1.5, 4.5, 4.0 ] },
"east": { "texture": "#rope", "uv": [ 11.5, 3.5, 14.0, 6.0 ] },
"south": { "texture": "#rope", "uv": [ 2.5, 0.0, 6.0, 2.5 ] },
"west": { "texture": "#rope", "uv": [ 2.5, 7.0, 5.0, 9.5 ] },
"up": { "texture": "#rope", "uv": [ 0.5, 1.5, 4.0, 4.0 ] },
"down": { "texture": "#rope", "uv": [ 1.0, 1.5, 4.5, 4.0 ] }
},
"children": [
{
"name": "Twine2",
"from": [ -1.75, -2.25, 0.0 ],
"to": [ 2.0, -1.75, 4.751 ],
"rotationOrigin": [ 0.0, 0.0, 0.0 ],
"rotationZ": 90.0,
"name": "Rope2",
"from": [ 0.5, -0.25, -2.0 ],
"to": [ 3.0, 3.0, 0.5 ],
"faces": {
"north": { "texture": "#linen", "uv": [ 12.0, 11.5, 15.5, 12.0 ] },
"east": { "texture": "#linen", "uv": [ 6.0, 9.0, 10.5, 9.5 ] },
"south": { "texture": "#linen", "uv": [ 2.5, 7.5, 6.0, 8.0 ] },
"west": { "texture": "#linen", "uv": [ 5.5, 11.5, 10.0, 12.0 ] },
"up": { "texture": "#linen", "uv": [ 2.5, 8.5, 6.0, 13.0 ] },
"down": { "texture": "#linen", "uv": [ 9.5, 7.0, 13.0, 11.5 ] }
"north": { "texture": "#rope", "uv": [ 2.0, 9.5, 4.5, 12.5 ] },
"east": { "texture": "#rope", "uv": [ 2.0, 3.0, 4.5, 6.0 ] },
"south": { "texture": "#rope", "uv": [ 11.0, 1.0, 13.5, 4.0 ] },
"west": { "texture": "#rope", "uv": [ 10.0, 2.5, 12.5, 5.5 ] },
"up": { "texture": "#rope", "uv": [ 6.5, 3.0, 9.0, 5.5 ] },
"down": { "texture": "#rope", "uv": [ 2.0, 11.0, 4.5, 13.5 ] }
}
}
]
@ -73,33 +69,29 @@
},
"children": [
{
"name": "Twine7",
"from": [ -1.12, 2.0, -0.35 ],
"to": [ 2.63, 2.5, 4.4 ],
"rotationOrigin": [ 1.12, 2.0, 1.5 ],
"rotationZ": -45.0,
"name": "Rope7",
"from": [ -0.75, 1.25, 1.75 ],
"to": [ 2.75, 3.75, 4.25 ],
"faces": {
"north": { "texture": "#linen", "uv": [ 9.0, 8.0, 12.5, 8.5 ] },
"east": { "texture": "#linen", "uv": [ 1.0, 5.0, 5.5, 5.5 ] },
"south": { "texture": "#linen", "uv": [ 3.5, 5.5, 7.0, 6.0 ] },
"west": { "texture": "#linen", "uv": [ 4.0, 7.5, 8.5, 8.0 ] },
"up": { "texture": "#linen", "uv": [ 1.5, 5.5, 5.0, 10.0 ] },
"down": { "texture": "#linen", "uv": [ 2.0, 3.0, 5.5, 7.5 ] }
"north": { "texture": "#rope", "uv": [ 1.0, 1.5, 4.5, 4.0 ] },
"east": { "texture": "#rope", "uv": [ 11.5, 3.5, 14.0, 6.0 ] },
"south": { "texture": "#rope", "uv": [ 2.5, 0.0, 6.0, 2.5 ] },
"west": { "texture": "#rope", "uv": [ 2.5, 7.0, 5.0, 9.5 ] },
"up": { "texture": "#rope", "uv": [ 0.5, 1.5, 4.0, 4.0 ] },
"down": { "texture": "#rope", "uv": [ 1.0, 1.5, 4.5, 4.0 ] }
},
"children": [
{
"name": "Twine8",
"from": [ -1.75, -2.25, 0.0 ],
"to": [ 2.0, -1.75, 4.749 ],
"rotationOrigin": [ 0.0, 0.0, 0.0 ],
"rotationZ": 90.0,
"name": "Rope8",
"from": [ 0.5, -0.25, -2.0 ],
"to": [ 3.0, 3.0, 0.5 ],
"faces": {
"north": { "texture": "#linen", "uv": [ 5.0, 3.0, 8.5, 3.5 ] },
"east": { "texture": "#linen", "uv": [ 4.5, 5.5, 9.0, 6.0 ] },
"south": { "texture": "#linen", "uv": [ 5.5, 4.0, 9.0, 4.5 ] },
"west": { "texture": "#linen", "uv": [ 3.0, 3.5, 7.5, 4.0 ] },
"up": { "texture": "#linen", "uv": [ 4.5, 6.0, 8.0, 10.5 ] },
"down": { "texture": "#linen", "uv": [ 3.0, 3.0, 6.5, 7.5 ] }
"north": { "texture": "#rope", "uv": [ 2.0, 9.5, 4.5, 12.5 ] },
"east": { "texture": "#rope", "uv": [ 2.0, 3.0, 4.5, 6.0 ] },
"south": { "texture": "#rope", "uv": [ 11.0, 1.0, 13.5, 4.0 ] },
"west": { "texture": "#rope", "uv": [ 10.0, 2.5, 12.5, 5.5 ] },
"up": { "texture": "#rope", "uv": [ 6.5, 3.0, 9.0, 5.5 ] },
"down": { "texture": "#rope", "uv": [ 2.0, 11.0, 4.5, 13.5 ] }
}
}
]
@ -122,33 +114,31 @@
},
"children": [
{
"name": "Twine9",
"from": [ -1.25, 13.9, -2.3 ],
"to": [ 2.5, 14.4, 2.45 ],
"rotationOrigin": [ 0.0, 13.5, 0.0 ],
"rotationZ": -45.0,
"name": "Rope9",
"from": [ -0.75, 6.25, -0.25 ],
"to": [ 2.75, 8.75, 2.25 ],
"rotationOrigin": [ 1.0, 5.0, 0.0 ],
"rotationX": 180.0,
"faces": {
"north": { "texture": "#linen", "uv": [ 2.0, 5.5, 5.5, 6.0 ] },
"east": { "texture": "#linen", "uv": [ 4.0, 7.0, 8.5, 7.5 ] },
"south": { "texture": "#linen", "uv": [ 3.0, 7.0, 6.5, 7.5 ] },
"west": { "texture": "#linen", "uv": [ 1.5, 4.5, 6.0, 5.0 ] },
"up": { "texture": "#linen", "uv": [ 4.0, 5.0, 7.5, 9.5 ] },
"down": { "texture": "#linen", "uv": [ 1.0, 2.0, 4.5, 6.5 ] }
"north": { "texture": "#rope", "uv": [ 0.5, 11.5, 4.0, 14.0 ] },
"east": { "texture": "#rope", "uv": [ 10.5, 6.5, 13.0, 9.0 ] },
"south": { "texture": "#rope", "uv": [ 4.0, 1.0, 7.5, 3.5 ] },
"west": { "texture": "#rope", "uv": [ 1.5, 10.0, 4.0, 12.5 ] },
"up": { "texture": "#rope", "uv": [ 11.0, 11.0, 14.5, 13.5 ] },
"down": { "texture": "#rope", "uv": [ 1.0, 3.5, 4.5, 6.0 ] }
},
"children": [
{
"name": "Twine10",
"from": [ -1.75, -2.25, 0.0 ],
"to": [ 2.0, -1.75, 4.751 ],
"rotationOrigin": [ 0.0, 0.0, 0.0 ],
"rotationZ": 90.0,
"name": "Rope10",
"from": [ 0.5, -0.25, -2.0 ],
"to": [ 3.0, 3.0, 0.5 ],
"faces": {
"north": { "texture": "#linen", "uv": [ 3.0, 4.5, 6.5, 5.0 ] },
"east": { "texture": "#linen", "uv": [ 3.5, 11.5, 8.0, 12.0 ] },
"south": { "texture": "#linen", "uv": [ 3.5, 6.0, 7.0, 6.5 ] },
"west": { "texture": "#linen", "uv": [ 2.0, 4.5, 6.5, 5.0 ] },
"up": { "texture": "#linen", "uv": [ 2.0, 1.5, 5.5, 6.0 ] },
"down": { "texture": "#linen", "uv": [ 1.5, 7.5, 5.0, 12.0 ] }
"north": { "texture": "#rope", "uv": [ 12.5, 11.0, 15.0, 14.0 ] },
"east": { "texture": "#rope", "uv": [ 12.0, 1.5, 14.5, 4.5 ] },
"south": { "texture": "#rope", "uv": [ 13.0, 4.0, 15.5, 7.0 ] },
"west": { "texture": "#rope", "uv": [ 10.0, 10.5, 12.5, 13.5 ] },
"up": { "texture": "#rope", "uv": [ 10.0, 3.5, 12.5, 6.0 ] },
"down": { "texture": "#rope", "uv": [ 2.0, 10.0, 4.5, 12.5 ] }
}
}
]
@ -171,33 +161,31 @@
},
"children": [
{
"name": "Twine11",
"from": [ -12.0, 13.5, -2.25 ],
"to": [ -8.25, 14.0, 2.5 ],
"rotationOrigin": [ -10.0, 13.5, 0.0 ],
"rotationZ": -45.0,
"name": "Rope11",
"from": [ -10.75, 1.25, 3.75 ],
"to": [ -7.25, 3.75, 6.25 ],
"rotationOrigin": [ -9.5, 2.5, 2.0 ],
"rotationY": -180.0,
"faces": {
"north": { "texture": "#linen", "uv": [ 5.0, 5.0, 8.5, 5.5 ] },
"east": { "texture": "#linen", "uv": [ 3.0, 7.5, 7.5, 8.0 ] },
"south": { "texture": "#linen", "uv": [ 3.0, 9.5, 6.5, 10.0 ] },
"west": { "texture": "#linen", "uv": [ 3.0, 8.5, 7.5, 9.0 ] },
"up": { "texture": "#linen", "uv": [ 3.0, 3.5, 6.5, 8.0 ] },
"down": { "texture": "#linen", "uv": [ 5.5, 9.0, 9.0, 13.5 ] }
"north": { "texture": "#rope", "uv": [ 1.0, 1.5, 4.5, 4.0 ] },
"east": { "texture": "#rope", "uv": [ 11.5, 3.5, 14.0, 6.0 ] },
"south": { "texture": "#rope", "uv": [ 2.5, 0.0, 6.0, 2.5 ] },
"west": { "texture": "#rope", "uv": [ 2.5, 7.0, 5.0, 9.5 ] },
"up": { "texture": "#rope", "uv": [ 0.5, 1.5, 4.0, 4.0 ] },
"down": { "texture": "#rope", "uv": [ 1.0, 1.5, 4.5, 4.0 ] }
},
"children": [
{
"name": "Twine12",
"from": [ -1.75, -2.25, 0.0 ],
"to": [ 2.0, -1.75, 4.749 ],
"rotationOrigin": [ 0.0, 0.0, 0.0 ],
"rotationZ": 90.0,
"name": "Rope12",
"from": [ 0.5, -0.25, -2.0 ],
"to": [ 3.0, 3.0, 0.5 ],
"faces": {
"north": { "texture": "#linen", "uv": [ 6.5, 10.0, 10.0, 10.5 ] },
"east": { "texture": "#linen", "uv": [ 1.0, 0.5, 5.5, 1.0 ] },
"south": { "texture": "#linen", "uv": [ 1.5, 0.5, 5.0, 1.0 ] },
"west": { "texture": "#linen", "uv": [ 0.0, 2.5, 4.5, 3.0 ] },
"up": { "texture": "#linen", "uv": [ 3.5, 2.0, 7.0, 6.5 ] },
"down": { "texture": "#linen", "uv": [ 2.0, 3.5, 5.5, 8.0 ] }
"north": { "texture": "#rope", "uv": [ 2.0, 9.5, 4.5, 12.5 ] },
"east": { "texture": "#rope", "uv": [ 2.0, 3.0, 4.5, 6.0 ] },
"south": { "texture": "#rope", "uv": [ 11.0, 1.0, 13.5, 4.0 ] },
"west": { "texture": "#rope", "uv": [ 10.0, 2.5, 12.5, 5.5 ] },
"up": { "texture": "#rope", "uv": [ 6.5, 3.0, 9.0, 5.5 ] },
"down": { "texture": "#rope", "uv": [ 2.0, 11.0, 4.5, 13.5 ] }
}
}
]

View file

@ -14,9 +14,9 @@
"elements": [
{
"name": "Deck",
"from": [ 0.0, 14.0, 0.0 ],
"to": [ 16.0, 15.0, 14.0 ],
"rotationOrigin": [ 0.0, 3.0, 0.0 ],
"from": [ 0.0, 15.0, 0.0 ],
"to": [ 16.0, 16.0, 14.0 ],
"rotationOrigin": [ 0.0, 4.0, 0.0 ],
"faces": {
"north": { "texture": "#generic", "uv": [ 0.0, 5.0, 16.0, 6.0 ] },
"east": { "texture": "#generic", "uv": [ 0.0, 1.0, 1.0, 15.0 ], "rotation": 90 },
@ -28,10 +28,10 @@
"children": [
{
"name": "Transom1",
"from": [ 8.5, -3.0, -3.0 ],
"to": [ 11.5, 0.0, 13.0 ],
"rotationOrigin": [ 11.0, 0.0, 6.0 ],
"rotationY": -47.0,
"from": [ -1.5, -3.0, 0.0 ],
"to": [ 1.5, 0.0, 16.0 ],
"rotationOrigin": [ 0.0, 0.0, 0.0 ],
"rotationY": 45.0,
"faces": {
"north": { "texture": "#ladder", "uv": [ 8.0, 13.0, 11.0, 16.0 ] },
"east": { "texture": "#ladder", "uv": [ 12.0, 0.0, 15.0, 16.0 ], "rotation": 90 },

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before After
Before After

View file

@ -1,12 +1,12 @@
{
"type": "code",
"name": "Construction Supports",
"description" : "Scaffolds and Construction equipment, for the builders.",
"description" : "Scaffolds and Deckwork blocks, supports for vertical builds.",
"authors": ["Melchior"],
"ModID":"constructionsupport",
"version": "0.1.1",
"version": "0.1.2",
"dependencies": {
"game": "1.13.4",
"game": "1.14.0",
"survival": ""
},
"website": "http://nowebsite.nope"