Add resource pack generators: blockstates and model

This commit is contained in:
Misode
2021-11-05 01:22:23 +01:00
parent 6d8829ecde
commit fba80da273
11 changed files with 115 additions and 38 deletions
+23 -23
View File
@@ -9,12 +9,12 @@
"version": "1.0.0", "version": "1.0.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@mcschema/core": "^0.12.13", "@mcschema/core": "^0.12.16",
"@mcschema/java-1.15": "^0.2.2", "@mcschema/java-1.15": "^0.2.2",
"@mcschema/java-1.16": "^0.6.5", "@mcschema/java-1.16": "^0.6.5",
"@mcschema/java-1.17": "^0.2.24", "@mcschema/java-1.17": "^0.2.24",
"@mcschema/java-1.18": "^0.1.17", "@mcschema/java-1.18": "^0.2.2",
"@mcschema/locales": "^0.1.36", "@mcschema/locales": "^0.1.38",
"deepslate": "^0.9.0-beta.6", "deepslate": "^0.9.0-beta.6",
"deepslate-rs": "^0.1.6", "deepslate-rs": "^0.1.6",
"howler": "^2.2.3", "howler": "^2.2.3",
@@ -321,9 +321,9 @@
} }
}, },
"node_modules/@mcschema/core": { "node_modules/@mcschema/core": {
"version": "0.12.13", "version": "0.12.16",
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.13.tgz", "resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.16.tgz",
"integrity": "sha512-k5io/SNI3rsbtEtUniTxxN3Mms+g+L6/o3aMfYOsCK2vn163pPSY84wO5wWGxec87726P8a1wkRvos7rdqV/Jw==" "integrity": "sha512-iZwNW7VvBBSa4npt0lqI+zxnJ6FoxcbODeON3Tcvdt2OrJSqqqo0ZLYVnwj1ugF9TqVgVDM0w/4Qb2PGe518gg=="
}, },
"node_modules/@mcschema/java-1.15": { "node_modules/@mcschema/java-1.15": {
"version": "0.2.2", "version": "0.2.2",
@@ -350,17 +350,17 @@
} }
}, },
"node_modules/@mcschema/java-1.18": { "node_modules/@mcschema/java-1.18": {
"version": "0.1.17", "version": "0.2.2",
"resolved": "https://registry.npmjs.org/@mcschema/java-1.18/-/java-1.18-0.1.17.tgz", "resolved": "https://registry.npmjs.org/@mcschema/java-1.18/-/java-1.18-0.2.2.tgz",
"integrity": "sha512-/AWx1n4d3uiZH0wQ0Hq9M+8DHU2KxmKAtbLUTxGmrWNqHvMii4suhPHjX7Us53pJKGSL1Z2DpsFD8ctANDKBeA==", "integrity": "sha512-UjHOHGlEaNw9Bk7PNRGppL9yVIuD1bIlUzei+taucqoMNu7t30g/86e98UJrY+mDj6pTnZemlXeHleIk39hm9g==",
"dependencies": { "dependencies": {
"@mcschema/core": "^0.12.13" "@mcschema/core": "^0.12.16"
} }
}, },
"node_modules/@mcschema/locales": { "node_modules/@mcschema/locales": {
"version": "0.1.36", "version": "0.1.38",
"resolved": "https://registry.npmjs.org/@mcschema/locales/-/locales-0.1.36.tgz", "resolved": "https://registry.npmjs.org/@mcschema/locales/-/locales-0.1.38.tgz",
"integrity": "sha512-MKmkX6BF+uWrQO0vUvCJkK0QyeRuIeQHWmMNKP7igZ2VO2rxlhuJx6i+etoT5Fe3DrAEBt2HX/5ZIrZ65llxfQ==" "integrity": "sha512-HwH3yURCT6+D4oRH6WYAw38DfjLelpAVkOfsOzXSszvd+hyjVt4lDtUNMggGDaUMoZGw0HQ2oXqDLEDtEERwiQ=="
}, },
"node_modules/@nodelib/fs.scandir": { "node_modules/@nodelib/fs.scandir": {
"version": "2.1.5", "version": "2.1.5",
@@ -2982,9 +2982,9 @@
} }
}, },
"@mcschema/core": { "@mcschema/core": {
"version": "0.12.13", "version": "0.12.16",
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.13.tgz", "resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.16.tgz",
"integrity": "sha512-k5io/SNI3rsbtEtUniTxxN3Mms+g+L6/o3aMfYOsCK2vn163pPSY84wO5wWGxec87726P8a1wkRvos7rdqV/Jw==" "integrity": "sha512-iZwNW7VvBBSa4npt0lqI+zxnJ6FoxcbODeON3Tcvdt2OrJSqqqo0ZLYVnwj1ugF9TqVgVDM0w/4Qb2PGe518gg=="
}, },
"@mcschema/java-1.15": { "@mcschema/java-1.15": {
"version": "0.2.2", "version": "0.2.2",
@@ -3011,17 +3011,17 @@
} }
}, },
"@mcschema/java-1.18": { "@mcschema/java-1.18": {
"version": "0.1.17", "version": "0.2.2",
"resolved": "https://registry.npmjs.org/@mcschema/java-1.18/-/java-1.18-0.1.17.tgz", "resolved": "https://registry.npmjs.org/@mcschema/java-1.18/-/java-1.18-0.2.2.tgz",
"integrity": "sha512-/AWx1n4d3uiZH0wQ0Hq9M+8DHU2KxmKAtbLUTxGmrWNqHvMii4suhPHjX7Us53pJKGSL1Z2DpsFD8ctANDKBeA==", "integrity": "sha512-UjHOHGlEaNw9Bk7PNRGppL9yVIuD1bIlUzei+taucqoMNu7t30g/86e98UJrY+mDj6pTnZemlXeHleIk39hm9g==",
"requires": { "requires": {
"@mcschema/core": "^0.12.13" "@mcschema/core": "^0.12.16"
} }
}, },
"@mcschema/locales": { "@mcschema/locales": {
"version": "0.1.36", "version": "0.1.38",
"resolved": "https://registry.npmjs.org/@mcschema/locales/-/locales-0.1.36.tgz", "resolved": "https://registry.npmjs.org/@mcschema/locales/-/locales-0.1.38.tgz",
"integrity": "sha512-MKmkX6BF+uWrQO0vUvCJkK0QyeRuIeQHWmMNKP7igZ2VO2rxlhuJx6i+etoT5Fe3DrAEBt2HX/5ZIrZ65llxfQ==" "integrity": "sha512-HwH3yURCT6+D4oRH6WYAw38DfjLelpAVkOfsOzXSszvd+hyjVt4lDtUNMggGDaUMoZGw0HQ2oXqDLEDtEERwiQ=="
}, },
"@nodelib/fs.scandir": { "@nodelib/fs.scandir": {
"version": "2.1.5", "version": "2.1.5",
+3 -3
View File
@@ -15,12 +15,12 @@
"author": "Misode", "author": "Misode",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@mcschema/core": "^0.12.13", "@mcschema/core": "^0.12.16",
"@mcschema/java-1.15": "^0.2.2", "@mcschema/java-1.15": "^0.2.2",
"@mcschema/java-1.16": "^0.6.5", "@mcschema/java-1.16": "^0.6.5",
"@mcschema/java-1.17": "^0.2.24", "@mcschema/java-1.17": "^0.2.24",
"@mcschema/java-1.18": "^0.1.17", "@mcschema/java-1.18": "^0.2.2",
"@mcschema/locales": "^0.1.36", "@mcschema/locales": "^0.1.38",
"deepslate": "^0.9.0-beta.6", "deepslate": "^0.9.0-beta.6",
"deepslate-rs": "^0.1.6", "deepslate-rs": "^0.1.6",
"howler": "^2.2.3", "howler": "^2.2.3",
+3 -2
View File
@@ -8,7 +8,7 @@ import '../styles/nodes.css'
import { Analytics } from './Analytics' import { Analytics } from './Analytics'
import { Header } from './components' import { Header } from './components'
import { loadLocale, locale, Locales } from './Locales' import { loadLocale, locale, Locales } from './Locales'
import { Changelog, Generator, Home, Sounds, Worldgen } from './pages' import { Category, Changelog, Generator, Home, Sounds } from './pages'
import type { VersionId } from './services' import type { VersionId } from './services'
import { Store } from './Store' import { Store } from './Store'
import { cleanUrl } from './Utils' import { cleanUrl } from './Utils'
@@ -70,7 +70,8 @@ function Main() {
<Header {...{lang, title, version, theme, language: lang, changeLanguage, changeTheme}} /> <Header {...{lang, title, version, theme, language: lang, changeLanguage, changeTheme}} />
<Router onChange={changeRoute}> <Router onChange={changeRoute}>
<Home path="/" {...{lang, changeTitle}} /> <Home path="/" {...{lang, changeTitle}} />
<Worldgen path="/worldgen" {...{lang, changeTitle}} /> <Category path="/worldgen" category="worldgen" {...{lang, changeTitle}} />
<Category path="/assets" category="assets" {...{lang, changeTitle}} />
<Sounds path="/sounds" {...{lang, version, changeTitle, changeVersion}} /> <Sounds path="/sounds" {...{lang, version, changeTitle, changeVersion}} />
<Changelog path="/changelog" {...{lang, changeTitle}} /> <Changelog path="/changelog" {...{lang, changeTitle}} />
<Generator default {...{lang, version, changeTitle, changeVersion}} /> <Generator default {...{lang, version, changeTitle, changeVersion}} />
@@ -4,16 +4,17 @@ import { locale } from '../Locales'
import { cleanUrl } from '../Utils' import { cleanUrl } from '../Utils'
type WorldgenProps = { type WorldgenProps = {
category: string,
lang: string, lang: string,
changeTitle: (title: string) => unknown, changeTitle: (title: string) => unknown,
path?: string, path?: string,
} }
export function Worldgen({ lang, changeTitle }: WorldgenProps) { export function Category({ category, lang, changeTitle }: WorldgenProps) {
const loc = locale.bind(null, lang) const loc = locale.bind(null, lang)
changeTitle(loc('title.generator_category', loc('worldgen'))) changeTitle(loc('title.generator_category', loc(category)))
return <main> return <main>
<div class="home"> <div class="home">
{config.generators.filter(g => g.category === 'worldgen').map(g => {config.generators.filter(g => g.category === category).map(g =>
<ToolCard title={loc(g.id)} link={cleanUrl(g.url)} /> <ToolCard title={loc(g.id)} link={cleanUrl(g.url)} />
)} )}
</div> </div>
+2
View File
@@ -18,6 +18,8 @@ export function Home({ lang, changeTitle }: HomeProps) {
)} )}
<ToolCard title={loc('worldgen')} link="/worldgen/" /> <ToolCard title={loc('worldgen')} link="/worldgen/" />
<hr /> <hr />
<ToolCard title={loc('assets')} link="/assets/" />
<hr />
<ToolCard title="Report Inspector" icon="report" link="https://misode.github.io/report/"> <ToolCard title="Report Inspector" icon="report" link="https://misode.github.io/report/">
<p>Analyse your performance reports</p> <p>Analyse your performance reports</p>
</ToolCard> </ToolCard>
+1 -1
View File
@@ -1,5 +1,5 @@
export * from './Category'
export * from './Changelog' export * from './Changelog'
export * from './Generator' export * from './Generator'
export * from './Home' export * from './Home'
export * from './Sounds' export * from './Sounds'
export * from './Worldgen'
+4 -1
View File
@@ -16,7 +16,7 @@ const hiddenFields = ['number_provider.type', 'score_provider.type', 'nbt_provid
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'] 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']
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'] 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']
const nbtFields = ['function.set_nbt.tag', 'advancement.display.icon.nbt', 'text_component_object.nbt', 'entity.nbt', 'block.nbt', 'item.nbt'] 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.matching_blocks.offset', 'block_predicate.matching_fluids.offset'] 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.matching_blocks.offset', 'block_predicate.matching_fluids.offset', 'model_element.from', 'model_element.to', 'model_element.rotation.origin', 'model_element.faces.uv', 'item_transform.rotation', 'item_transform.translation', 'item_transform.scale']
/** /**
* Secondary model used to remember the keys of a map * Secondary model used to remember the keys of a map
@@ -59,6 +59,7 @@ const renderHtml: RenderHook = {
choice({ choices, config, switchNode }, path, value, lang, states, ctx) { choice({ choices, config, switchNode }, path, value, lang, states, ctx) {
const choice = switchNode.activeCase(path, true) as typeof choices[number] const choice = switchNode.activeCase(path, true) as typeof choices[number]
const contextPath = (config?.context) ? new ModelPath(path.getModel(), new Path(path.getArray(), [config.context])) : path const contextPath = (config?.context) ? new ModelPath(path.getModel(), new Path(path.getArray(), [config.context])) : path
console.log('RENDER', path.toString(), choice.type, value)
const [prefix, suffix, body] = choice.node.hook(this, contextPath, value, lang, states, ctx) const [prefix, suffix, body] = choice.node.hook(this, contextPath, value, lang, states, ctx)
if (choices.length === 1) { if (choices.length === 1) {
return [prefix, suffix, body] return [prefix, suffix, body]
@@ -69,6 +70,7 @@ const renderHtml: RenderHook = {
const newValue = c.change const newValue = c.change
? c.change(DataModel.unwrapLists(value)) ? c.change(DataModel.unwrapLists(value))
: config.choiceContext === 'feature' ? c.node.default()?.config?.feature : c.node.default() : config.choiceContext === 'feature' ? c.node.default()?.config?.feature : c.node.default()
console.warn('CHOICE', type, c, value, newValue)
path.model.set(path, DataModel.wrapLists(newValue)) path.model.set(path, DataModel.wrapLists(newValue))
} }
const inject = <select value={choice.type} onChange={(e) => set((e.target as HTMLSelectElement).value)}> const inject = <select value={choice.type} onChange={(e) => set((e.target as HTMLSelectElement).value)}>
@@ -258,6 +260,7 @@ const renderHtml: RenderHook = {
} }
const newCtx = (typeof value === 'object' && value !== null && node.default()?.pools) const newCtx = (typeof value === 'object' && value !== null && node.default()?.pools)
? { ...ctx, loot: value?.type } : ctx ? { ...ctx, loot: value?.type } : ctx
// console.log('OBJECT', path.toString(), Object.keys(getActiveFields(path)))
const body = <> const body = <>
{(typeof value === 'object' && value !== null && !(node.optional() && value === undefined)) && {(typeof value === 'object' && value !== null && !(node.optional() && value === undefined)) &&
Object.entries(getActiveFields(path)) Object.entries(getActiveFields(path))
+38 -4
View File
@@ -9,7 +9,7 @@ import { checkVersion } from './Schemas'
const CACHE_NAME = 'misode-v1' const CACHE_NAME = 'misode-v1'
type VersionRef = 'mcdata_master' | 'vanilla_datapack_summary' | 'vanilla_datapack_data' type VersionRef = 'mcdata_master' | 'mcassets' | 'vanilla_datapack_summary' | 'vanilla_datapack_data'
type Version = { type Version = {
id: string, id: string,
@@ -21,6 +21,7 @@ declare var __MCDATA_MASTER_HASH__: string
declare var __VANILLA_DATAPACK_SUMMARY_HASH__: string declare var __VANILLA_DATAPACK_SUMMARY_HASH__: string
const mcdataUrl = 'https://raw.githubusercontent.com/Arcensoth/mcdata' const mcdataUrl = 'https://raw.githubusercontent.com/Arcensoth/mcdata'
const mcassetsUrl = 'https://raw.githubusercontent.com/InventivetalentDev/minecraft-assets'
const vanillaDatapackUrl = 'https://raw.githubusercontent.com/SPGoding/vanilla-datapack' const vanillaDatapackUrl = 'https://raw.githubusercontent.com/SPGoding/vanilla-datapack'
const manifestUrl = 'https://launchermeta.mojang.com/mc/game/version_manifest.json' const manifestUrl = 'https://launchermeta.mojang.com/mc/game/version_manifest.json'
const resourceUrl = 'https://resources.download.minecraft.net/' const resourceUrl = 'https://resources.download.minecraft.net/'
@@ -67,13 +68,14 @@ export async function fetchData(versionId: string, collectionTarget: CollectionR
fetchRegistries(version, collectionTarget), fetchRegistries(version, collectionTarget),
fetchBlockStateMap(version, blockStateTarget), fetchBlockStateMap(version, blockStateTarget),
fetchDynamicRegistries(version, collectionTarget), fetchDynamicRegistries(version, collectionTarget),
fetchAssetsRegistries(version, collectionTarget),
]) ])
} }
async function fetchRegistries(version: Version, target: CollectionRegistry) { async function fetchRegistries(version: Version, target: CollectionRegistry) {
console.debug(`[fetchRegistries] ${version.id}`) console.debug(`[fetchRegistries] ${version.id}`)
const registries = config.registries const registries = config.registries
.filter(r => !r.dynamic) .filter(r => !r.dynamic && !r.asset)
.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion)) .filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))
if (checkVersion(version.id, undefined, '1.15')) { if (checkVersion(version.id, undefined, '1.15')) {
@@ -142,7 +144,7 @@ async function fetchBlockStateMap(version: Version, target: BlockStateRegistry)
async function fetchDynamicRegistries(version: Version, target: CollectionRegistry) { async function fetchDynamicRegistries(version: Version, target: CollectionRegistry) {
console.debug(`[fetchDynamicRegistries] ${version.id}`) console.debug(`[fetchDynamicRegistries] ${version.id}`)
const registries = config.registries const registries = config.registries
.filter(r => r.dynamic) .filter(r => r.dynamic && !r.asset)
.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion)) .filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))
if (checkVersion(version.id, '1.16')) { if (checkVersion(version.id, '1.16')) {
@@ -161,11 +163,43 @@ async function fetchDynamicRegistries(version: Version, target: CollectionRegist
} }
} }
export async function fetchAssetsRegistries(version: Version, target: CollectionRegistry) {
console.debug(`[fetchAssetsRegistries] ${version.id}`)
const registries = config.registries
.filter(r => r.asset)
.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))
await Promise.all(registries.map(async r => {
try {
const fetchFolder = async (path: string): Promise<string[]> => {
const url = `${mcassetsUrl}/${version.refs.mcassets}/assets/minecraft/${path}/_list.json`
const data = await getData(url)
if (data.directories.length === 0) {
return data.files
}
const directories = await Promise.all(data.directories.map(async (d: string) => {
const files = await fetchFolder(`${path}/${d}`)
return files.map(v => `${d}/${v}`)
}))
return [...data.files, ...directories.flat()]
}
const ids = (await fetchFolder(r.path ?? r.id))
.filter((v: string) => v.endsWith('.json') || v.endsWith('.png'))
.map(v => `minecraft:${v.replace(/\.(json|png)$/, '')}`)
target.register(r.id, ids)
} catch (e) {
console.warn(`Error occurred while fetching assets registry ${r.id}:`, message(e))
}
}))
}
export async function fetchPreset(version: VersionId, registry: string, id: string) { export async function fetchPreset(version: VersionId, registry: string, id: string) {
console.debug(`[fetchPreset] ${registry} ${id}`) console.debug(`[fetchPreset] ${registry} ${id}`)
const versionData = config.versions.find(v => v.id === version)! const versionData = config.versions.find(v => v.id === version)!
try { try {
const url = `${vanillaDatapackUrl}/${versionData.refs.vanilla_datapack_data}/data/minecraft/${registry}/${id}.json` const url = ['blockstates', 'models'].includes(registry)
? `${mcassetsUrl}/${versionData.refs.mcassets}/assets/minecraft/${registry}/${id}.json`
: `${vanillaDatapackUrl}/${versionData.refs.vanilla_datapack_data}/data/minecraft/${registry}/${id}.json`
const res = await fetch(url) const res = await fetch(url)
if (registry === 'worldgen/noise_settings' && version === '1.18') { if (registry === 'worldgen/noise_settings' && version === '1.18') {
let text = await res.text() let text = await res.text()
+24 -1
View File
@@ -51,7 +51,8 @@
"id": "1.15", "id": "1.15",
"latest": "1.15.2", "latest": "1.15.2",
"refs": { "refs": {
"mcdata_master": "13355f7" "mcdata_master": "13355f7",
"mcassets": "1.15.2"
} }
}, },
{ {
@@ -59,6 +60,7 @@
"latest": "1.16.5", "latest": "1.16.5",
"refs": { "refs": {
"mcdata_master": "1.16.4", "mcdata_master": "1.16.4",
"mcassets": "1.16.5",
"vanilla_datapack_data": "1.16.4-data", "vanilla_datapack_data": "1.16.4-data",
"vanilla_datapack_summary": "1.16.4-summary" "vanilla_datapack_summary": "1.16.4-summary"
} }
@@ -68,6 +70,7 @@
"latest": "1.17.1", "latest": "1.17.1",
"refs": { "refs": {
"mcdata_master": "1.17.1", "mcdata_master": "1.17.1",
"mcassets": "1.17.1",
"vanilla_datapack_data": "1.17.1-data", "vanilla_datapack_data": "1.17.1-data",
"vanilla_datapack_summary": "1.17.1-summary" "vanilla_datapack_summary": "1.17.1-summary"
} }
@@ -76,6 +79,7 @@
"id": "1.18", "id": "1.18",
"refs": { "refs": {
"mcdata_master": "master", "mcdata_master": "master",
"mcassets": "21w44a",
"vanilla_datapack_data": "data", "vanilla_datapack_data": "data",
"vanilla_datapack_summary": "summary" "vanilla_datapack_summary": "summary"
}, },
@@ -199,12 +203,29 @@
"category": "worldgen", "category": "worldgen",
"schema": "template_pool", "schema": "template_pool",
"minVersion": "1.16" "minVersion": "1.16"
},
{
"id": "block_definition",
"url": "assets/blockstate",
"path": "blockstates",
"category": "assets",
"schema": "block_definition",
"minVersion": "1.18"
},
{
"id": "model",
"url": "assets/model",
"path": "models",
"category": "assets",
"schema": "model",
"minVersion": "1.18"
} }
], ],
"registries": [ "registries": [
{ "id": "advancement", "dynamic": true }, { "id": "advancement", "dynamic": true },
{ "id": "attribute", "minVersion": "1.16" }, { "id": "attribute", "minVersion": "1.16" },
{ "id": "block" }, { "id": "block" },
{ "id": "block_definition", "path": "blockstates", "asset": true },
{ "id": "block_predicate_type", "minVersion": "1.18" }, { "id": "block_predicate_type", "minVersion": "1.18" },
{ "id": "dimension", "dynamic": true }, { "id": "dimension", "dynamic": true },
{ "id": "dimension_type", "dynamic": true }, { "id": "dimension_type", "dynamic": true },
@@ -225,6 +246,7 @@
{ "id": "loot_score_provider_type", "minVersion": "1.17" }, { "id": "loot_score_provider_type", "minVersion": "1.17" },
{ "id": "loot_table", "dynamic": true }, { "id": "loot_table", "dynamic": true },
{ "id": "mob_effect" }, { "id": "mob_effect" },
{ "id": "model", "path": "models", "asset": true },
{ "id": "pos_rule_test", "minVersion": "1.16" }, { "id": "pos_rule_test", "minVersion": "1.16" },
{ "id": "potion", "minVersion": "1.15" }, { "id": "potion", "minVersion": "1.15" },
{ "id": "predicate", "dynamic": true }, { "id": "predicate", "dynamic": true },
@@ -239,6 +261,7 @@
{ "id": "tag/fluid", "dynamic": true }, { "id": "tag/fluid", "dynamic": true },
{ "id": "tag/function", "dynamic": true }, { "id": "tag/function", "dynamic": true },
{ "id": "tag/item", "dynamic": true }, { "id": "tag/item", "dynamic": true },
{ "id": "texture", "path": "textures", "asset": true },
{ "id": "worldgen/biome", "dynamic": true }, { "id": "worldgen/biome", "dynamic": true },
{ "id": "worldgen/block_state_provider_type", "minVersion": "1.16" }, { "id": "worldgen/block_state_provider_type", "minVersion": "1.16" },
{ "id": "worldgen/block_placer_type", "minVersion": "1.16", "maxVersion": "1.17" }, { "id": "worldgen/block_placer_type", "minVersion": "1.16", "maxVersion": "1.17" },
+3
View File
@@ -3,6 +3,8 @@
"add_bottom": "Add to bottom", "add_bottom": "Add to bottom",
"add_top": "Add to top", "add_top": "Add to top",
"advancement": "Advancement", "advancement": "Advancement",
"assets": "Assets",
"block_definition": "Blockstate",
"changelog.search": "Search changes", "changelog.search": "Search changes",
"collapse": "Collapse", "collapse": "Collapse",
"collapse_all": "Hold %0% to collapse all", "collapse_all": "Hold %0% to collapse all",
@@ -45,6 +47,7 @@
"layer.factor": "Factor", "layer.factor": "Factor",
"layer.jaggedness": "Jaggedness", "layer.jaggedness": "Jaggedness",
"loot_table": "Loot Table", "loot_table": "Loot Table",
"model": "Model",
"more": "More", "more": "More",
"move_down": "Move down", "move_down": "Move down",
"move_up": "Move up", "move_up": "Move up",
+10
View File
@@ -26,6 +26,16 @@ export default defineConfig({
title: getTitle({ id: 'title.changelog', page: true }), title: getTitle({ id: 'title.changelog', page: true }),
template: template, template: template,
}), }),
html({
fileName: `worldgen/index.html`,
title: getTitle({ id: 'worldgen', category: true }),
template: template,
}),
html({
fileName: `assets/index.html`,
title: getTitle({ id: 'assets', category: true }),
template: template,
}),
...config.generators.map(m => html({ ...config.generators.map(m => html({
fileName: `${m.url}/index.html`, fileName: `${m.url}/index.html`,
title: getTitle(m), title: getTitle(m),