Jump to content

Recommended Posts

Posted

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 ? 

Posted (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 by The Insanity God
Posted
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..

Posted (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 by The Insanity God
Posted

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.

Posted

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 

Posted
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.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.