Micah Holmes Posted November 22, 2025 Report Posted November 22, 2025 Getting a exception when I place my new vessels. it was working with a single variant. Now I added all 34 and it crashes when i place one: error: 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 56 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 Based on testing and research, I know this is the lines in question via script: creativeinventoryStacksByType: { "*": [ { tabs: [ "general", "decorative" ], stacks: [ { type: "block", code: "storagevessel-glazed-{variant}-fired", attributes: { type: "normal" } }, ] } ] }, I feel like it wants me to explicitly list each variant ?
The Insanity God Posted November 22, 2025 Report Posted November 22, 2025 (edited) `BlockGenericTypedContainer.OnPickBlock` (used by the game to find the name of your placed block) appears to be unable to find your block. public override ItemStack OnPickBlock(IWorldAccessor world, BlockPos pos) { ItemStack stack = new ItemStack(world.GetBlock(base.CodeWithVariant("side", "east")), 1); BlockEntityGenericTypedContainer be = world.BlockAccessor.GetBlockEntity(pos) as BlockEntityGenericTypedContainer; if (be != null) { stack.Attributes.SetString("type", be.type); } else { stack.Attributes.SetString("type", this.defaultType); } return stack; } To be specific it's failing on the `world.GetBlock(base.CodeWithVariant("side", "east"))` part, I can think of 2 reasons why this might fail: 1. The "side" variant might be wrong: You don't actually need "side" variant but if you do have it, ensure that "east" is a valid state for it. (`CodeWithVariant` reconstructs the code but where the "side" is normally present will be replaced with "east") 2. The Code might be wrong: This could happen if you put a `-` in the code, quite a few people who do this... but this what the game uses as the separator for variants and using it in the code (or variant states) tends to mess up variant mutation. For instance if your code looks like this: code: "storagevessel-custom" The `CodeWithVariant` will actually only use `storagevessel` (because it searched for the first `-` to remove all variants) which would result in an incorrect code being generated. Don't think I can figure out anything more without seeing the actual block file. Edited November 22, 2025 by The Insanity God
xXx_Ape_xXx Posted November 22, 2025 Report Posted November 22, 2025 9 hours ago, Micah Holmes said: creativeinventoryStacksByType: { "*": [ { tabs: [ "general", "decorative" ], stacks: [ { type: "block", code: "storagevessel-glazed-{variant}-fired", attributes: { type: "normal" } }, ] } ] }, Can't use { } to dynamically declare variants when using inventorystacks, you have to list them separately. Hard give more advice without seeing the entire json for the vessels..
The Insanity God Posted November 22, 2025 Report Posted November 22, 2025 (edited) 21 minutes ago, xXx_Ape_xXx said: Can't use { } to dynamically declare variants when using inventorystacks, you have to list them separately. Hard give more advice without seeing the entire json for the vessels.. You sure about that? base game doesn't list the entries separately either.... creativeinventoryStacks: [ { tabs: [ "general", "decorative" ], stacks: [ { type: "block", code: "storagevessel-{color}-fired", attributes: { type: "normal" } }, ] } ] (from base game `assets\survival\blocktypes\clay\fired\storagevessel.json` file) EDIT: Maybe you are confused with the attribute based variant system the chests use? Where they do indeed need to be listed separately because it's not an actual variant but an "attribute based variant" creativeinventoryStacksByType: { "*-east": [ { tabs: [ "general", "decorative" ], stacks: [ { type: "block", code: "chest-east", attributes: { type: "normal-generic" } }, { type: "block", code: "chest-east", attributes: { type: "golden" } }, { type: "block", code: "chest-east", attributes: { type: "owl" } }, ] }, { tabs: [ "general", "clutter" ], stacks: [ { type: "block", code: "chest-east", attributes: { type: "normal-aged" } }, { type: "block", code: "chest-east", attributes: { type: "golden-aged" } }, { type: "block", code: "chest-east", attributes: { type: "owl-aged" } }, { type: "block", code: "chest-east", attributes: { type: "collapsed1" } }, { type: "block", code: "chest-east", attributes: { type: "collapsed2" } }, { type: "block", code: "chest-east", attributes: { type: "collapsed3" } }, ] } ] }, (from base game `assets\survival\blocktypes\wood\chest.json` file) Edited November 22, 2025 by The Insanity God
xXx_Ape_xXx Posted November 22, 2025 Report Posted November 22, 2025 Hm you have a point.. I remember trying to do something similar some time ago, and never got it to work until I listed everything separately, but I might have just missed something or got the syntax wrong.
Micah Holmes Posted November 22, 2025 Author Report Posted November 22, 2025 Here is the latest and greatest update so far. I was able to fix my original issue based on your feedback thank you for that .. Now I'm getting a new exception when I load the Raw clay versions up in my handbook Storagevessel-*-raw { code: "storagevessel", class: "Block", behaviors: [ { name: "GroundStorable", properties: { layout: 'SingleCenter' } }, { name: "Unplaceable", }, // The ground storable obsoletes this being a block. Should be an item, but is kept a block for backwards compatibility { name: "RightClickPickup"} ], variantgroups: [ { code: "glaze", states: ["ashforest", "chthonic", "copper", "earthen", "rain", "cowrie", "rime", "oxblood", "loam", "undergrowth", "beehive", "harvest", "honeydew", "rutile", "seasalt", "springflowers", "volcanic", "cloisonne", "cornflower", "talik", "caveaurora", "collonade", "rattlesnake", "waves", "wintersea", "amber", "boneash", "burnt", "celadon", "moss", "ochre", "tenmoku", "burned" ] }, { code: "state", states: ["raw"] } ], shape: { base: "game:block/clay/storagevessel" }, textures: { all: { base: "game:block/clay/redclay" } }, attributes: { reinforcable: true, humanoidTraversalCost: 100, tempGlowMode: 1, partialAttachable: true, onTongTransform: { translation: { x: -1.3, y: -1.06, z: -0.4 }, rotation: { x: -88, y: -16, z: -2 }, scale: 0.7 }, }, attributesByType:{ "*amber-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*boneash-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*burnt-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*celadon-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*moss-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*ochre-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*tenmoku-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*burned-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*copper-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*cowrie-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*earthen-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*rutile-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*seasalt-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*ashforest-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*beehive-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*caveaurora-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*chthonic-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*cloisonne-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*collonade-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*cornflower-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*harvest-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*honeydew-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*loam-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*oxblood-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*rain-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*rattlesnake-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*rime-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*springflowers-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*talik-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*undergrowth-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*volcanic-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*waves-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } }, "*wintersea-raw":{ beehivekiln:{ "0": { "type": "block", "code": "storagevessel-{glaze}-fired", attributes: { type: "normal" } } } } }, blockmaterial: "Ceramic", creativeinventory: { "general": ["*"], "decorative": ["*"] }, replaceable: 1000, resistance: 0.8, maxStackSize: 4, sideAo: { all: false }, lightAbsorption: 0, sounds: { walk: "game:walk/stone", break: "game:block/ceramicplace", hit: "game:block/ceramichit", place: "game:block/ceramicplace" }, sideopaque: { all: false }, sidesolid: { all: false }, collisionSelectionBox: { x1: 0.125, y1: 0, z1: 0.125, x2: 0.875, y2: 1, z2: 0.875 }, heldTpIdleAnimation: "holdunderarm", combustiblePropsByType: { "storagevessel-*": { meltingPoint: 600, meltingDuration: 45, smeltedRatio: 1, smeltingType: "fire", smeltedStack: { type: "block", code: "storagevessel-{glaze}-fired", attributes: { type: "normal" } }, requiresContainer: false } }, guiTransform: { scale: 1.25 }, tpHandTransform: { translation: { x: -1, y: -0.5, z: -0.5 }, rotation: { x: 25, y: -20, z: -99 }, scale: 0.56 } } Storagevessel-{variant}-fired { code: "storagevessel", class: "BlockGenericTypedContainer", entityclass: "GenericTypedContainer", behaviors: [ { name: "BoatableGenericTypedContainer" }, { name: "Lockable" }, { name: "Container"}, { name: "UnstableFalling"} ], entityBehaviors: [ { name: "Animatable" } ], variantgroups: [ { code: "variant", states: ["amber", "boneash", "burnt", "celadon", "moss", "ochre", "tenmoku", "burned" ] }, { code: "state", states: ["fired"] } ], shape: { base: "game:block/clay/storagevessel" }, texturesByType: { "*": { "ceramic": { base: "block/clay/{variant}" }, "top": { base: "block/clay/{variant}" }, "sides": { base: "block/clay/{variant}" }, "inside": { base: "block/clay/{variant}" }, "normal-ceramic": { base: "block/clay/{variant}" }, "normal-top": { base: "block/clay/{variant}" }, "normal-sides": { base: "block/clay/{variant}" }, "normal-inside": { base: "block/clay/{variant}" } } }, attributes: { reinforcable: true, humanoidTraversalCost: 100, tempGlowMode: 1, partialAttachable: true, inventoryClassName: "chest", defaultType: "normal", types: ["normal"], drop: { "normal": true }, quantitySlots: { "normal": 12 }, dialogTitleLangCode: { "normal": "vesselcontents" }, storageType: { "normal": 32 }, retrieveOnly: { "normal": false }, spoilSpeedMulByFoodCat: { "normal": { "vegetable": 0.5, "grain": 0.35 } }, shape: { "normal": "game:block/clay/storagevessel" }, variantByGroup: "variant", variantByGroupInventory: "variant", openSound: "game:sounds/block/vesselopen", closeSound: "game:sounds/block/vesselclose", onTongTransform: { translation: { x: -1.3, y: -1.06, z: -0.4 }, rotation: { x: -88, y: -16, z: -2 }, scale: 0.7 } }, blockmaterial: "Ceramic", creativeinventoryStacksByType: { "*": [ { tabs: [ "general", "decorative" ], stacks: [ { type: "block", code: "storagevessel-{variant}-fired", attributes: { type: "normal" } }, ] } ] }, creativeinventory: { "general": ["*"], "items": ["*"] }, replaceable: 1000, resistance: 0.8, maxStackSize: 4, sideAo: { all: false }, lightAbsorption: 0, sounds: { walk: "game:walk/stone", break: "game:block/ceramicplace", hit: "game:block/ceramichit", place: "game:block/ceramicplace" }, sideopaque: { all: false }, sidesolid: { all: false }, collisionSelectionBox: { x1: 0.125, y1: 0, z1: 0.125, x2: 0.875, y2: 1, z2: 0.875 }, heldTpIdleAnimation: "holdunderarm", guiTransform: { scale: 1.25 }, tpHandTransform: { translation: { x: -1, y: -0.5, z: -0.5 }, rotation: { x: 25, y: -20, z: -99 }, scale: 0.56 } } These two work no issue when i place items in world via creative mode. Now I'm creating the crafting recipe and crashing: Storagevessel-ashforest-raw [ { ingredientPattern: "VSR", ingredients: { "S": { type: "item", code: "stencil-*", isTool: true }, "V": { type: "block", code: "game:storagevessel-blue-raw", quantity: 1 }, "R": { type: "item", code: "pottery-glaze-ashforest", quantity: 1 } }, width: 3, height: 1, output: { type: "block", code: "storagevessel-ashforest-raw", quantity: 1 } } ] Here is the crash info: Running on 64 bit Linux (Linux Mint 22.2) [Kernel 6.8.0.88] with 32050 MB RAM Game Version: v1.21.5 (Stable) 11/22/2025 1:43:36 PM: Critical error occurred Loaded Mods: mudmod@1.0.0, plantsexpandedmod@1.0.4, game@1.21.5, creative@1.21.5, survival@1.21.5 System.NullReferenceException: Object reference not set to an instance of an object. at Vintagestory.GameContent.CollectibleBehaviorHandbookTextAndExtraInfo.addIngredientForInfo(ICoreClientAPI capi, ItemStack[] allStacks, ActionConsumable`1 openDetailPageFor, ItemStack stack, List`1 components, Single marginTop, List`1 containers, List`1 fuels, List`1 molds, Boolean haveText) in VSSurvivalMod\Systems\Handbook\CollectibleBehaviorHandbookTextAndExtraInfo.cs:line 919 at Vintagestory.GameContent.CollectibleBehaviorHandbookTextAndExtraInfo.GetHandbookInfo(ItemSlot inSlot, ICoreClientAPI capi, ItemStack[] allStacks, ActionConsumable`1 openDetailPageFor) in VSSurvivalMod\Systems\Handbook\CollectibleBehaviorHandbookTextAndExtraInfo.cs:line 108 at Vintagestory.GameContent.GuiHandbookItemStackPage.GetPageText(ICoreClientAPI capi, ItemStack[] allStacks, ActionConsumable`1 openDetailPageFor) in VSSurvivalMod\Systems\Handbook\Gui\GuiHandbookItemStackPage.cs:line 119 at Vintagestory.GameContent.GuiHandbookItemStackPage.ComposePage(GuiComposer detailViewGui, ElementBounds textBounds, ItemStack[] allstacks, ActionConsumable`1 openDetailPageFor) in VSSurvivalMod\Systems\Handbook\Gui\GuiHandbookItemStackPage.cs:line 113 at Vintagestory.GameContent.ModSystemSurvivalHandbook.onComposePage(GuiHandbookPage page, GuiComposer detailViewGui, ElementBounds textBounds, ActionConsumable`1 openDetailPageFor) in VSSurvivalMod\Systems\Handbook\SurvivalHandbook.cs:line 128 at Vintagestory.GameContent.GuiDialogHandbook.initDetailGui() in VSSurvivalMod\Systems\Handbook\Gui\GuiDialogHandbook.cs:line 258 at Vintagestory.GameContent.GuiDialogHandbook.OpenDetailPageFor(String pageCode) in VSSurvivalMod\Systems\Handbook\Gui\GuiDialogHandbook.cs:line 313 at Vintagestory.GameContent.CollectibleBehaviorHandbookTextAndExtraInfo.<>c__DisplayClass19_0.<addIngredientForInfo>b__13(ItemStack cs) in VSSurvivalMod\Systems\Handbook\CollectibleBehaviorHandbookTextAndExtraInfo.cs:line 1009 at Vintagestory.API.Client.SlideshowItemstackTextComponent.OnMouseDown(MouseEvent args) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Text\Richtext\SlideshowItemstackTextComponent.cs:line 237 at Vintagestory.API.Client.GuiElementRichtext.OnMouseDownOnElement(ICoreClientAPI api, MouseEvent args) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Text\GuiElementRichtext.cs:line 526 at Vintagestory.API.Client.GuiElement.OnMouseDown(ICoreClientAPI api, MouseEvent mouse) in VintagestoryApi\Client\UI\Elements\Impl\GuiElement.cs:line 712 at Vintagestory.API.Client.GuiComposer.OnMouseDown(MouseEvent mouseArgs) in VintagestoryApi\Client\UI\GuiComposer.cs:line 470 at Vintagestory.API.Client.GuiDialog.OnMouseDown(MouseEvent args) in VintagestoryApi\Client\UI\Dialog\GuiDialog.cs:line 564 at Vintagestory.Client.NoObf.GuiManager.OnMouseDown(MouseEvent args) in VintagestoryLib\Client\Systems\Gui\GuiManager.cs:line 401 at Vintagestory.Client.NoObf.ClientMain.UpdateMouseButtonState(EnumMouseButton button, Boolean down) in VintagestoryLib\Client\ClientMain.cs:line 1969 at Vintagestory.Client.SystemHotkeys.OnPrimaryMouseButton(KeyCombination mb) in VintagestoryLib\Client\Systems\Player\Hotkeys.cs:line 52 at Vintagestory.Client.HotkeyManager.TriggerHotKey(KeyEvent keyEventargs, IWorldAccessor world, IPlayer player, Boolean allowCharacterControls, Boolean isGlobal, Boolean fallBack, Boolean keyup) in VintagestoryLib\Client\HotkeyManager.cs:line 424 at Vintagestory.Client.HotkeyManager.TriggerHotKey(KeyEvent keyEventargs, IWorldAccessor world, IPlayer player, Boolean allowCharacterControls, Boolean keyUp) in VintagestoryLib\Client\HotkeyManager.cs:line 394 at Vintagestory.Client.HotkeyManager.OnMouseButton(ClientMain game, EnumMouseButton button, Int32 modifiers, Boolean buttonDown) in VintagestoryLib\Client\HotkeyManager.cs:line 574 at Vintagestory.Client.NoObf.ClientMain.OnMouseDownRaw(MouseEvent args) in VintagestoryLib\Client\ClientMain.cs:line 1939 at Vintagestory.Client.GuiScreenRunningGame.OnMouseDown(MouseEvent args) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 339 at Vintagestory.Client.ScreenManager.OnMouseDown(MouseEvent e) in VintagestoryLib\Client\ScreenManager.cs:line 913 at Vintagestory.Client.NoObf.ClientPlatformWindows.Mouse_ButtonDown(MouseButtonEventArgs e) in VintagestoryLib\Client\ClientPlatform\Input.cs:line 203 at OpenTK.Windowing.Desktop.NativeWindow.OnMouseDown(MouseButtonEventArgs e) at OpenTK.Windowing.Desktop.NativeWindow.MouseButtonCallback(Window* window, MouseButton button, InputAction action, KeyModifiers mods) --- End of stack trace from previous location --- at OpenTK.Windowing.Desktop.NativeWindow.RethrowCallbackExceptionsIfNeeded() at OpenTK.Windowing.Desktop.NativeWindow.ProcessWindowEvents(Boolean waitForEvents) 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 Little confused why this part is crashing the handbook but the item its self works perfectly fine
Micah Holmes Posted November 22, 2025 Author Report Posted November 22, 2025 i think i found my issue. One is fired and one is not
The Insanity God Posted November 22, 2025 Report Posted November 22, 2025 30 minutes ago, Micah Holmes said: i think i found my issue. One is fired and one is not I think you might have understood, but I'm not entirely sure so I'll give my take anyway: The error is actually unrelated to the grid recipe it's crashing because of the combustible props: 1 hour ago, Micah Holmes said: combustiblePropsByType: { "storagevessel-*": { meltingPoint: 600, meltingDuration: 45, smeltedRatio: 1, smeltingType: "fire", smeltedStack: { type: "block", code: "storagevessel-{glaze}-fired", attributes: { type: "normal" } }, requiresContainer: false } }, In the case of your "storagevessel-ashforest-raw" this will resolve into "storagevessel-ashforest-fired", but your file for fired vessels does not have a "ashforest" variant: 1 hour ago, Micah Holmes said: variantgroups: [ { code: "variant", states: ["amber", "boneash", "burnt", "celadon", "moss", "ochre", "tenmoku", "burned" ] }, { code: "state", states: ["fired"] } ], As a result, when you open up the handbook page and it tries to display that it can smelt into "storagevessel-ashforest-fired" it crashes because it doesn't exist.
Recommended Posts