From 4fb19ada791e3677c0a402f0cff07ab673b2345d Mon Sep 17 00:00:00 2001 From: CodedSakura Date: Tue, 11 Aug 2026 15:38:36 +0300 Subject: [PATCH] fix issue with stale metadata throwing errors --- scripts/metadata.js | 4 ++++ scripts/planner.js | 5 +++-- scripts/solver.js | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/metadata.js b/scripts/metadata.js index 78f909a..e39346a 100644 --- a/scripts/metadata.js +++ b/scripts/metadata.js @@ -18,6 +18,8 @@ export function setDomMetadata(domNode, data) { export function setCellMetadata(node, key, value) { if (!node.dataset.metadata) { node.dataset.metadata = createMetadata({ [key]: value }).toString(10); + } else if (!metadata[Number(node.dataset.metadata)]) { + metadata[Number(node.dataset.metadata)] = { [key]: value }; } else { metadata[Number(node.dataset.metadata)][key] = value; } @@ -38,6 +40,7 @@ export function getMetadata(id) { return metadata[id]; } export function getCellMetadata(node, key) { + if (!node.dataset.metadata) return null; return metadata[Number(node.dataset.metadata)][key]; } @@ -53,6 +56,7 @@ export function deleteMetadata(id) { } export function clearCellMetadata(node, key) { if (!node.dataset.metadata) return; + if (!metadata[Number(node.dataset.metadata)]) return; delete metadata[Number(node.dataset.metadata)][key]; processCellOverlays(node, key, false); } diff --git a/scripts/planner.js b/scripts/planner.js index ed36ae0..605fc40 100644 --- a/scripts/planner.js +++ b/scripts/planner.js @@ -6,7 +6,7 @@ import { initialize3dArray } from "./js-utils.js"; import { recall, save } from "./storage.js"; import { registerLoadCallback } from "./main.js"; import { getBlockPickerActiveItem, getBlockPickerRecipe } from "./block-picker.js"; -import { clearCellMetadata, getMetadata, setCellMetadata } from "./metadata.js"; +import { clearCellMetadata, deleteMetadata, getMetadata, setCellMetadata } from "./metadata.js"; import { retainTooltipHover } from "./tooltip.js"; import { checkEquivalence, lookupFromMetadata, parseRuleAsString } from "./ncpf-utils.js"; @@ -250,13 +250,14 @@ function cellClickEvent(e) { if (e.target.tile === "-1") return; e.target.dataset.previewRemove = "yes"; - clearCellMetadata(e.target, "block_recipe"); + deleteMetadata(e.target); } else if (e.buttons === 1) { // add if (e.target.dataset.preview === activeItem.toString(10)) return; e.target.dataset.preview = activeItem.toString(10); e.target.replaceChildren(makeAtlasImage(activeItem)); + deleteMetadata(e.target); const pickerRecipe = getBlockPickerRecipe(); if (pickerRecipe) { setCellMetadata(e.target, "block_recipe", pickerRecipe); diff --git a/scripts/solver.js b/scripts/solver.js index c311cf6..5148b57 100644 --- a/scripts/solver.js +++ b/scripts/solver.js @@ -163,6 +163,7 @@ export async function runSolver() { } setCellMetadata(cell.dom, "primer", cell.primer); }); + console.log(fuelCells) await debugBlockSolver("primed");