-
Posts
199 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
News
Store
Everything posted by Micah Holmes
-
I'll be working on a mod that will now include Hemp and cannabis for medicine. the mod will be a mega mod. so it should cover several areas of focus including leather working.... hopefully. Update Can we move this to WIP. Sorry didnt see wip area. Thanks.
-
I am releasing this mod today for everyone to enjoy. Here is a video of the mod and its highlights: Link to mod: https://mods.vintagestory.at/httpswwwvintagestoryatforumstopic18747woodwor
-
I have rebuilt my cabinet code 3 times now. It works for awhile then starts to crash. I have two identical files one works and other crashes: Working version: { code: "b1cabinet", class: "BlockGenericTypedContainer", entityclass: "GenericTypedContainer", behaviors: [ { "name": "Lockable" }, { "name": "Container" }, { "name": "BoatableGenericTypedContainer" } ], creativeinventory: { "general": [ "b1cabinet" ], "decorative": [ "b1cabinet" ] }, attributes: { inventoryClassName: "chest", defaultType: "acacia", types: [ "acacia" ], handbook: { groupBy: [ "cabinet" ] }, rotatatableInterval: { "acacia": "22.5degnot45deg" }, storageType: { "acacia": 189 }, retrieveOnly: { "acacia": false }, quantitySlots: { "acacia": 20 }, shape: { "acacia": "cabinet" }, typedOpenSound: { "acacia": "game:sounds/block/largechestopen" }, typedCloseSound: { "acacia": "game:sounds/block/largechestclose" }, variantByGroup: "side", variantByGroupInventory: null }, shapeInventory: { "base": "cabinet", "rotateY": 270 }, //Texture identifiers are prefixed with the type textures: { "acacia-top": { "base": "polished/obsidian2" }, "acacia-handle": { "base": "polished/obsidian2" }, "acacia-bottom": { "base": "debarked/acacia" }, "acacia-fdoor": { "base": "debarked/acacia" }, "acacia-back": { "base": "debarked/acacia" }, "acacia-sideleft": { "base": "debarked/acacia" }, "acacia-sideright": { "base": "debarked/acacia" } }, replaceable: 500, resistance: 1.5, lightAbsorption: 99, sidesolid: { "all": false }, sideopaque: { "all": false }, heldTpIdleAnimation: "holdbothhandslarge", heldRightReadyAnimation: "heldblockready", heldTpUseAnimation: "twohandplaceblock", tpHandTransform: { translation: { "x": -1.23, "y": -0.91, "z": -0.8 }, rotation: { "x": -2, "y": 25, "z": -78 }, scale: 0.4 } } Crashing version: { code: "cabinet-1", class: "BlockGenericTypedContainer", entityclass: "GenericTypedContainer", behaviors: [ { "name": "Lockable" }, { "name": "Container" }, { "name": "BoatableGenericTypedContainer" } ], creativeinventory: { "general": [ "cabinet-1" ], "decorative": [ "cabinet-1" ] }, attributes: { inventoryClassName: "chest", defaultType: "acacia", types: [ "acacia" ], handbook: { groupBy: [ "cabinet" ] }, rotatatableInterval: { "acacia": "22.5degnot45deg" }, storageType: { "acacia": 189 }, retrieveOnly: { "acacia": false }, quantitySlots: { "acacia": 20 }, shape: { "acacia": "cabinet" }, typedOpenSound: { "acacia": "game:sounds/block/largechestopen" }, typedCloseSound: { "acacia": "game:sounds/block/largechestclose" }, variantByGroup: "side", variantByGroupInventory: null }, shapeInventory: { "base": "cabinet", "rotateY": 270 }, //Texture identifiers are prefixed with the type textures: { "acacia-top": { "base": "polished/obsidian2" }, "acacia-handle": { "base": "polished/obsidian2" }, "acacia-bottom": { "base": "debarked/acacia" }, "acacia-fdoor": { "base": "debarked/acacia" }, "acacia-back": { "base": "debarked/acacia" }, "acacia-sideleft": { "base": "debarked/acacia" }, "acacia-sideright": { "base": "debarked/acacia" } }, replaceable: 500, resistance: 1.5, lightAbsorption: 99, sidesolid: { "all": false }, sideopaque: { "all": false }, heldTpIdleAnimation: "holdbothhandslarge", heldRightReadyAnimation: "heldblockready", heldTpUseAnimation: "twohandplaceblock", tpHandTransform: { translation: { "x": -1.23, "y": -0.91, "z": -0.8 }, rotation: { "x": -2, "y": 25, "z": -78 }, scale: 0.4 } } Crash report: Running on 64 bit Linux (Linux Mint 22.1) [Kernel 6.8.0.90] with 31965 MB RAM Game Version: v1.21.6 (Stable) 12/29/2025 10:37:10 AM: Critical error occurred Loaded Mods: mudmod@1.0.0, plantsexpandedmod@1.0.4, game@1.21.6, woodworking@1.0.0, creative@1.21.6, survival@1.21.6 System.Exception: Can't create itemstack without block! at Vintagestory.API.Common.ItemStack..ctor(Block block, Int32 stacksize) in VintagestoryApi\Common\Collectible\ItemStack.cs:line 244 at Vintagestory.GameContent.BlockGenericTypedContainer.OnPickBlock(IWorldAccessor world, BlockPos pos) in VSSurvivalMod\Block\BlockGenericTypedContainer.cs:line 374 at Vintagestory.API.Common.Block.GetPlacedBlockName(IWorldAccessor world, BlockPos pos) in VintagestoryApi\Common\Collectible\Block\Block.cs:line 2199 at Vintagestory.Client.NoObf.HudElementBlockAndEntityInfo.ComposeBlockInfoHud() in VintagestoryLib\Client\Systems\Gui\Huds\HudElementBlockAndEntityInfo.cs:line 44 at Vintagestory.Common.GameTickListener.OnTriggered(Int64 ellapsedMilliseconds) in VintagestoryLib\Common\Model\GameTickListener.cs:line 25 at Vintagestory.Common.EventManager.TriggerGameTick(Int64 ellapsedMilliseconds, IWorldAccessor world) in VintagestoryLib\Common\EventManager.cs:line 102 at Vintagestory.Client.NoObf.ClientMain.MainRenderLoop(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 836 at Vintagestory.Client.GuiScreenRunningGame.RenderToPrimary(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 172 at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 719 at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 663 at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 112 at OpenTK.Windowing.Desktop.GameWindow.Run() at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 347 at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 131 at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95
-
Fence Crashing
Micah Holmes replied to Micah Holmes's topic in Mod Development Questions/Troubleshooting
@The Insanity God Well when I use this: code: "woodworking:latticefence", class: "BlockFenceStackAware", //class: "Block", The fence will disappear when I stack on top and does not behave correctly. Open to suggestions Update: Ive adjusted this code a million different ways. I think I'm going to give up on custom fence blocks for now. Even if I just change model and texture, it still does not want to work using base game code. -
Fence Crashing
Micah Holmes replied to Micah Holmes's topic in Mod Development Questions/Troubleshooting
@The Insanity God Adjusted code as advised only issue now is the fence can not be rotated. { code: "woodworking:latticefence", //class: "BlockFenceStackAware", class: "Block", behaviors: [ {name: "CanAttach", properties: { sides: ["up", "down"] } } ], attributes: { isFence: true, particleCollBoxHeight: 1, handbook: { groupBy: ["latticefence-*"] } }, variantgroups: [ { code: "wood", states: ["purpleheart" ] }, { code: "type", states: ["empty", "n", "e", "s", "w", "ne", "ns", "nw", "es", "ew", "sw", "nes", "new", "nsw", "esw", "nesw"] }, { code: "cover", states: ["free"] } ], creativeinventory: { "general": ["latticefence-*-ew-free"], "decorative": ["latticefence-*-ew-free"] }, shapebytype: { "*-empty-free": { base: "fence/lattice" }, "*-n-free": { base: "fence/lattice", rotateY: 270 }, "*-e-free": { base: "fence/lattice", rotateY: 180 }, "*-s-free": { base: "fence/lattice", rotateY: 90 }, "*-w-free": { base: "fence/lattice", rotateY: 0 }, "*-ns-free": { base: "fence/lattice", rotateY: 90 }, "*-ew-free": { base: "fence/lattice", rotateY: 0 }, "*-ne-free": { base: "fence/lattice", rotateY: 180 }, "*-nw-free": { base: "fence/lattice", rotateY: 270 }, "*-es-free": { base: "fence/lattice", rotateY: 90 }, "*-sw-free": { base: "fence/lattice", rotateY: 0 }, "*-nes-free": { base: "fence/lattice", rotateY: 180 }, "*-new-free": { base: "fence/lattice", rotateY: 270 }, "*-nsw-free": { base: "fence/lattice", rotateY: 0 }, "*-esw-free": { base: "fence/lattice", rotateY: 90 }, "*-nesw-free": { base: "fence/lattice", rotateY: 0 } }, drawtypeByType: { "*-free": "JSON", "*-snow": "JSONAndSnowLayer" }, blockmaterial: "Wood", texturesByType: { "*": { "wood": { base: "debarked/{wood}" } } }, sidesolid: { all: false }, sideopaque: { all: false }, resistance: 3, lightAbsorption: 0, sounds: { "place": "game:block/planks", "hit": "game:block/planks", "break": "game:block/planks", "walk": "game:walk/wood" }, selectionboxbytype: { "*-empty-*": { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625 }, "*-n-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625, rotateY: 270}, "*-e-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625, rotateY: 180}, "*-s-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-w-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625}, "*-ns-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-gns-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-ngs-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-ew-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625}, "*-egw-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625}, "*-gew-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625}, }, selectionboxesbytype: { "*-sw-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 0 } ], "*-ne-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 180 } ] , "*-nw-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 270 } ], "*-es-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 90 } ], "*-nes-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 180 } ], "*-new-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 270 } ], "*-nsw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 0 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 0 } ], "*-esw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 90 } ], "*-nesw": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625 } ] }, collisionboxbytype: { "*-empty-*": { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625 }, "*-n-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625, rotateY: 270}, "*-e-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625, rotateY: 180}, "*-s-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-w-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625}, "*-ns-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-gns-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-ngs-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-ew-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625}, "*-egw-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625}, "*-gew-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625}, }, collisionboxesbytype: { "*-sw-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 0 } ], "*-ne-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 180 } ] , "*-nw-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 270 } ], "*-es-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 90 } ], "*-nes-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 180 } ], "*-new-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 270 } ], "*-nsw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 0 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 0 } ], "*-esw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 90 } ], "*-nesw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625 } ] }, combustibleProps: { burnTemperature: 600, burnDuration: 10, }, materialDensity: 600, tpHandTransform: { translation: { x: -1.5, y: -1, z: -1.2 }, rotation: { x: 5, y: -3, z: -96 }, scale: 0.37 }, groundTransform: { translation: { x: 0, y: 0.05, z: 0 }, rotation: { x: 90, y: -45, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 2.07 } } Tried adding rotatatableInterval: { base: "22.5degnot45deg" }, but did not do anything -
Fence Crashing
Micah Holmes replied to Micah Holmes's topic in Mod Development Questions/Troubleshooting
Got it fixed using this code but now I'm getting weird behavior. When I place side by side it turns both. An when I stack on top of each other, it turns invisible { code: "woodworking:latticefence", class: "BlockFenceStackAware", behaviors: [ {name: "CanAttach", properties: { sides: ["up", "down"] } } ], attributes: { isFence: true, particleCollBoxHeight: 1, handbook: { groupBy: ["latticefence-*"] } }, variantgroups: [ { code: "wood", states: ["purpleheart" ] }, { code: "type", states: ["empty", "n", "e", "s", "w", "ne", "ns", "nw", "es", "ew", "sw", "nes", "new", "nsw", "esw", "nesw"] }, { code: "cover", states: ["free"] } ], creativeinventory: { "general": ["latticefence-*-ew-free"], "decorative": ["latticefence-*-ew-free"] }, shapebytype: { "*-empty-free": { base: "fence/lattice" }, "*-n-free": { base: "fence/lattice", rotateY: 270 }, "*-e-free": { base: "fence/lattice", rotateY: 180 }, "*-s-free": { base: "fence/lattice", rotateY: 90 }, "*-w-free": { base: "fence/lattice", rotateY: 0 }, "*-ns-free": { base: "fence/lattice", rotateY: 90 }, "*-ew-free": { base: "fence/lattice", rotateY: 0 }, "*-ne-free": { base: "fence/lattice", rotateY: 180 }, "*-nw-free": { base: "fence/lattice", rotateY: 270 }, "*-es-free": { base: "fence/lattice", rotateY: 90 }, "*-sw-free": { base: "fence/lattice", rotateY: 0 }, "*-nes-free": { base: "fence/lattice", rotateY: 180 }, "*-new-free": { base: "fence/lattice", rotateY: 270 }, "*-nsw-free": { base: "fence/lattice", rotateY: 0 }, "*-esw-free": { base: "fence/lattice", rotateY: 90 }, "*-nesw-free": { base: "fence/lattice", rotateY: 0 } }, drawtypeByType: { "*-free": "JSON", "*-snow": "JSONAndSnowLayer" }, blockmaterial: "Wood", texturesByType: { "*": { "wood": { base: "debarked/{wood}" } } }, sidesolid: { all: false }, sideopaque: { all: false }, resistance: 3, lightAbsorption: 0, sounds: { "place": "game:block/planks", "hit": "game:block/planks", "break": "game:block/planks", "walk": "game:walk/wood" }, selectionboxbytype: { "*-empty-*": { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625 }, "*-n-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625, rotateY: 270}, "*-e-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625, rotateY: 180}, "*-s-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-w-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625}, "*-ns-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-gns-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-ngs-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-ew-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625}, "*-egw-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625}, "*-gew-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625}, }, selectionboxesbytype: { "*-sw-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 0 } ], "*-ne-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 180 } ] , "*-nw-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 270 } ], "*-es-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 90 } ], "*-nes-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 180 } ], "*-new-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 270 } ], "*-nsw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 0 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 0 } ], "*-esw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 90 } ], "*-nesw": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625 } ] }, collisionboxbytype: { "*-empty-*": { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625 }, "*-n-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625, rotateY: 270}, "*-e-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625, rotateY: 180}, "*-s-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-w-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625}, "*-ns-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-gns-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-ngs-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-ew-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625}, "*-egw-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625}, "*-gew-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625}, }, collisionboxesbytype: { "*-sw-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 0 } ], "*-ne-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 180 } ] , "*-nw-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 270 } ], "*-es-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 90 } ], "*-nes-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 180 } ], "*-new-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 270 } ], "*-nsw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 0 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 0 } ], "*-esw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 90 } ], "*-nesw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625 } ] }, combustibleProps: { burnTemperature: 600, burnDuration: 10, }, materialDensity: 600, tpHandTransform: { translation: { x: -1.5, y: -1, z: -1.2 }, rotation: { x: 5, y: -3, z: -96 }, scale: 0.37 }, groundTransform: { translation: { x: 0, y: 0.05, z: 0 }, rotation: { x: 90, y: -45, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 2.07 } } Tried commenting out a few different things to see if it has a effect but nothing seems to stop it. Not sure whats causing it, can only assume its behavior but I commented it out and still acts weird. Maybe its the fence class? -
Moiré effect mitigation
Micah Holmes replied to HeadPilgrim's topic in Mod Development Questions/Troubleshooting
Beautiful!!!!! -
So for wood working mod, I've added a book called book of tribes that you will need to make tribal based items and weapons. These are special items based on native american and Aztec cultures. Likely expand upon it in near future. Id like to add a lib for c# near future to create a book sharing more info about tribe cultures. Possibly add entities as well. I want to add some viking stuff as well in near future. So I hope it does not clash with core game lore. Also want to add some vintage story tribe stuff too related to base story. Again hopefully does not clash with base game.
-
Recipe not working
Micah Holmes replied to Micah Holmes's topic in Mod Development Questions/Troubleshooting
I'll retry with committed code removed temporarily. But I think it's still failing. -
Been awhile since I made a barrel recipe but i thought it was pretty straight forward. No errors but not working when I try it [ { code: "vinegar", sealHours: 1, ingredients: [ { type: "item", code: "game:waterportion", litres: 10, consumeLitres: 10 }, { type: "item", code: "game:pressedmash-cranberry-dry", quantity: 1 } ], output: { type: "item", code: "game:vinegarportion", litres: 5 } } ]
-
I don't remember ever having so many issues with grid crafting recipes not working. Has any one else had issues getting grid craft recipes working for your mods? No issues get my mod items in game. But grid seems to wana crash a lot when I know the recipe is correct. Really seems to struggle the most with variants. Just me?
-
Been troubleshooting this recipe for a bit. Has to be something basic I'm not seeing: 14.12.2025 22:15:01 [Error] [game] An exception was thrown when trying to start the mod: 14.12.2025 22:15:01 [Error] [game] Exception: Object reference not set to an instance of an object. at Vintagestory.ServerMods.GridRecipeLoader.LoadRecipe(AssetLocation assetLocation, GridRecipe recipe) in VSEssentials\Loading\GridRecipeLoader.cs:line 60 at Vintagestory.ServerMods.GridRecipeLoader.LoadGridRecipes() in VSEssentials\Loading\GridRecipeLoader.cs:line 48 at Vintagestory.ServerMods.GridRecipeLoader.AssetsLoaded(ICoreAPI api) in VSEssentials\Loading\GridRecipeLoader.cs:line 28 at Vintagestory.Common.ModLoader.TryRunModPhase(Mod mod, ModSystem system, ICoreAPI api, ModRunPhase phase) in VintagestoryLib\Common\API\ModLoader.cs:line 667 14.12.2025 22:15:01 [Error] Failed to run mod phase AssetsLoaded for mod Vintagestory.ServerMods.GridRecipeLoader recipe: [ //apprentice { ingredientPattern: "HS", ingredients: { "H": { type: "item", code: "spearhead-sanded-limestone", quantity: 1 }, "S": { type: "item", code: "spearshaft-redwood", quantity: 1 } }, width: 2, height: 1, output: { type: "item", code: "spear-apprentice-redwood-limestone" } }, { ingredientPattern: "HS", ingredients: { "H": { type: "item", code: "spearhead-sanded-limestone", quantity: 1 }, "S": { type: "item", code: "spearshaft-larch", quantity: 1 } }, width: 2, height: 1, output: { type: "item", code: "spear-apprentice-larch-limestone" } }, { ingredientPattern: "HS", ingredients: { "H": { type: "item", code: "spearhead-sanded-slate", quantity: 1 }, "S": { type: "item", code: "spearshaft-redwood", quantity: 1 } }, width: 2, height: 1, output: { type: "item", code: "spear-apprentice-redwood-slate" } }, { ingredientPattern: "HS", ingredients: { "H": { type: "item", code: "spearhead-sanded-slate", quantity: 1 }, "S": { type: "item", code: "spearshaft-larch", quantity: 1 } }, width: 2, height: 1, output: { type: "item", code: "spear-apprentice-larch-slate" } }, //journeyman { ingredientPattern: "HS", ingredients: { "H": { type: "item", code: "spearhead-polished-limestone", quantity: 1 }, "S": { type: "item", code: "spearshaft-redwood", quantity: 1 } }, width: 2, height: 1, output: { type: "item", code: "spear-journeyman-redwood-limestone" } }, { ingredientPattern: "HS", ingredients: { "H": { type: "item", code: "spearhead-polished-limestone", quantity: 1 }, "S": { type: "item", code: "spearshaft-larch", quantity: 1 } }, width: 2, height: 1, output: { type: "item", code: "spear-journeyman-larch-limestone" } }, { ingredientPattern: "HS", ingredients: { "H": { type: "item", code: "spearhead-polished-slate", quantity: 1 }, "S": { type: "item", code: "spearshaft-redwood", quantity: 1 } }, width: 2, height: 1, output: { type: "item", code: "spear-journeyman-redwood-slate" } }, { ingredientPattern: "HS", ingredients: { "H": { type: "item", code: "spearhead-polished-slate", quantity: 1 }, "S": { type: "item", code: "spearshaft-larch", quantity: 1 } }, width: 2, height: 1, output: { type: "item", code: "spear-journeyman-larch-slate" } } ] Spears: { code: "spear", class: "ItemSpear", tags: ["weapon", "weapon-melee"], damagedby: ["attacking"], tool: "spear", behaviors: [ { name: "GroundStorable", properties: { layout: 'WallHalves', wallOffYByType:{ "@spear-generic-(chert|granite|andesite|basalt|obsidian|peridotite|flint)": 2, "*": 3 }, ctrlKey: true, selectionBox: { x1: 0, y1: 0, z1: 0, x2: 1, y2: 0.1, z2: 1 }, collisionBox: { x1: 0, y1: 0, z1: 0, x2: 0, y2: 0, z2: 0 } } }, { name: "AnimationAuthoritative" } ], variantgroups: [ { code: "type", states: ["apprentice", "journeyman" ] }, { code: "wood", states: [ "redwood", "larch" ] }, { code: "material", states: ["limestone", "slate" ] } ], shapeByType: { "*": { base: "game:item/tool/spear/stone" } }, heldTpIdleAnimation: "spearidle", heldRightReadyAnimation: "spearidle", heldTpHitAnimation: "spearhit", texturesByType: { "spear-apprentice-*-limestone": { "string": { "base": "bow-string/bowstring-hide" }, "handle": { "base": "debarked/{wood}" }, "material": { "base": "polished/{material}1" } }, "spear-journeyman-*-limestone": { "string": { "base": "bow-string/bowstring-hide" }, "handle": { "base": "debarked/{wood}" }, "material": { "base": "polished/{material}1" } }, "spear-apprentice-*-slate": { "string": { "base": "bow-string/bowstring-hide" }, "handle": { "base": "debarked/{wood}" }, "material": { "base": "polished/{material}1" } }, "spear-journeyman-*-slate": { "string": { "base": "bow-string/bowstring-hide" }, "handle": { "base": "debarked/{wood}" }, "material": { "base": "polished/{material}1" } } }, attackRange: 3.5, attackpowerbytype: { "spear-apprentice-*-limestone": 1.35, "spear-journeyman-*-limestone": 1.5, "spear-apprentice-*-slate": 1.45, "spear-journeyman-*-slate": 1.65 }, attributes: { heldItemPitchFollow: 1, groundStorageTransformByType: { "*": { translation: { x: 0, y: 0.26, z: 0.596 }, rotation: { x: 16, y: 90, z: 90 }, scale: 0.85 } }, // Thrown damage damageByType: { "spear-apprentice-*-limestone": 3.45, "spear-journeyman-*-limestone": 3.7, "spear-apprentice-*-slate": 3.62, "spear-journeyman-*-slate": 3.89 }, damageTierByType: { "spear-apprentice-*-limestone": 0, "spear-journeyman-*-limestone": 0, "spear-apprentice-*-slate": 0, "spear-journeyman-*-slate": 0 }, spearEntityCodeByType: { "*": "erelprojectile-large-usable" //"*": "spear-{type}-{wood}-{material}" }, handbook: { groupBy: ["spear-*"] }, toolrackTransformByType: { "*": { rotation: { y: 1, z: -1 }, translation: { x: -0.23, y: 0.66 }, scale: 1.36 } } }, durabilitybytype: { "spear-apprentice-*-limestone": 80, "spear-journeyman-*-limestone": 140, "spear-apprentice-*-slate": 110, "spear-journeyman-*-slate": 190 }, creativeinventory: { "general": ["*"], "items": ["*"], "tools": ["*"] }, guiTransformByType: { "*": { translation: { x: 0, y: 0, z: 0 }, rotation: { x: -60, y: 124, z: 6 }, origin: { x: 1.19, y: 0, z: 0.5 }, scale: 2.26 } }, fpHandTransformByType: { "*": { translation: { x: 0.1, y: 0.4, z: 0.16 }, rotation: { x: -82, y: 180, z: 96 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 2.45 } }, groundTransformByType: { "*": { translation: { x: 0, y: 0.05, z: 0 }, rotation: { x: 90, y: 0, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 3.4 } }, tpHandTransformByType: { "*": { translation: { x: -1.29, y: 0.02, z: -0.57 }, rotation: { x: -90, y: 0, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 0.8 } } } If I remove the recipe, works fine no issues. Gives error with no helpful info when i load: 14.12.2025 22:15:01 [Error] [game] An exception was thrown when trying to start the mod: 14.12.2025 22:15:01 [Error] [game] Exception: Object reference not set to an instance of an object. at Vintagestory.ServerMods.GridRecipeLoader.LoadRecipe(AssetLocation assetLocation, GridRecipe recipe) in VSEssentials\Loading\GridRecipeLoader.cs:line 60 at Vintagestory.ServerMods.GridRecipeLoader.LoadGridRecipes() in VSEssentials\Loading\GridRecipeLoader.cs:line 48 at Vintagestory.ServerMods.GridRecipeLoader.AssetsLoaded(ICoreAPI api) in VSEssentials\Loading\GridRecipeLoader.cs:line 28 at Vintagestory.Common.ModLoader.TryRunModPhase(Mod mod, ModSystem system, ICoreAPI api, ModRunPhase phase) in VintagestoryLib\Common\API\ModLoader.cs:line 667 14.12.2025 22:15:01 [Error] Failed to run mod phase AssetsLoaded for mod Vintagestory.ServerMods.GridRecipeLoader how I read it is the recipe reader crapped out but its not saying why or whats wrong with my recipe.
-
Fence Crashing
Micah Holmes replied to Micah Holmes's topic in Mod Development Questions/Troubleshooting
Well I adjusted the code no crashing any more but I get errors in the log : 14.12.2025 10:48:41 [Error] Exception thrown while trying to parse json data of the type with code woodworking:latticefence, variant woodworking:latticefence-purpleheart-empty-free. Will ignore most of the attributes. Exception: 14.12.2025 10:48:41 [Error] Exception: Error converting value "blockfence" to type 'Vintagestory.API.Common.EnumItemClass'. Path 'drops[0].type'. ---> System.ArgumentException: Requested value 'blockfence' was not found. at Newtonsoft.Json.Utilities.EnumUtils.ParseEnum(Type enumType, NamingStrategy namingStrategy, String value, Boolean disallowNumber) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) --- End of inner exception stack trace --- at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Populate(JsonReader reader, Object target) at Newtonsoft.Json.JsonSerializer.PopulateInternal(JsonReader reader, Object target) at Vintagestory.API.Common.JsonUtil.PopulateObject(Object toPopulate, JToken token, JsonSerializer js) in VintagestoryApi\Util\JsonUtil.cs:line 96 at Vintagestory.ServerMods.NoObf.RegistryObjectType.CreateResolvedType[T](ICoreServerAPI api, AssetLocation fullcode, JObject jobject, JsonSerializer deserializer, OrderedDictionary`2 variant) in VSEssentials\Loading\RegistryObjectType.cs:line 303 14.12.2025 10:48:41 [Error] Exception thrown while trying to parse json data of the type with code woodworking:latticefence, variant woodworking:latticefence-purpleheart-n-free. Will ignore most of the attributes. Exception: This error is a little confusing. not sure why it cant find "blockfence" in the API. Is it trying to look in my mod for blockfence? New code: { code: "woodworking:latticefence", class: "game:BlockFence", behaviors: [ {name: "CanAttach", properties: { sides: ["up", "down"] } }, { name: "RopeTieable" } ], attributes: { supportsUnstableRock: true, isFence: true, particleCollBoxHeight: 1, handbook: { groupBy: ["woodenfence-*"] }, attachableToEntity: { categoryCode: "ropetiepost", requiresBehindSlots: 1, attachedShape: { base: "game:block/wood/fence/boatpost" }, texturePrefixCode: "fence-{wood}", seatConfig: { controllable: false, bodyYawLimit: 0.25, mountOffset: { x: 1, y: 0, z: 1.5 }, eyeHeight: 1, attributes: { ropeTieablesOnly: true } } } }, variantgroups: [ { code: "wood", states: ["purpleheart" ] }, { code: "type", states: ["empty", "n", "e", "s", "w", "ne", "ns", "nw", "es", "ew", "sw", "nes", "new", "nsw", "esw", "nesw"] }, { code: "cover", states: ["free"] } ], creativeinventory: { "general": ["latticefence-*-ew-free"], "decorative": ["latticefence-*-ew-free"] }, shapebytype: { "*-empty-free": { base: "fence/lattice" }, "*-n-free": { base: "fence/lattice", rotateY: 270 }, "*-e-free": { base: "fence/lattice", rotateY: 180 }, "*-s-free": { base: "fence/lattice", rotateY: 90 }, "*-w-free": { base: "fence/lattice", rotateY: 0 }, "*-ns-free": { base: "fence/lattice", rotateY: 90 }, "*-ew-free": { base: "fence/lattice", rotateY: 0 }, "*-ne-free": { base: "fence/lattice", rotateY: 180 }, "*-nw-free": { base: "fence/lattice", rotateY: 270 }, "*-es-free": { base: "fence/lattice", rotateY: 90 }, "*-sw-free": { base: "fence/lattice", rotateY: 0 }, "*-nes-free": { base: "fence/lattice", rotateY: 180 }, "*-new-free": { base: "fence/lattice", rotateY: 270 }, "*-nsw-free": { base: "fence/lattice", rotateY: 0 }, "*-esw-free": { base: "fence/lattice", rotateY: 90 }, "*-nesw-free": { base: "fence/lattice", rotateY: 0 } }, drawtypeByType: { "*-free": "JSON", "*-snow": "JSONAndSnowLayer" }, blockmaterial: "Wood", texturesByType: { "*": { "wood": { base: "debarked/{wood}" } } }, sidesolid: { all: false }, sideopaque: { all: false }, resistance: 3, lightAbsorption: 0, drops: [ { type: "blockfence", code: "latticefence{wood}{type}{cover}", quantity: { avg: 0.85, var: 0 } } ], sounds: { "place": "game:block/planks", "hit": "game:block/planks", "break": "game:block/planks", "walk": "game:walk/wood" }, selectionboxbytype: { "*-empty-*": { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625 }, "*-n-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625, rotateY: 270}, "*-e-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625, rotateY: 180}, "*-s-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-w-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625}, "*-ns-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-gns-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-ngs-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-ew-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625}, "*-egw-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625}, "*-gew-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625}, }, selectionboxesbytype: { "*-sw-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 0 } ], "*-ne-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 180 } ] , "*-nw-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 270 } ], "*-es-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 90 } ], "*-nes-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 180 } ], "*-new-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 270 } ], "*-nsw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 0 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 0 } ], "*-esw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 90 } ], "*-nesw": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625 } ] }, collisionboxbytype: { "*-empty-*": { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625 }, "*-n-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625, rotateY: 270}, "*-e-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625, rotateY: 180}, "*-s-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-w-*": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625}, "*-ns-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-gns-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-ngs-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-ew-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625}, "*-egw-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625}, "*-gew-*": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625}, }, collisionboxesbytype: { "*-sw-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 0 } ], "*-ne-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 180 } ] , "*-nw-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 270 } ], "*-es-*": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 90 } ], "*-nes-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 180 } ], "*-new-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 270 } ], "*-nsw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 0 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 0 } ], "*-esw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 90 } ], "*-nesw-*": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625 } ] }, combustibleProps: { burnTemperature: 600, burnDuration: 10, }, materialDensity: 600, tpHandTransform: { translation: { x: -1.5, y: -1, z: -1.2 }, rotation: { x: 5, y: -3, z: -96 }, scale: 0.37 }, groundTransform: { translation: { x: 0, y: 0.05, z: 0 }, rotation: { x: 90, y: -45, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 2.07 } } Not sure where to go from here on this one. -
Making some new fences and I'm crashing every time after I place it. Best I can tell it needs some logic for placing which I've seen before but does not seem to work. Here is the crash: crash: Running on 64 bit Linux (Linux Mint 22.1) [Kernel 6.8.0.88] with 31965 MB RAM Game Version: v1.21.5 (Stable) 12/13/2025 11:40:57 PM: Critical error occurred Loaded Mods: mudmod@1.0.0, plantsexpandedmod@1.0.4, game@1.21.5, woodworking@1.0.0, creative@1.21.5, survival@1.21.5 System.Exception: Can't create itemstack without block! at Vintagestory.API.Common.ItemStack..ctor(Block block, Int32 stacksize) in VintagestoryApi\Common\Collectible\ItemStack.cs:line 244 at Vintagestory.GameContent.BlockFence.OnPickBlock(IWorldAccessor world, BlockPos pos) in VSSurvivalMod\Block\BlockFence.cs:line 110 at Vintagestory.API.Common.Block.GetPlacedBlockName(IWorldAccessor world, BlockPos pos) in VintagestoryApi\Common\Collectible\Block\Block.cs:line 2199 at Vintagestory.Client.NoObf.HudElementBlockAndEntityInfo.ComposeBlockInfoHud() in VintagestoryLib\Client\Systems\Gui\Huds\HudElementBlockAndEntityInfo.cs:line 44 at Vintagestory.Common.GameTickListener.OnTriggered(Int64 ellapsedMilliseconds) in VintagestoryLib\Common\Model\GameTickListener.cs:line 25 at Vintagestory.Common.EventManager.TriggerGameTick(Int64 ellapsedMilliseconds, IWorldAccessor world) in VintagestoryLib\Common\EventManager.cs:line 102 at Vintagestory.Client.NoObf.ClientMain.MainRenderLoop(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 836 at Vintagestory.Client.GuiScreenRunningGame.RenderToPrimary(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 172 at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 719 at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 663 at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 112 at OpenTK.Windowing.Desktop.GameWindow.Run() at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 338 at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 133 at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95 Here is the code: { code: "lattice-fence", class: "BlockFence", behaviors: [ {name: "CanAttach", properties: { sides: ["up", "down"] } }, { name: "RopeTieable" } ], attributes: { supportsUnstableRock: true, isFence: true, particleCollBoxHeight: 1, handbook: { groupBy: ["woodenfence-*"] }, attachableToEntity: { categoryCode: "ropetiepost", requiresBehindSlots: 1, attachedShape: { base: "game:block/wood/fence/boatpost" }, texturePrefixCode: "lattice-fence-{wood}", seatConfig: { controllable: false, bodyYawLimit: 0.25, mountOffset: { x: 1, y: 0, z: 1.5 }, eyeHeight: 1, attributes: { ropeTieablesOnly: true } } } }, variantgroups: [ { code: "wood", states: ["oak" ], loadFromProperties: "game:block/wood" }, { code: "type", states: ["empty", "n", "e", "s", "w", "ne", "ns", "nw", "es", "ew", "sw", "nes", "new", "nsw", "esw", "nesw"] } ], creativeinventory: { "general": ["lattice-*-ew"], "decorative": ["lattice-*-ew"] }, shapebytype: { "*-empty": { base: "fence/lattice" }, "*-n": { base: "fence/lattice", rotateY: 270 }, "*-e": { base: "fence/lattice", rotateY: 180 }, "*-s": { base: "fence/lattice", rotateY: 90 }, "*-w": { base: "fence/lattice", rotateY: 0 }, "*-ns": { base: "fence/lattice", rotateY: 90 }, "*-ew": { base: "fence/lattice", rotateY: 0 }, "*-ne": { base: "fence/lattice", rotateY: 180 }, "*-nw": { base: "fence/lattice", rotateY: 270 }, "*-es": { base: "fence/lattice", rotateY: 90 }, "*-sw": { base: "fence/lattice", rotateY: 0 }, "*-nes": { base: "fence/lattice", rotateY: 180 }, "*-new": { base: "fence/lattice", rotateY: 270 }, "*-nsw": { base: "fence/lattice", rotateY: 0 }, "*-esw": { base: "fence/lattice", rotateY: 90 }, "*-nesw-free": { base: "fence/lattice", rotateY: 0 } }, blockmaterial: "Wood", texturesByType: { "*": { "wood": { base: "debarked/{wood}" } } /*"*-empty": { "wood": { base: "debarked/{wood}" } }, "*-n": { "wood": { base: "debarked/{wood}" } }, "*-e": { "wood": { base: "debarked/{wood}" } }, "*-s": { "wood": { base: "debarked/{wood}" } }, "*-w": { "wood": { base: "debarked/{wood}" } }, "*-ns": { "wood": { base: "debarked/{wood}" } }, "*-ew": { "wood": { base: "debarked/{wood}" } }, "*-ne": { "wood": { base: "debarked/{wood}" } }, "*-nw": { "wood": { base: "debarked/{wood}" } }, "*-es": { "wood": { base: "debarked/{wood}" } }, "*-sw": { "wood": { base: "debarked/{wood}" } }, "*-nes": { "wood": { base: "debarked/{wood}" } }, "*-new": { "wood": { base: "debarked/{wood}" } }, "*-nsw": { "wood": { base: "debarked/{wood}" } }, "*-esw": { "wood": { base: "debarked/{wood}" } }, "*-nesw-free": { "wood": { base: "debarked/{wood}" } }*/ }, sidesolid: { all: false }, sideopaque: { all: false }, resistance: 3, lightAbsorption: 0, sounds: { "place": "game:block/planks", "hit": "game:block/planks", "break": "game:block/planks", "walk": "game:walk/wood" }, selectionboxbytype: { "*-empty": { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625 }, "*-n": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625, rotateY: 270}, "*-e": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625, rotateY: 180}, "*-s": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-w": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 0.625}, "*-ns": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-gns": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-ngs": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625, rotateY: 90}, "*-ew": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625}, "*-egw": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625}, "*-gew": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625}, }, selectionboxesbytype: { "*-sw": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 0 } ], "*-ne": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 180 } ] , "*-nw": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 270 } ], "*-es": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 90 } ], "*-nes": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 180 } ], "*-new": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 270 } ], "*-nsw": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 0 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 0 } ], "*-esw": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.0625, z2: 0.625, rotateY: 90 } ], "*-nesw": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.0625, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.0625, z2: 0.625 } ] }, collisionboxbytype: { "*-empty": { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625 }, "*-n": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625, rotateY: 270}, "*-e": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625, rotateY: 180}, "*-s": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-w": { x1: 0, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 0.625}, "*-ns": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-gns": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-ngs": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625, rotateY: 90}, "*-ew": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625}, "*-egw": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625}, "*-gew": { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625}, }, collisionboxesbytype: { "*-sw": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 0 } ], "*-ne": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 180 } ] , "*-nw": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 270 } ], "*-es": [ { x1: 0.375, y1: 0, z1: 0.375, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 90 } ], "*-nes": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 180 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 180 } ], "*-new": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 270 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 270 } ], "*-nsw": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 0 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 0 } ], "*-esw": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1, rotateY: 90 }, { x1: 0, y1: 0, z1: 0.375, x2: 0.375, y2: 1.3125, z2: 0.625, rotateY: 90 } ], "*-nesw": [ { x1: 0.375, y1: 0, z1: 0, x2: 0.625, y2: 1.3125, z2: 1 }, { x1: 0, y1: 0, z1: 0.375, x2: 1, y2: 1.3125, z2: 0.625 } ] }, combustibleProps: { burnTemperature: 600, burnDuration: 10, }, materialDensity: 600, tpHandTransform: { translation: { x: -1.5, y: -1, z: -1.2 }, rotation: { x: 5, y: -3, z: -96 }, scale: 0.37 }, groundTransform: { translation: { x: 0, y: 0.05, z: 0 }, rotation: { x: 90, y: -45, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 2.07 } } To the best of my knowledge i think it wants something like this: drops: [ { type: "block", code: "CODE NAME GOES HERE", quantity: { avg: 0.85, var: 0 } } ], Even when i put something similar in there, its does not like it and crashes with same error. So i think I'm missing something here
-
Been waiting to do this article long time. Figured id ask the community before I build this in near future. Id like a fire that has multi output. So you could get charcoal for example from making campfire for example plus food if you cooked on the fire. Obviously the fire needs to be out before you grab the charcoal or maybe that puts the fire out? Thought? I think id just need to add output to the code? Never made a gui yet from code. So something to learn i suppose. Thoughts anyone on how difficult this will be?
-
Working on a tomahawk for the mod. Should I allow it to be thrown and strictly used as a weapon or be more like a tool/axe and can't be thrown?
-
Apologies in advance, I thought I had a thread already created but could not find it. Wood working is WIP currently but wanted to share a few things. Mod aims to expand your wood working shop, tools and wood working skills. Sneak Peak: Macuahuitl weapon ojibwe weapon Flint saw Clamp Workbench Fence Just a few items of several in the mod pack.
-
Object Not Appearing
Micah Holmes replied to Micah Holmes's topic in Mod Development Questions/Troubleshooting
Well for now it's too much work for me to refactor it. If I was going to build a dll and all that jazz, id build logic for a well. Unfortunately my mod pack won't have additional shields sade face. Lol anyway thank you @The Insanity God for helping. Really appreciate it. -
Recently started building a mod that includes shields. Using the base games scripts for reference I discovered the shield code back end is hard coded. Since the game is heavily mod focused, I think you should consider updating this code and allowing modders to better support custom shield mods. Ref:
-
- 4
-
-
Object Not Appearing
Micah Holmes replied to Micah Holmes's topic in Mod Development Questions/Troubleshooting
@The Insanity God you would be 100% correct. So unless I use one of those names it will not render the shield/object. Also found out no matter what I do in my Lang file, it forces the "Crude" sheild name for example: "item-shield-wscutum-crude-*": "Wooden scutum shield", Here is my item code: { code: "shield-wscutum", class: "ItemShield", storageFlags: 257, attributes: { shield: { blockSoundLightByType: { "*": "held/shieldblock-wood-light" }, blockSoundHeavyByType: { "*": "held/shieldblock-wood-heavy" }, protectionChanceByType: { "*-apprentice": { "passive-projectile": 0.1, "active-projectile": 0.9, "passive": 0.1, "active": 0.8 }, "*-journeyman": { "passive-projectile": 0.15, "active-projectile": 0.9, "passive": 0.15, "active": 0.85 }, "*-artisan": { "passive-projectile": 0.2, "active-projectile": 0.95, "passive": 0.2, "active": 0.9 }, "*-master": { "passive-projectile": 0.2, "active-projectile": 1, "passive": 0.2, "active": 0.95 }, "*-grandmaster": { "passive-projectile": 0.3, "active-projectile": 1, "passive": 0.3, "active": 0.98 } }, projectileDamageAbsorptionByType: { "*-apprentice": 1, "*-journeyman": 1.5, "*-artisan*": 2, "*-master": 3, "*-grandmaster": 4 }, damageAbsorptionByType: { "*-apprentice": 1, "*-journeyman": 1.5, "*-artisan*": 2, "*-master": 3, "*-grandmaster": 4 } }, handbook: { groupBy: ["shield-*"] }, rackable: true, toolrackTransformByType: { "shield-wscutum-*": { translation: { x: 0.3, y: -0.62, z: 0.8 }, rotation: { x: 91, y: -6, z: 0 }, scale: 1.5 } }, moldrackable: false, onmoldrackTransformByType: { "shield-wscutum-*": { translation: { x: 0.82, y: 0.5, z: -0.45 }, rotation: { x: -90, y: 82, z: 90 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1.2 } }, groundStorageTransformByType: { "shield-wscutum-*": { translation: { x: -0.5, y: -0.2, z: -0.2 }, rotation: { x: 21, y: 168, z: -81 }, scale: 1 } }, durabilityGains: { "wood": { "aged": -200, "ebony": 30, "purpleheart": 20, "oak": 15 } }, attachableToEntity: { categoryCode: "shield", texturePrefixCode: "shield", attachedShapeByType: { "shield-wscutum-*": { base: "shields/scutum" } } } }, behaviors: [{ name: "GroundStorable", properties: { layout: 'WallHalves', wallOffY: 1, ctrlKey: true, selectionBox: { x1: 0, y1: 0, z1: 0, x2: 1, y2: 0.1, z2: 1 }, collisionBox: { x1: 0, y1: 0, z1: 0, x2: 0, y2: 0, z2: 0 }, } }], variantgroups: [ { code: "construction", states: [ "crude" ] }, { code: "type", states: ["apprentice", "journeyman", "artisan", "master", "grandmaster" ] } ], creativeinventory: { "general": ["shield-wscutum-*"], "items": ["shield-wscutum-*"], "tools": ["shield-wscutum-*"] }, shapeByType: { "shield-wscutum-*": { base: "shields/scutum" } }, durabilitybytype: { "*-apprentice": 80, "*-journeyman": 150, "*-artisan*": 250, "*-master": 300, "*-grandmaster": 400 }, fpHandTransformByType: { "shield-wscutum-*": { translation: { x: -0.86, y: 0.04, z: -0.8 }, rotation: { x: 0, y: 1, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1.2 } }, guiTransformByType: { "shield-wscutum-*": { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 34, y: 32, z: -166 }, origin: { x: 0.28, y: -0.28, z: 0.47 }, scale: 1.96 } }, groundTransform: { translation: { x: 0, y: 0.37, z: 0 }, rotation: { x: -93, y: 0, z: 0 }, origin: { x: 0.5, y: 0, z: 0.43 }, scale: 5 }, tpHandTransformByType: { "shield-wscutum-*": { translation: { x: -0.86, y: 0.04, z: -0.8 }, rotation: { x: 0, y: 1, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1.2 } }, tpOffHandTransformByType: { "shield-wscutum-*": { translation: { x: 0, y: 0.2, z: -0.078 }, rotation: { x: 0, y: 180, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1.2 } } } Every shield I made is "crude shield". they hard coded this object. I hope they plan to fix that in the future since the game is mod based. -
Object Not Appearing
Micah Holmes replied to Micah Holmes's topic in Mod Development Questions/Troubleshooting
@The Insanity God Just tested it again, it appears to not want to render? I have the object but its not rendering on screen? I'm little confused how to solve that issue. Is my problem with the shape? { "editor": { "collapsedPaths": "Root/Center/bend3,Root/Center/bend4", "allAngles": false, "entityTextureMode": false }, "textureWidth": 16, "textureHeight": 16, "textureSizes": { }, "textures": { "wood": "stain/kapok-4", "trim1": "debarked/purpleheart", "trim2": "debarked/purpleheart" }, "elements": [ { "name": "Center", "from": [ 0.0, -4.0, 4.0 ], "to": [ 3.0, 4.0, 5.0 ], "rotationOrigin": [ 0.0, -4.0, 4.0 ], "faces": { "north": { "texture": "#wood", "uv": [ 0.0, 0.0, 3.0, 8.0 ] }, "east": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "south": { "texture": "#wood", "uv": [ 0.0, 0.0, 3.0, 8.0 ] }, "west": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "up": { "texture": "#wood", "uv": [ 0.0, 0.0, 3.0, 1.0 ] }, "down": { "texture": "#wood", "uv": [ 0.0, 0.0, 3.0, 1.0 ] } }, "children": [ { "name": "bend1", "from": [ 0.79, 0.0, -1.9 ], "to": [ 1.79, 8.0, -0.9 ], "rotationOrigin": [ 0.0, 0.0, -1.0 ], "rotationY": -112.5, "faces": { "north": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "east": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "south": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "west": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "up": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } }, "children": [ { "name": "Plate2", "from": [ 1.0, 0.0, 0.0 ], "to": [ 1.2, 1.0, 1.0 ], "rotationOrigin": [ 1.0, 0.0, 0.0 ], "faces": { "north": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "east": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "west": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "down": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] } } }, { "name": "Plate1", "from": [ 1.0, 7.0, 0.0 ], "to": [ 1.2, 8.0, 1.0 ], "rotationOrigin": [ 1.0, 7.0, 0.0 ], "faces": { "north": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "east": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "west": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "down": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] } } } ] }, { "name": "bend2", "from": [ 0.656, 0.0, -1.7 ], "to": [ 1.656, 8.0, -0.7 ], "rotationOrigin": [ 0.0, 0.0, -1.0 ], "rotationY": -135.0, "faces": { "north": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "east": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "south": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "west": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "up": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } }, "children": [ { "name": "Plate6", "from": [ 1.0, 0.0, 0.0 ], "to": [ 1.2, 1.0, 1.0 ], "rotationOrigin": [ 1.0, 0.0, 0.0 ], "faces": { "north": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "east": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "west": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "down": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] } } }, { "name": "Plate7", "from": [ 1.0, 7.0, 0.0 ], "to": [ 1.2, 8.0, 1.0 ], "rotationOrigin": [ 1.0, 7.0, 0.0 ], "faces": { "north": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "east": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "west": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "down": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] } } } ] }, { "name": "bend3", "from": [ 2.6, 0.0, -0.1 ], "to": [ 3.6, 8.0, 0.9 ], "rotationOrigin": [ 3.0, 0.0, 0.0 ], "rotationY": 22.5, "faces": { "north": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "east": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "south": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "west": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "up": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } }, "children": [ { "name": "Plate", "from": [ 0.0, 0.0, 1.0 ], "to": [ 1.0, 1.0, 1.2 ], "rotationOrigin": [ 0.0, 0.0, 1.0 ], "faces": { "north": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "east": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "south": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "west": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "up": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 0.5 ] }, "down": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 0.5 ] } } }, { "name": "Plate3", "from": [ 0.0, 7.0, 1.0 ], "to": [ 1.0, 8.0, 1.2 ], "rotationOrigin": [ 0.0, 7.0, 1.0 ], "faces": { "north": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "east": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "south": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "west": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "up": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 0.5 ] }, "down": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 0.5 ] } } } ] }, { "name": "bend4", "from": [ 3.4, 0.0, -0.7 ], "to": [ 4.4, 8.0, 0.3 ], "rotationOrigin": [ 4.0, 0.0, 0.0 ], "rotationY": 45.0, "faces": { "north": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "east": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "south": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "west": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 8.0 ] }, "up": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#wood", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } }, "children": [ { "name": "Plate4", "from": [ 0.0, 0.0, 1.0 ], "to": [ 1.0, 1.0, 1.2 ], "rotationOrigin": [ 0.0, 0.0, 1.0 ], "faces": { "north": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "east": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "south": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "west": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "up": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 0.5 ] }, "down": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 0.5 ] } } }, { "name": "Plate5", "from": [ 0.0, 7.0, 1.0 ], "to": [ 1.0, 8.0, 1.2 ], "rotationOrigin": [ 0.0, 7.0, 1.0 ], "faces": { "north": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "east": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "south": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "west": { "texture": "#trim1", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "up": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 0.5 ] }, "down": { "texture": "#trim1", "uv": [ 0.0, 0.0, 1.0, 0.5 ] } } } ] } ] }, { "name": "PlateTop", "from": [ 0.0, 3.0, 5.0 ], "to": [ 3.0, 4.0, 5.2 ], "rotationOrigin": [ 0.0, 3.0, 5.0 ], "faces": { "north": { "texture": "#trim2", "uv": [ 0.0, 0.0, 3.0, 1.0 ] }, "east": { "texture": "#trim2", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "south": { "texture": "#trim2", "uv": [ 0.0, 0.0, 3.0, 1.0 ] }, "west": { "texture": "#trim2", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "up": { "texture": "#trim2", "uv": [ 0.0, 0.0, 3.0, 0.5 ] }, "down": { "texture": "#trim2", "uv": [ 0.0, 0.0, 3.0, 0.5 ] } } }, { "name": "PlateTop2", "from": [ 0.0, -4.0, 5.0 ], "to": [ 3.0, -3.0, 5.2 ], "rotationOrigin": [ 0.0, -4.0, 5.0 ], "faces": { "north": { "texture": "#trim2", "uv": [ 0.0, 0.0, 3.0, 1.0 ] }, "east": { "texture": "#trim2", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "south": { "texture": "#trim2", "uv": [ 0.0, 0.0, 3.0, 1.0 ] }, "west": { "texture": "#trim2", "uv": [ 0.0, 0.0, 0.5, 1.0 ] }, "up": { "texture": "#trim2", "uv": [ 0.0, 0.0, 3.0, 0.5 ] }, "down": { "texture": "#trim2", "uv": [ 0.0, 0.0, 3.0, 0.5 ] } } } ]} -
I made a few new shield shapes/items recently and I have one that is not appearing in the GUI or on screen. I vaguely remember there was a way to adjust position of items in game but i don't remember how. Item Model: In game: Item code; { code: "shield", class: "ItemShield", storageFlags: 257, attributes: { shield: { blockSoundLightByType: { "*": "held/shieldblock-wood-light" }, blockSoundHeavyByType: { "*": "held/shieldblock-wood-heavy" }, protectionChance: { "passive-projectile": 0.2, "active-projectile": 1, "passive": 0.2, "active": 0.9 }, projectileDamageAbsorptionByType: { "*": 3 }, damageAbsorptionByType: { "*": 3 } }, handbook: { groupBy: ["shield-*"] }, rackable: true, toolrackTransformByType: { "shield-scutum": { translation: { x: 0.3, y: -0.62, z: 0.8 }, rotation: { x: 91, y: -6, z: 0 }, scale: 1.5 }, "*": { translation: { x: 0.3, y: -0.62, z: -0.625 }, rotation: { x: 91, y: -6, z: -90 }, scale: 1.5 } }, moldrackable: true, onmoldrackTransformByType: { "shield-scutum": { translation: { x: 0.82, y: 0.5, z: -0.45 }, rotation: { x: -90, y: 82, z: 90 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1.2 }, "*": { translation: { x: 0.74, y: 0.5, z: -0.4 }, rotation: { x: -90, y: 82, z: 90 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1.01 } }, groundStorageTransformByType: { "shield-scutum": { translation: { x: -0.5, y: -0.2, z: -0.2 }, rotation: { x: 21, y: 168, z: -81 }, scale: 1 }, "*": { translation: { x: -0.42, y: -0.45, z: -0.105 }, rotation: { x: 21, y: 179, z: -90 }, scale: 1 } }, // Note: variantgroups inside attributes. Used to generate all variants for the creative inventory dynamically, and for valid recipe checking variantGroups: { "metal": [ "silver" ], "wood": ["aged" ], "color": [ "purple"], "deco": ["none" ] }, durabilityGains: { "wood": { "aged": -200, "ebony": 30, "purpleheart": 20, "oak": 15 } }, attachableToEntity: { categoryCode: "shield", texturePrefixCode: "shield", attachedShapeByType: { "shield-scutum": { base: "shields/scutum3" }, "*": { base: "shields/scutum3" } } }, allowedVariants: [ { construction: "woodmetal", wood: "*", metal: "*", color: "*", deco: "none" }, { construction: "woodmetalleather", wood: "*", metal: "*", color: "*", deco: "none" }, { construction: "metal", wood: null, metal: "*", color: "*", deco: "none" }, { construction: "woodmetal", wood: "*", metal: "*", color: "*", deco: "ornate" }, { construction: "woodmetalleather", wood: "*", metal: "*", color: "*", deco: "ornate" }, { construction: "metal", wood: null, metal: "*", color: "*", deco: "ornate" }, ] }, behaviors: [{ name: "GroundStorable", properties: { layout: 'WallHalves', wallOffY: 1, ctrlKey: true, selectionBox: { x1: 0, y1: 0, z1: 0, x2: 1, y2: 0.1, z2: 1 }, collisionBox: { x1: 0, y1: 0, z1: 0, x2: 0, y2: 0, z2: 0 }, } }], variantgroups: [ { code: "construction", states: [ "scutum" ] } ], creativeinventory: { "general": ["shield-scutum"], "items": ["shield-scutum"], "tools": ["shield-scutum"] }, shapeByType: { "shield-scutum": { base: "shields/scutum3" }, "*": { base: "shields/scutum3" } }, textures: { "wood": { "base": "stain/oak-4" }, "trim1": { "base": "debarked/pine" }, "trim2": { "base": "debarked/pine" } }, durabilitybytype: { "shield-scutum": 80 }, fpHandTransformByType: { "shield-scutum": { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 9, y: 154, z: 86 }, origin: { x: 0.2, y: 0, z: 0.23 }, scale: 5.38 }, "*": { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 10, y: 149, z: 90 }, origin: { x: 0, y: -0.1, z: 0.3 }, scale: 5.38 } }, guiTransformByType: { "shield-scutum": { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 34, y: 32, z: -163 }, origin: { x: 0.28, y: -0.28, z: 0.47 }, scale: 1.8 }, "*": { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 34, y: 32, z: -163 }, origin: { x: 0.21, y: -0.21, z: 0.49 }, scale: 1.8 } }, groundTransform: { translation: { x: 0, y: 0.37, z: 0 }, rotation: { x: -93, y: 0, z: 0 }, origin: { x: 0.5, y: 0, z: 0.43 }, scale: 5 }, tpHandTransformByType: { "shield-scutum": { translation: { x: -0.93, y: 0.04, z: -0.92 }, rotation: { x: 0, y: 1, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1 }, "*": { translation: { x: -0.98, y: 0, z: -0.85 }, rotation: { x: -4, y: 4, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1 } }, tpOffHandTransformByType: { "shield-scutum": { translation: { x: -0.12, y: 0.05, z: -0.078 }, rotation: { x: 0, y: 180, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1 }, "*": { translation: { x: -0.13, y: 0.01, z: -0.01 }, rotation: { x: -4, y: 173, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1 } } } Pretty sure here is my code area that needs adjusted: fpHandTransformByType: { "shield-scutum": { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 9, y: 154, z: 86 }, origin: { x: 0.2, y: 0, z: 0.23 }, scale: 5.38 }, "*": { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 10, y: 149, z: 90 }, origin: { x: 0, y: -0.1, z: 0.3 }, scale: 5.38 } }, guiTransformByType: { "shield-scutum": { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 34, y: 32, z: -163 }, origin: { x: 0.28, y: -0.28, z: 0.47 }, scale: 1.8 }, "*": { translation: { x: 0, y: 0, z: 0 }, rotation: { x: 34, y: 32, z: -163 }, origin: { x: 0.21, y: -0.21, z: 0.49 }, scale: 1.8 } }, groundTransform: { translation: { x: 0, y: 0.37, z: 0 }, rotation: { x: -93, y: 0, z: 0 }, origin: { x: 0.5, y: 0, z: 0.43 }, scale: 5 }, tpHandTransformByType: { "shield-scutum": { translation: { x: -0.93, y: 0.04, z: -0.92 }, rotation: { x: 0, y: 1, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1 }, "*": { translation: { x: -0.98, y: 0, z: -0.85 }, rotation: { x: -4, y: 4, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1 } }, tpOffHandTransformByType: { "shield-scutum": { translation: { x: -0.12, y: 0.05, z: -0.078 }, rotation: { x: 0, y: 180, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1 }, "*": { translation: { x: -0.13, y: 0.01, z: -0.01 }, rotation: { x: -4, y: 173, z: 0 }, origin: { x: 0.5, y: 0, z: 0.5 }, scale: 1 } } }
-
Not sure where place/share this but I made a fairly round shield model I'd like to share with the community. feel free to adjust and perfect it as you see fit. Took a little time to get this made but really wanted to share with community. model code: { "editor": { "collapsedPaths": "Root/updown2,Root/updown,Root/shield", "allAngles": false, "entityTextureMode": false }, "textureWidth": 16, "textureHeight": 16, "textureSizes": { }, "textures": { }, "elements": [ { "name": "shield", "from": [ 0.0, 0.0, 3.0 ], "to": [ 1.0, 1.0, 4.0 ], "rotationOrigin": [ 0.0, 0.0, 3.0 ], "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } }, "children": [ { "name": "updown2", "from": [ 0.0, 1.0, 0.0 ], "to": [ 1.0, 2.0, 1.0 ], "rotationOrigin": [ 0.0, 1.0, 0.0 ], "rotationZ": -90.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } }, "children": [ { "name": "Cube15", "from": [ 1.0, 5.5, 0.0 ], "to": [ 11.0, 6.5, 1.0 ], "rotationOrigin": [ 1.0, 5.0, 0.0 ], "rotationZ": -100.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube16", "from": [ 2.32, -5.3, 0.0 ], "to": [ 12.32, -4.3, 1.0 ], "rotationOrigin": [ 2.0, -5.0, 0.0 ], "rotationZ": 115.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube17", "from": [ 2.32, 4.7, 0.0 ], "to": [ 12.32, 5.7, 1.0 ], "rotationOrigin": [ 2.0, 5.0, 0.0 ], "rotationZ": -115.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube18", "from": [ 1.05, 4.5, 0.0 ], "to": [ 11.05, 5.5, 1.0 ], "rotationOrigin": [ 1.0, 5.0, 0.0 ], "rotationZ": -100.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube19", "from": [ 1.05, -5.5, 0.0 ], "to": [ 11.05, -4.5, 1.0 ], "rotationOrigin": [ 1.0, -5.0, 0.0 ], "rotationZ": 100.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube20", "from": [ -0.8, -5.3, 0.0 ], "to": [ 9.2, -4.3, 1.0 ], "rotationOrigin": [ -1.0, -5.0, 0.0 ], "rotationZ": 75.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube21", "from": [ -0.8, 4.7, 0.0 ], "to": [ 9.2, 5.7, 1.0 ], "rotationOrigin": [ -1.0, 5.0, 0.0 ], "rotationZ": -75.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube22", "from": [ -3.35, 3.5, 0.0 ], "to": [ 6.65, 4.5, 1.0 ], "rotationOrigin": [ -2.0, 3.0, 0.0 ], "rotationZ": -65.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube23", "from": [ -1.0, -5.0, 0.0 ], "to": [ 9.0, -4.0, 1.0 ], "rotationOrigin": [ -1.0, -5.0, 0.0 ], "rotationZ": 65.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube24", "from": [ -3.0, -4.0, 0.0 ], "to": [ 7.0, -3.0, 1.0 ], "rotationOrigin": [ -3.0, -4.0, 0.0 ], "rotationZ": 45.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube25", "from": [ -7.0, 2.0, 0.0 ], "to": [ 3.0, 3.0, 1.0 ], "rotationOrigin": [ -4.0, -1.0, 0.0 ], "rotationZ": -45.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube26", "from": [ -5.0, 0.0, 0.0 ], "to": [ 5.0, 1.0, 1.0 ], "rotationOrigin": [ -1.0, 0.0, 0.0 ], "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube27", "from": [ 0.0, -5.0, 0.0 ], "to": [ 1.0, 5.0, 1.0 ], "rotationOrigin": [ 0.0, -5.0, 0.0 ], "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 10.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 10.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 10.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 10.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Cube32", "from": [ 0.0, 0.0, 0.0 ], "to": [ 1.0, 1.0, 1.0 ], "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } } ] }, { "name": "updown", "from": [ 0.0, 1.0, 0.0 ], "to": [ 1.0, 2.0, 1.0 ], "rotationOrigin": [ 0.0, 1.0, 0.0 ], "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } }, "children": [ { "name": "Cube14", "from": [ 1.0, 5.5, 0.0 ], "to": [ 11.0, 6.5, 1.0 ], "rotationOrigin": [ 1.0, 5.0, 0.0 ], "rotationZ": -100.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube13", "from": [ 2.32, -5.3, 0.0 ], "to": [ 12.32, -4.3, 1.0 ], "rotationOrigin": [ 2.0, -5.0, 0.0 ], "rotationZ": 115.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube12", "from": [ 2.32, 4.7, 0.0 ], "to": [ 12.32, 5.7, 1.0 ], "rotationOrigin": [ 2.0, 5.0, 0.0 ], "rotationZ": -115.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube11", "from": [ 1.05, 4.5, 0.0 ], "to": [ 11.05, 5.5, 1.0 ], "rotationOrigin": [ 1.0, 5.0, 0.0 ], "rotationZ": -100.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube10", "from": [ 1.05, -5.5, 0.0 ], "to": [ 11.05, -4.5, 1.0 ], "rotationOrigin": [ 1.0, -5.0, 0.0 ], "rotationZ": 100.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube9", "from": [ -0.8, -5.3, 0.0 ], "to": [ 9.2, -4.3, 1.0 ], "rotationOrigin": [ -1.0, -5.0, 0.0 ], "rotationZ": 75.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube8", "from": [ -0.8, 4.7, 0.0 ], "to": [ 9.2, 5.7, 1.0 ], "rotationOrigin": [ -1.0, 5.0, 0.0 ], "rotationZ": -75.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube7", "from": [ -3.35, 3.5, 0.0 ], "to": [ 6.65, 4.5, 1.0 ], "rotationOrigin": [ -2.0, 3.0, 0.0 ], "rotationZ": -65.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube6", "from": [ -1.0, -5.0, 0.0 ], "to": [ 9.0, -4.0, 1.0 ], "rotationOrigin": [ -1.0, -5.0, 0.0 ], "rotationZ": 65.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube5", "from": [ -3.0, -4.0, 0.0 ], "to": [ 7.0, -3.0, 1.0 ], "rotationOrigin": [ -3.0, -4.0, 0.0 ], "rotationZ": 45.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube4", "from": [ -4.5, 1.0, 0.0 ], "to": [ 5.5, 2.0, 1.0 ], "rotationOrigin": [ -1.0, 1.0, 0.0 ], "rotationZ": -45.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube3", "from": [ -5.0, 0.0, 0.0 ], "to": [ 5.0, 1.0, 1.0 ], "rotationOrigin": [ -1.0, 0.0, 0.0 ], "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 10.0, 1.0 ] } } }, { "name": "Cube2", "from": [ 0.0, -5.0, 0.0 ], "to": [ 1.0, 5.0, 1.0 ], "rotationOrigin": [ 0.0, -5.0, 0.0 ], "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 10.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 10.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 10.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 10.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Cube28", "from": [ -4.76, 0.0, 0.0 ], "to": [ -2.76, 1.0, 1.0 ], "rotationOrigin": [ 1.0, 0.0, 0.0 ], "rotationZ": -25.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] } } }, { "name": "Cube29", "from": [ -4.6, 0.0, 0.0 ], "to": [ -2.6, 1.0, 1.0 ], "rotationOrigin": [ 1.0, 0.0, 0.0 ], "rotationZ": 50.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] } } }, { "name": "Cube30", "from": [ -4.8, -0.2, 0.0 ], "to": [ -2.8, 0.8, 1.0 ], "rotationOrigin": [ 1.0, 0.0, 0.0 ], "rotationZ": 35.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] } } }, { "name": "Cube31", "from": [ -5.0, -0.3, 0.0 ], "to": [ -3.0, 0.7, 1.0 ], "rotationOrigin": [ 0.0, 0.0, 0.0 ], "rotationZ": -90.0, "faces": { "north": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }, "east": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "south": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }, "west": { "texture": "#null", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "up": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }, "down": { "texture": "#null", "uv": [ 0.0, 0.0, 2.0, 1.0 ] } } } ] } ] } ]}
-
Working on my Wood Working mod and I thought it might be kinda cool to add some "tribe" like items/weapons. The main story mentions a few towns: Nadiya Village Pineridge Cindermere Quarzstadt Anyone know of any other cities or towns main story? Is it "acceptable" to make some tribe names up and create some lore? the Tribe items, I'm thinking you have to buy from a trader or rather the recipes to make the tribe items. Open to names or info about the game if anyone has anything to share.