W.I.P. Diagonal scaffolds, partly working
This commit is contained in:
parent
3b852ac5dd
commit
66ba8061c1
11 changed files with 316 additions and 116 deletions
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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\" />
|
||||
|
|
|
|||
|
|
@ -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"] },
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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 ] }
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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 |
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue