= {
+ type: 'pair',
+ range: keyNode.range,
+ key: keyNode,
+ value: valueNode,
+ }
+ valueNode.parent = newPair
+ node.children.splice(index, 1, newPair)
+ newPair.parent = node
+ return node
+ })
+ }
+ return
+
+
+
+
+ })}
+ {node.children.map((pair, index) => {
+ const key = pair.key?.value
+ if (staticChilds.includes(pair) || !key) {
+ return <>>
+ }
+ if (pair.value && core.Range.length(pair.value.range) === 0) {
+ return <>>
+ }
+ const child = pair.value
+ // TODO: correctly determine which dynamic field this is a key for
+ const fieldType = dynamicFields[0].type
+ const childType = simplifyType(dynamicFields[0].type, ctx)
+ const makeFieldEdit: MakeEdit = (edit) => {
+ makeEdit(() => {
+ const newChild = edit(child?.range ?? core.Range.create(pair.range.end))
+ if (newChild === undefined) {
+ node.children.splice(index, 1)
+ } else {
+ node.children[index] = {
+ type: 'pair',
+ range: pair.range,
+ key: pair.key,
+ value: newChild,
+ }
+ }
+ return node
+ })
+ }
+ return
+
+
+
+
+ })}
>
}
@@ -888,6 +983,7 @@ function getCategory(type: McdocType) {
case '::java::data::worldgen::template_pool::WeightedElement':
return 'pool'
case '::java::data::loot::LootCondition':
+ case '::java::data::advancement::AdvancementCriterion':
case '::java::data::worldgen::dimension::biome_source::BiomeSource':
case '::java::data::worldgen::processor_list::ProcessorRule':
case '::java::data::worldgen::feature::placement::PlacementModifier':
diff --git a/src/app/components/previews/LootTablePreview.tsx b/src/app/components/previews/LootTablePreview.tsx
index 837f41c8..43eff887 100644
--- a/src/app/components/previews/LootTablePreview.tsx
+++ b/src/app/components/previews/LootTablePreview.tsx
@@ -40,7 +40,10 @@ export const LootTablePreview = ({ docAndNode }: PreviewProps) => {
return []
}
const [itemTags, lootTables, itemComponents, enchantments, enchantmentTags] = dependencies
- const table = JSON.parse(text)
+ let table = {}
+ try {
+ table = JSON.parse(text)
+ } catch (e) {}
if (use1204) {
return generateLootTable1204(table, {
version, seed, luck, daytime, weather,
diff --git a/src/locales/en.json b/src/locales/en.json
index 0806963b..6021ea6a 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -3,6 +3,7 @@
"3d": "3D",
"add": "Add",
"add_bottom": "Add to bottom",
+ "add_key": "Add key",
"add_top": "Add to top",
"any_version": "Any",
"assets": "Assets",
diff --git a/src/styles/nodes.css b/src/styles/nodes.css
index a8441b71..4fd8b835 100644
--- a/src/styles/nodes.css
+++ b/src/styles/nodes.css
@@ -137,14 +137,12 @@
}
.node-warning ~ select:last-child,
-.node-warning ~ input:last-child,
-.node-warning ~ input[list]:nth-last-child(2) {
+.node-warning ~ input:last-child {
border-color: var(--node-selected) !important;
}
.node-error ~ select:last-child,
-.node-error ~ input:last-child,
-.node-error ~ input[list]:nth-last-child(2) {
+.node-error ~ input:last-child {
border-color: var(--node-remove) !important;
}
@@ -160,8 +158,7 @@
border-bottom-left-radius: 3px;
}
-.node-header > *:last-child,
-.node-header > input[list]:nth-last-child(2) {
+.node-header > *:last-child {
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
}