diff --git a/package-lock.json b/package-lock.json index 91864063..f3a6a5e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "@mcschema/java-1.20.5": "^0.0.42", "@mcschema/java-1.21": "^0.0.27", "@mcschema/java-1.21.2": "^0.0.16", - "@mcschema/java-1.21.4": "^0.0.3", + "@mcschema/java-1.21.4": "^0.0.13", "@mcschema/locales": "^0.1.104", "@zip.js/zip.js": "^2.4.5", "brace": "^0.11.1", @@ -748,9 +748,9 @@ } }, "node_modules/@mcschema/java-1.21.4": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mcschema/java-1.21.4/-/java-1.21.4-0.0.3.tgz", - "integrity": "sha512-1KPHjCDkyMk0DtyrpFiTmpXMG/9XCBHCjMkE1ZvdBMYDLqbHFNPJwGnwDljpNgNJCOfKkfeVpmTBZv0ur9jpIg==", + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@mcschema/java-1.21.4/-/java-1.21.4-0.0.13.tgz", + "integrity": "sha512-0jQLqDLS4On5np2LGih3nqFB4+BjIu5omhKzpx+9FdKf3eOZkYPaU9uZbwYeK4MvZD5CVE/nXs0P2jCRLGowJw==", "dependencies": { "@mcschema/core": "^0.13.0" } @@ -4902,9 +4902,9 @@ } }, "@mcschema/java-1.21.4": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mcschema/java-1.21.4/-/java-1.21.4-0.0.3.tgz", - "integrity": "sha512-1KPHjCDkyMk0DtyrpFiTmpXMG/9XCBHCjMkE1ZvdBMYDLqbHFNPJwGnwDljpNgNJCOfKkfeVpmTBZv0ur9jpIg==", + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@mcschema/java-1.21.4/-/java-1.21.4-0.0.13.tgz", + "integrity": "sha512-0jQLqDLS4On5np2LGih3nqFB4+BjIu5omhKzpx+9FdKf3eOZkYPaU9uZbwYeK4MvZD5CVE/nXs0P2jCRLGowJw==", "requires": { "@mcschema/core": "^0.13.0" } diff --git a/package.json b/package.json index e62549f0..531a9ecf 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "@mcschema/java-1.20.5": "^0.0.42", "@mcschema/java-1.21": "^0.0.27", "@mcschema/java-1.21.2": "^0.0.16", - "@mcschema/java-1.21.4": "^0.0.3", + "@mcschema/java-1.21.4": "^0.0.13", "@mcschema/locales": "^0.1.104", "@zip.js/zip.js": "^2.4.5", "brace": "^0.11.1", diff --git a/src/app/schema/renderHtml.tsx b/src/app/schema/renderHtml.tsx index 67b068c1..031c37e8 100644 --- a/src/app/schema/renderHtml.tsx +++ b/src/app/schema/renderHtml.tsx @@ -15,13 +15,13 @@ import { CachedDecorator, CachedFeature, checkVersion } from '../services/index. import { deepClone, deepEqual, generateColor, generateUUID, hexId, hexToRgb, isObject, newSeed, rgbToHex, stringToColor } from '../Utils.js' import { ModelWrapper } from './ModelWrapper.js' -const selectRegistries = ['loot_table.type', 'loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'recipe.type', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'dimension.generator.biome_source.preset', 'carver.type', 'feature.type', 'decorator.type', 'feature.tree.minimum_size.type', 'block_state_provider.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'int_provider.type', 'float_provider.type', 'height_provider.type', 'structure_feature.type', 'surface_builder.type', 'processor.processor_type', 'rule_test.predicate_type', 'pos_rule_test.predicate_type', 'template_element.element_type', 'block_placer.type', 'block_predicate.type', 'material_rule.type', 'material_condition.type', 'structure_placement.type', 'density_function.type', 'root_placer.type', 'entity.type_specific.cat.variant', 'entity.type_specific.frog.variant', 'rule_block_entity_modifier.type', 'pool_alias_binding.type', 'lithostitched.worldgen_modifier.type', 'lithostitched.modifier_predicate.type', 'ohthetreesyoullgrow.configured_feature.type', 'enchantment_provider.type', 'enchantment_value_effect.type', 'level_based_value.type', 'neoforge.biome_modifier.type', 'neoforge.structure_modifier.type'] +const selectRegistries = ['loot_table.type', 'loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'recipe.type', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'dimension.generator.biome_source.preset', 'carver.type', 'feature.type', 'decorator.type', 'feature.tree.minimum_size.type', 'block_state_provider.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'int_provider.type', 'float_provider.type', 'height_provider.type', 'structure_feature.type', 'surface_builder.type', 'processor.processor_type', 'rule_test.predicate_type', 'pos_rule_test.predicate_type', 'template_element.element_type', 'block_placer.type', 'block_predicate.type', 'material_rule.type', 'material_condition.type', 'structure_placement.type', 'density_function.type', 'root_placer.type', 'entity.type_specific.cat.variant', 'entity.type_specific.frog.variant', 'rule_block_entity_modifier.type', 'pool_alias_binding.type', 'lithostitched.worldgen_modifier.type', 'lithostitched.modifier_predicate.type', 'ohthetreesyoullgrow.configured_feature.type', 'enchantment_provider.type', 'enchantment_value_effect.type', 'level_based_value.type', 'neoforge.biome_modifier.type', 'neoforge.structure_modifier.type', 'tint_source.type', 'item_model.condition.property', 'item_model.select.property', 'item_model.range_dispatch.property', 'special_item_model.type'] const datalistEnums = ['item_stack.components', 'function.set_components.components'] const hiddenFields = ['number_provider.type', 'score_provider.type', 'nbt_provider.type', 'int_provider.type', 'float_provider.type', 'height_provider.type', 'level_based_value.type'] const flattenedFields = ['feature.config', 'decorator.config', 'int_provider.value', 'float_provider.value', 'block_state_provider.simple_state_provider.state', 'block_state_provider.rotated_block_provider.state', 'block_state_provider.weighted_state_provider.entries.entry.data', 'rule_test.block_state', 'structure_feature.config', 'surface_builder.config', 'template_pool.elements.entry.element', 'decorator.block_survives_filter.state', 'material_rule.block.result_state', 'enchantment.effects.entry.effect'] -const inlineFields = ['loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'feature.type', 'decorator.type', 'block_state_provider.type', 'feature.tree.minimum_size.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'block_placer.type', 'rule_test.predicate_type', 'processor.processor_type', 'template_element.element_type', 'nbt_operation.op', 'number_provider.value', 'score_provider.name', 'score_provider.target', 'nbt_provider.source', 'nbt_provider.target', 'generator_biome.biome', 'block_predicate.type', 'material_rule.type', 'material_condition.type', 'density_function.type', 'root_placer.type', 'entity.type_specific.type', 'glyph_provider.type', 'sprite_source.type', 'rule_block_entity_modifier.type', 'immersive_weathering.area_condition.type', 'immersive_weathering.block_growth.growth_for_face.entry.direction', 'immersive_weathering.position_test.predicate_type', 'pool_alias_binding.type', 'item_stack.id', 'data_component.container.entry.slot', 'map_decoration.type', 'suspicious_stew_effect_instance.id', 'enchantment_value_effect.type', 'enchantment_effect.type', 'particle.type'] +const inlineFields = ['loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'feature.type', 'decorator.type', 'block_state_provider.type', 'feature.tree.minimum_size.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'block_placer.type', 'rule_test.predicate_type', 'processor.processor_type', 'template_element.element_type', 'nbt_operation.op', 'number_provider.value', 'score_provider.name', 'score_provider.target', 'nbt_provider.source', 'nbt_provider.target', 'generator_biome.biome', 'block_predicate.type', 'material_rule.type', 'material_condition.type', 'density_function.type', 'root_placer.type', 'entity.type_specific.type', 'glyph_provider.type', 'sprite_source.type', 'rule_block_entity_modifier.type', 'immersive_weathering.area_condition.type', 'immersive_weathering.block_growth.growth_for_face.entry.direction', 'immersive_weathering.position_test.predicate_type', 'pool_alias_binding.type', 'item_stack.id', 'data_component.container.entry.slot', 'map_decoration.type', 'suspicious_stew_effect_instance.id', 'enchantment_value_effect.type', 'enchantment_effect.type', 'particle.type', 'item_model.type', 'special_item_model.type', 'tint_source.type'] const nbtFields = ['function.set_nbt.tag', 'advancement.display.icon.nbt', 'text_component_object.nbt', 'entity.nbt', 'block.nbt', 'item.nbt'] -const fixedLists = ['generator_biome.parameters.temperature', 'generator_biome.parameters.humidity', 'generator_biome.parameters.continentalness', 'generator_biome.parameters.erosion', 'generator_biome.parameters.depth', 'generator_biome.parameters.weirdness', 'feature.end_spike.crystal_beam_target', 'feature.end_gateway.exit', 'decorator.block_filter.offset', 'block_predicate.has_sturdy_face.offset', 'block_predicate.inside_world_bounds.offset', 'block_predicate.matching_block_tag.offset', 'block_predicate.matching_blocks.offset', 'block_predicate.matching_fluids.offset', 'block_predicate.would_survive.offset', 'model_element.from', 'model_element.to', 'model_element.rotation.origin', 'model_element.faces.uv', 'item_transform.rotation', 'item_transform.translation', 'item_transform.scale', 'generator_structure.random_spread.locate_offset', 'pack_overlay.formats', 'data_component.profile.id', 'data_component.lodestone_tracker.tracker.pos', 'attribute_modifier.uuid'] +const fixedLists = ['generator_biome.parameters.temperature', 'generator_biome.parameters.humidity', 'generator_biome.parameters.continentalness', 'generator_biome.parameters.erosion', 'generator_biome.parameters.depth', 'generator_biome.parameters.weirdness', 'feature.end_spike.crystal_beam_target', 'feature.end_gateway.exit', 'decorator.block_filter.offset', 'block_predicate.has_sturdy_face.offset', 'block_predicate.inside_world_bounds.offset', 'block_predicate.matching_block_tag.offset', 'block_predicate.matching_blocks.offset', 'block_predicate.matching_fluids.offset', 'block_predicate.would_survive.offset', 'model_element.from', 'model_element.to', 'model_element.rotation.origin', 'model_element.faces.uv', 'item_transform.rotation', 'item_transform.translation', 'item_transform.scale', 'generator_structure.random_spread.locate_offset', 'pack_overlay.formats', 'data_component.profile.id', 'data_component.lodestone_tracker.tracker.pos', 'attribute_modifier.uuid', 'tint_source.constant.value', 'tint_source.dye.default', 'tint_source.firework.default', 'tint_source.potion.default', 'tint_source.map_color.default'] const collapsedFields = ['noise_settings.surface_rule', 'noise_settings.noise.terrain_shaper'] const collapsableFields = ['density_function.argument', 'density_function.argument1', 'density_function.argument2', 'density_function.input', 'density_function.when_in_range', 'density_function.when_out_of_range'] const itemPreviewFields = ['loot_pool.entries.entry', 'loot_entry.alternatives.children.entry', 'loot_entry.group.children.entry', 'loot_entry.sequence.children.entry', 'function.set_contents.entries.entry'] diff --git a/src/app/services/DataFetcher.ts b/src/app/services/DataFetcher.ts index 830c811e..dcd964d8 100644 --- a/src/app/services/DataFetcher.ts +++ b/src/app/services/DataFetcher.ts @@ -157,7 +157,7 @@ export async function fetchPreset(versionId: VersionId, registry: string, id: st if (id.startsWith('immersive_weathering:')) { url = `https://raw.githubusercontent.com/AstralOrdana/Immersive-Weathering/main/src/main/resources/data/immersive_weathering/block_growths/${id.slice(21)}.json` } else { - const type = ['atlases', 'blockstates', 'models', 'font'].includes(registry) ? 'assets' : 'data' + const type = ['atlases', 'blockstates', 'items', 'models', 'font'].includes(registry) ? 'assets' : 'data' url = `${mcmeta(version, type)}/${type}/minecraft/${registry}/${id}.json` } const res = await fetch(url) @@ -172,7 +172,7 @@ export async function fetchAllPresets(versionId: VersionId, registry: string) { const version = config.versions.find(v => v.id === versionId)! await validateCache(version) try { - const type = ['atlas', 'block_definition', 'model', 'font'].includes(registry) ? 'assets' : 'data' + const type = ['atlas', 'block_definition', 'item_definition', 'model', 'font'].includes(registry) ? 'assets' : 'data' return new Map(Object.entries(await cachedFetch(`${mcmeta(version, 'summary')}/${type}/${registry}/data.min.json`))) } catch (e) { throw new Error(`Error occurred while fetching all ${registry} presets: ${message(e)}`) diff --git a/src/config.json b/src/config.json index cfa8fe5b..6faf7887 100644 --- a/src/config.json +++ b/src/config.json @@ -609,6 +609,14 @@ "schema": "block_definition", "wiki": "https://minecraft.wiki/w/Tutorials/Models#Block_states" }, + { + "id": "item_definition", + "url": "assets/item", + "path": "items", + "tags": ["assets"], + "schema": "item_definition", + "minVersion": "1.21.4" + }, { "id": "model", "url": "assets/model", diff --git a/src/locales/en.json b/src/locales/en.json index 54c70095..f6089e96 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -69,6 +69,7 @@ "generator.font": "Font", "generator.immersive_weathering.block_growth": "Block Growth", "generator.instrument": "Instrument", + "generator.item_definition": "Item", "generator.item_modifier": "Item Modifier", "generator.jukebox_song": "Jukebox Song", "generator.lithostitched.worldgen_modifier": "Worldgen Modifier",