mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-23 07:10:41 +00:00
Add resource pack generators: blockstates and model
This commit is contained in:
46
package-lock.json
generated
46
package-lock.json
generated
@@ -9,12 +9,12 @@
|
||||
"version": "1.0.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@mcschema/core": "^0.12.13",
|
||||
"@mcschema/core": "^0.12.16",
|
||||
"@mcschema/java-1.15": "^0.2.2",
|
||||
"@mcschema/java-1.16": "^0.6.5",
|
||||
"@mcschema/java-1.17": "^0.2.24",
|
||||
"@mcschema/java-1.18": "^0.1.17",
|
||||
"@mcschema/locales": "^0.1.36",
|
||||
"@mcschema/java-1.18": "^0.2.2",
|
||||
"@mcschema/locales": "^0.1.38",
|
||||
"deepslate": "^0.9.0-beta.6",
|
||||
"deepslate-rs": "^0.1.6",
|
||||
"howler": "^2.2.3",
|
||||
@@ -321,9 +321,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@mcschema/core": {
|
||||
"version": "0.12.13",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.13.tgz",
|
||||
"integrity": "sha512-k5io/SNI3rsbtEtUniTxxN3Mms+g+L6/o3aMfYOsCK2vn163pPSY84wO5wWGxec87726P8a1wkRvos7rdqV/Jw=="
|
||||
"version": "0.12.16",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.16.tgz",
|
||||
"integrity": "sha512-iZwNW7VvBBSa4npt0lqI+zxnJ6FoxcbODeON3Tcvdt2OrJSqqqo0ZLYVnwj1ugF9TqVgVDM0w/4Qb2PGe518gg=="
|
||||
},
|
||||
"node_modules/@mcschema/java-1.15": {
|
||||
"version": "0.2.2",
|
||||
@@ -350,17 +350,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@mcschema/java-1.18": {
|
||||
"version": "0.1.17",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/java-1.18/-/java-1.18-0.1.17.tgz",
|
||||
"integrity": "sha512-/AWx1n4d3uiZH0wQ0Hq9M+8DHU2KxmKAtbLUTxGmrWNqHvMii4suhPHjX7Us53pJKGSL1Z2DpsFD8ctANDKBeA==",
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/java-1.18/-/java-1.18-0.2.2.tgz",
|
||||
"integrity": "sha512-UjHOHGlEaNw9Bk7PNRGppL9yVIuD1bIlUzei+taucqoMNu7t30g/86e98UJrY+mDj6pTnZemlXeHleIk39hm9g==",
|
||||
"dependencies": {
|
||||
"@mcschema/core": "^0.12.13"
|
||||
"@mcschema/core": "^0.12.16"
|
||||
}
|
||||
},
|
||||
"node_modules/@mcschema/locales": {
|
||||
"version": "0.1.36",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/locales/-/locales-0.1.36.tgz",
|
||||
"integrity": "sha512-MKmkX6BF+uWrQO0vUvCJkK0QyeRuIeQHWmMNKP7igZ2VO2rxlhuJx6i+etoT5Fe3DrAEBt2HX/5ZIrZ65llxfQ=="
|
||||
"version": "0.1.38",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/locales/-/locales-0.1.38.tgz",
|
||||
"integrity": "sha512-HwH3yURCT6+D4oRH6WYAw38DfjLelpAVkOfsOzXSszvd+hyjVt4lDtUNMggGDaUMoZGw0HQ2oXqDLEDtEERwiQ=="
|
||||
},
|
||||
"node_modules/@nodelib/fs.scandir": {
|
||||
"version": "2.1.5",
|
||||
@@ -2982,9 +2982,9 @@
|
||||
}
|
||||
},
|
||||
"@mcschema/core": {
|
||||
"version": "0.12.13",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.13.tgz",
|
||||
"integrity": "sha512-k5io/SNI3rsbtEtUniTxxN3Mms+g+L6/o3aMfYOsCK2vn163pPSY84wO5wWGxec87726P8a1wkRvos7rdqV/Jw=="
|
||||
"version": "0.12.16",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.16.tgz",
|
||||
"integrity": "sha512-iZwNW7VvBBSa4npt0lqI+zxnJ6FoxcbODeON3Tcvdt2OrJSqqqo0ZLYVnwj1ugF9TqVgVDM0w/4Qb2PGe518gg=="
|
||||
},
|
||||
"@mcschema/java-1.15": {
|
||||
"version": "0.2.2",
|
||||
@@ -3011,17 +3011,17 @@
|
||||
}
|
||||
},
|
||||
"@mcschema/java-1.18": {
|
||||
"version": "0.1.17",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/java-1.18/-/java-1.18-0.1.17.tgz",
|
||||
"integrity": "sha512-/AWx1n4d3uiZH0wQ0Hq9M+8DHU2KxmKAtbLUTxGmrWNqHvMii4suhPHjX7Us53pJKGSL1Z2DpsFD8ctANDKBeA==",
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/java-1.18/-/java-1.18-0.2.2.tgz",
|
||||
"integrity": "sha512-UjHOHGlEaNw9Bk7PNRGppL9yVIuD1bIlUzei+taucqoMNu7t30g/86e98UJrY+mDj6pTnZemlXeHleIk39hm9g==",
|
||||
"requires": {
|
||||
"@mcschema/core": "^0.12.13"
|
||||
"@mcschema/core": "^0.12.16"
|
||||
}
|
||||
},
|
||||
"@mcschema/locales": {
|
||||
"version": "0.1.36",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/locales/-/locales-0.1.36.tgz",
|
||||
"integrity": "sha512-MKmkX6BF+uWrQO0vUvCJkK0QyeRuIeQHWmMNKP7igZ2VO2rxlhuJx6i+etoT5Fe3DrAEBt2HX/5ZIrZ65llxfQ=="
|
||||
"version": "0.1.38",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/locales/-/locales-0.1.38.tgz",
|
||||
"integrity": "sha512-HwH3yURCT6+D4oRH6WYAw38DfjLelpAVkOfsOzXSszvd+hyjVt4lDtUNMggGDaUMoZGw0HQ2oXqDLEDtEERwiQ=="
|
||||
},
|
||||
"@nodelib/fs.scandir": {
|
||||
"version": "2.1.5",
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
"author": "Misode",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@mcschema/core": "^0.12.13",
|
||||
"@mcschema/core": "^0.12.16",
|
||||
"@mcschema/java-1.15": "^0.2.2",
|
||||
"@mcschema/java-1.16": "^0.6.5",
|
||||
"@mcschema/java-1.17": "^0.2.24",
|
||||
"@mcschema/java-1.18": "^0.1.17",
|
||||
"@mcschema/locales": "^0.1.36",
|
||||
"@mcschema/java-1.18": "^0.2.2",
|
||||
"@mcschema/locales": "^0.1.38",
|
||||
"deepslate": "^0.9.0-beta.6",
|
||||
"deepslate-rs": "^0.1.6",
|
||||
"howler": "^2.2.3",
|
||||
|
||||
@@ -8,7 +8,7 @@ import '../styles/nodes.css'
|
||||
import { Analytics } from './Analytics'
|
||||
import { Header } from './components'
|
||||
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 { Store } from './Store'
|
||||
import { cleanUrl } from './Utils'
|
||||
@@ -70,7 +70,8 @@ function Main() {
|
||||
<Header {...{lang, title, version, theme, language: lang, changeLanguage, changeTheme}} />
|
||||
<Router onChange={changeRoute}>
|
||||
<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}} />
|
||||
<Changelog path="/changelog" {...{lang, changeTitle}} />
|
||||
<Generator default {...{lang, version, changeTitle, changeVersion}} />
|
||||
|
||||
@@ -4,16 +4,17 @@ import { locale } from '../Locales'
|
||||
import { cleanUrl } from '../Utils'
|
||||
|
||||
type WorldgenProps = {
|
||||
category: string,
|
||||
lang: string,
|
||||
changeTitle: (title: string) => unknown,
|
||||
path?: string,
|
||||
}
|
||||
export function Worldgen({ lang, changeTitle }: WorldgenProps) {
|
||||
export function Category({ category, lang, changeTitle }: WorldgenProps) {
|
||||
const loc = locale.bind(null, lang)
|
||||
changeTitle(loc('title.generator_category', loc('worldgen')))
|
||||
changeTitle(loc('title.generator_category', loc(category)))
|
||||
return <main>
|
||||
<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)} />
|
||||
)}
|
||||
</div>
|
||||
@@ -18,6 +18,8 @@ export function Home({ lang, changeTitle }: HomeProps) {
|
||||
)}
|
||||
<ToolCard title={loc('worldgen')} link="/worldgen/" />
|
||||
<hr />
|
||||
<ToolCard title={loc('assets')} link="/assets/" />
|
||||
<hr />
|
||||
<ToolCard title="Report Inspector" icon="report" link="https://misode.github.io/report/">
|
||||
<p>Analyse your performance reports</p>
|
||||
</ToolCard>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export * from './Category'
|
||||
export * from './Changelog'
|
||||
export * from './Generator'
|
||||
export * from './Home'
|
||||
export * from './Sounds'
|
||||
export * from './Worldgen'
|
||||
|
||||
@@ -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 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 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
|
||||
@@ -59,6 +59,7 @@ const renderHtml: RenderHook = {
|
||||
choice({ choices, config, switchNode }, path, value, lang, states, ctx) {
|
||||
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
|
||||
console.log('RENDER', path.toString(), choice.type, value)
|
||||
const [prefix, suffix, body] = choice.node.hook(this, contextPath, value, lang, states, ctx)
|
||||
if (choices.length === 1) {
|
||||
return [prefix, suffix, body]
|
||||
@@ -69,6 +70,7 @@ const renderHtml: RenderHook = {
|
||||
const newValue = c.change
|
||||
? c.change(DataModel.unwrapLists(value))
|
||||
: 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))
|
||||
}
|
||||
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)
|
||||
? { ...ctx, loot: value?.type } : ctx
|
||||
// console.log('OBJECT', path.toString(), Object.keys(getActiveFields(path)))
|
||||
const body = <>
|
||||
{(typeof value === 'object' && value !== null && !(node.optional() && value === undefined)) &&
|
||||
Object.entries(getActiveFields(path))
|
||||
|
||||
@@ -9,7 +9,7 @@ import { checkVersion } from './Schemas'
|
||||
|
||||
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 = {
|
||||
id: string,
|
||||
@@ -21,6 +21,7 @@ declare var __MCDATA_MASTER_HASH__: string
|
||||
declare var __VANILLA_DATAPACK_SUMMARY_HASH__: string
|
||||
|
||||
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 manifestUrl = 'https://launchermeta.mojang.com/mc/game/version_manifest.json'
|
||||
const resourceUrl = 'https://resources.download.minecraft.net/'
|
||||
@@ -67,13 +68,14 @@ export async function fetchData(versionId: string, collectionTarget: CollectionR
|
||||
fetchRegistries(version, collectionTarget),
|
||||
fetchBlockStateMap(version, blockStateTarget),
|
||||
fetchDynamicRegistries(version, collectionTarget),
|
||||
fetchAssetsRegistries(version, collectionTarget),
|
||||
])
|
||||
}
|
||||
|
||||
async function fetchRegistries(version: Version, target: CollectionRegistry) {
|
||||
console.debug(`[fetchRegistries] ${version.id}`)
|
||||
const registries = config.registries
|
||||
.filter(r => !r.dynamic)
|
||||
.filter(r => !r.dynamic && !r.asset)
|
||||
.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))
|
||||
|
||||
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) {
|
||||
console.debug(`[fetchDynamicRegistries] ${version.id}`)
|
||||
const registries = config.registries
|
||||
.filter(r => r.dynamic)
|
||||
.filter(r => r.dynamic && !r.asset)
|
||||
.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))
|
||||
|
||||
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) {
|
||||
console.debug(`[fetchPreset] ${registry} ${id}`)
|
||||
const versionData = config.versions.find(v => v.id === version)!
|
||||
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)
|
||||
if (registry === 'worldgen/noise_settings' && version === '1.18') {
|
||||
let text = await res.text()
|
||||
|
||||
@@ -51,7 +51,8 @@
|
||||
"id": "1.15",
|
||||
"latest": "1.15.2",
|
||||
"refs": {
|
||||
"mcdata_master": "13355f7"
|
||||
"mcdata_master": "13355f7",
|
||||
"mcassets": "1.15.2"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -59,6 +60,7 @@
|
||||
"latest": "1.16.5",
|
||||
"refs": {
|
||||
"mcdata_master": "1.16.4",
|
||||
"mcassets": "1.16.5",
|
||||
"vanilla_datapack_data": "1.16.4-data",
|
||||
"vanilla_datapack_summary": "1.16.4-summary"
|
||||
}
|
||||
@@ -68,6 +70,7 @@
|
||||
"latest": "1.17.1",
|
||||
"refs": {
|
||||
"mcdata_master": "1.17.1",
|
||||
"mcassets": "1.17.1",
|
||||
"vanilla_datapack_data": "1.17.1-data",
|
||||
"vanilla_datapack_summary": "1.17.1-summary"
|
||||
}
|
||||
@@ -76,6 +79,7 @@
|
||||
"id": "1.18",
|
||||
"refs": {
|
||||
"mcdata_master": "master",
|
||||
"mcassets": "21w44a",
|
||||
"vanilla_datapack_data": "data",
|
||||
"vanilla_datapack_summary": "summary"
|
||||
},
|
||||
@@ -199,12 +203,29 @@
|
||||
"category": "worldgen",
|
||||
"schema": "template_pool",
|
||||
"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": [
|
||||
{ "id": "advancement", "dynamic": true },
|
||||
{ "id": "attribute", "minVersion": "1.16" },
|
||||
{ "id": "block" },
|
||||
{ "id": "block_definition", "path": "blockstates", "asset": true },
|
||||
{ "id": "block_predicate_type", "minVersion": "1.18" },
|
||||
{ "id": "dimension", "dynamic": true },
|
||||
{ "id": "dimension_type", "dynamic": true },
|
||||
@@ -225,6 +246,7 @@
|
||||
{ "id": "loot_score_provider_type", "minVersion": "1.17" },
|
||||
{ "id": "loot_table", "dynamic": true },
|
||||
{ "id": "mob_effect" },
|
||||
{ "id": "model", "path": "models", "asset": true },
|
||||
{ "id": "pos_rule_test", "minVersion": "1.16" },
|
||||
{ "id": "potion", "minVersion": "1.15" },
|
||||
{ "id": "predicate", "dynamic": true },
|
||||
@@ -239,6 +261,7 @@
|
||||
{ "id": "tag/fluid", "dynamic": true },
|
||||
{ "id": "tag/function", "dynamic": true },
|
||||
{ "id": "tag/item", "dynamic": true },
|
||||
{ "id": "texture", "path": "textures", "asset": true },
|
||||
{ "id": "worldgen/biome", "dynamic": true },
|
||||
{ "id": "worldgen/block_state_provider_type", "minVersion": "1.16" },
|
||||
{ "id": "worldgen/block_placer_type", "minVersion": "1.16", "maxVersion": "1.17" },
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"add_bottom": "Add to bottom",
|
||||
"add_top": "Add to top",
|
||||
"advancement": "Advancement",
|
||||
"assets": "Assets",
|
||||
"block_definition": "Blockstate",
|
||||
"changelog.search": "Search changes",
|
||||
"collapse": "Collapse",
|
||||
"collapse_all": "Hold %0% to collapse all",
|
||||
@@ -45,6 +47,7 @@
|
||||
"layer.factor": "Factor",
|
||||
"layer.jaggedness": "Jaggedness",
|
||||
"loot_table": "Loot Table",
|
||||
"model": "Model",
|
||||
"more": "More",
|
||||
"move_down": "Move down",
|
||||
"move_up": "Move up",
|
||||
|
||||
@@ -26,6 +26,16 @@ export default defineConfig({
|
||||
title: getTitle({ id: 'title.changelog', page: true }),
|
||||
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({
|
||||
fileName: `${m.url}/index.html`,
|
||||
title: getTitle(m),
|
||||
|
||||
Reference in New Issue
Block a user