diff --git a/schemas/1.14.json b/schemas/1.14.json index cfc18d2d..4a4e353c 100644 --- a/schemas/1.14.json +++ b/schemas/1.14.json @@ -486,32 +486,17 @@ "minecraft:alternative", "minecraft:inverted", "minecraft:entity_properties", - { - "value": "minecraft:block_state_property", - "require": ["minecraft:block"] - }, - { - "value": "minecraft:match_tool", - "require": ["minecraft:block", "minecraft:fishing"] - }, - { - "value": "minecraft:damage_source_properties", - "require": ["minecraft:entity"] - }, + "minecraft:block_state_property", + "minecraft:match_tool", + "minecraft:damage_source_properties", "minecraft:location_check", "minecraft:weather_check", "minecraft:entity_scores", "minecraft:random_chance", "minecraft:random_chance_with_looting", - { - "value": "minecraft:table_bonus", - "require": ["minecraft:block"] - }, + "minecraft:table_bonus", "minecraft:killed_by_player", - { - "value": "minecraft:survives_explosion", - "require": ["minecraft:block"] - } + "minecraft:survives_explosion" ] }, { diff --git a/schemas/1.15.json b/schemas/1.15.json index fa38989b..540f9c42 100644 --- a/schemas/1.15.json +++ b/schemas/1.15.json @@ -608,33 +608,18 @@ "minecraft:inverted", "minecraft:reference", "minecraft:entity_properties", - { - "value": "minecraft:block_state_property", - "require": ["minecraft:block"] - }, - { - "value": "minecraft:match_tool", - "require": ["minecraft:block", "minecraft:fishing"] - }, - { - "value": "minecraft:damage_source_properties", - "require": ["minecraft:entity"] - }, + "minecraft:block_state_property", + "minecraft:match_tool", + "minecraft:damage_source_properties", "minecraft:location_check", "minecraft:weather_check", "minecraft:time_check", "minecraft:entity_scores", "minecraft:random_chance", "minecraft:random_chance_with_looting", - { - "value": "minecraft:table_bonus", - "require": ["minecraft:block"] - }, + "minecraft:table_bonus", "minecraft:killed_by_player", - { - "value": "minecraft:survives_explosion", - "require": ["minecraft:block"] - } + "minecraft:survives_explosion" ] }, { diff --git a/view.js b/view.js index f75bdf3a..cee3d98b 100644 --- a/view.js +++ b/view.js @@ -394,6 +394,7 @@ function generateObject(data, struct, options) { } $header.append(''); } + let parentFilter = options ? options.filter : undefined; if (struct.card !== false) { $el.addClass('card bg-' + struct.color);; $header.addClass('card-header pb-1'); @@ -406,19 +407,25 @@ function generateObject(data, struct, options) { let child = components.find(e => e.id === struct.value); return generateObject(data, child); } - let filterField = struct.fields.find(e => e.type === 'enum'); + ; let filter; - if (filterField) { - filter = data[filterField.id]; - } - if (filter === undefined && options) { - filter = options.filter; - } for (let field of struct.fields) { + if (filter === undefined) { + filterField = struct.fields.find(e => e.type === 'enum'); + if (filterField) { + filter = data[filterField.id]; + } + } + if (!luckBased && field.luckBased) { + continue; + } + if (field.require && !field.require.includes(filter || parentFilter)) { + continue; + } if (field.collapse) { let hasNoValue = data[field.id] === undefined; let arrowDirection = hasNoValue ? 'dropright' : 'dropdown' - $body.append(''); + $body.append(''); if (field.help) { $body.find('span').append(generateTooltip(field.translate)); } @@ -448,41 +455,12 @@ function generateObject(data, struct, options) { $body.append($field); } } + $body.children().first().children('button').removeClass('mt-3'); $body.children().first().removeClass('mt-3'); return {out: out, component: $el}; } function generateField(data, field, parent, filter) { - if (!luckBased && field.luckBased) { - return false; - } - if (field.require) { - let passing = false; - for (let requirement of field.require) { - if (typeof requirement === 'string') { - if (requirement === correctNamespace(filter)) { - passing = true; - } - } else { - let match = true; - for (let id in requirement) { - if (requirement.hasOwnProperty(id)) { - if (requirement[id] !== correctNamespace(data[parent.fields.find(e => e.id === id).id])) { - match = false; - } - } - } - if (match) { - passing = true; - } - } - } - if (!passing) { - return {out: undefined, component: false}; - } - } - - let $field; if (data[field.id] === undefined) { if (field.type === 'object') { data[field.id] = {};