mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-23 07:10:41 +00:00
Make generator config more robust
This commit is contained in:
@@ -67,8 +67,7 @@ function Main() {
|
||||
<Home path="/" {...{lang, changeTitle}} />
|
||||
<FieldSettings path="/settings/fields" {...{lang, changeTitle}} />
|
||||
<Worldgen path="/worldgen" {...{lang, changeTitle}} />
|
||||
<Generator path="/:generator" {...{lang, version, changeTitle}} onChangeVersion={changeVersion} />
|
||||
<Generator path="/worldgen/:generator" category="worldgen" {...{lang, version, changeTitle}} onChangeVersion={changeVersion} />
|
||||
<Generator default {...{lang, version, changeTitle}} onChangeVersion={changeVersion} />
|
||||
</Router>
|
||||
</>
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ async function getVersion(id: VersionId): Promise<VersionData> {
|
||||
export async function getModel(version: VersionId, id: string): Promise<DataModel> {
|
||||
if (!Models[id] || Models[id].version !== version) {
|
||||
const versionData = await getVersion(version)
|
||||
const schemaName = config.models.find(m => m.id === id)?.schema
|
||||
const schemaName = config.generators.find(g => g.id === id)?.schema
|
||||
if (!schemaName) {
|
||||
throw new Error(`Cannot find model ${id}`)
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import config from '../config.json'
|
||||
|
||||
export function isPromise(obj: any): obj is Promise<any> {
|
||||
return typeof (obj as any)?.then === 'function'
|
||||
}
|
||||
@@ -26,6 +28,11 @@ export function cleanUrl(url: string) {
|
||||
return `/${url}/`.replaceAll('//', '/')
|
||||
}
|
||||
|
||||
export function getGenerator(url: string) {
|
||||
const trimmedUrl = url.replace(/^\//, '').replace(/\/$/, '')
|
||||
return config.generators.find(g => g.url === trimmedUrl)
|
||||
}
|
||||
|
||||
export function stringToColor(str: string): [number, number, number] {
|
||||
const h = Math.abs(hashString(str))
|
||||
return [h % 256, (h >> 8) % 256, (h >> 16) % 256]
|
||||
|
||||
@@ -2,7 +2,7 @@ import { getCurrentUrl, Link } from 'preact-router'
|
||||
import { Btn, BtnMenu, Icons, Octicon } from '.'
|
||||
import config from '../../config.json'
|
||||
import { locale } from '../Locales'
|
||||
import { cleanUrl } from '../Utils'
|
||||
import { cleanUrl, getGenerator } from '../Utils'
|
||||
|
||||
const Themes: Record<string, keyof typeof Octicon> = {
|
||||
system: 'device_desktop',
|
||||
@@ -20,8 +20,7 @@ type HeaderProps = {
|
||||
}
|
||||
export function Header({ lang, title, theme, changeTheme, language, changeLanguage }: HeaderProps) {
|
||||
const loc = locale.bind(null, lang)
|
||||
const id = getCurrentUrl().replace(/^\//, '').replace(/\/$/, '')
|
||||
const category = config.models.find(m => m.id === id)?.category
|
||||
const category = getGenerator(getCurrentUrl())?.category
|
||||
|
||||
return <header>
|
||||
<div class="header-title">
|
||||
|
||||
@@ -6,7 +6,7 @@ import { useModel } from '../hooks'
|
||||
import type { VersionId } from '../Schemas'
|
||||
import { BiomeSourcePreview, DecoratorPreview, NoiseSettingsPreview } from './previews'
|
||||
|
||||
export const HasPreview = ['dimension', 'worldgen/noise-settings', 'worldgen/feature']
|
||||
export const HasPreview = ['dimension', 'worldgen/noise_settings', 'worldgen/configured_feature']
|
||||
|
||||
export const Previews: {
|
||||
id: string,
|
||||
@@ -30,14 +30,14 @@ export const Previews: {
|
||||
},
|
||||
{
|
||||
id: 'noise-settings',
|
||||
generator: 'worldgen/noise-settings',
|
||||
generator: 'worldgen/noise_settings',
|
||||
path: new Path(['noise']),
|
||||
predicate: () => true,
|
||||
preview: NoiseSettingsPreview,
|
||||
},
|
||||
{
|
||||
id: 'decorator',
|
||||
generator: 'worldgen/feature',
|
||||
generator: 'worldgen/configured_feature',
|
||||
path: new Path([]),
|
||||
predicate: () => true,
|
||||
preview: DecoratorPreview,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import type { DataModel } from '@mcschema/core'
|
||||
import { getCurrentUrl } from 'preact-router'
|
||||
import { useEffect, useErrorBoundary, useState } from 'preact/hooks'
|
||||
import config from '../../config.json'
|
||||
import { Analytics } from '../Analytics'
|
||||
@@ -7,17 +8,16 @@ import { fetchPreset } from '../DataFetcher'
|
||||
import { locale } from '../Locales'
|
||||
import type { BlockStateRegistry, VersionId } from '../Schemas'
|
||||
import { checkVersion, getBlockStates, getCollections, getModel } from '../Schemas'
|
||||
import { getGenerator } from '../Utils'
|
||||
|
||||
type GeneratorProps = {
|
||||
lang: string,
|
||||
changeTitle: (title: string, versions?: string[]) => unknown,
|
||||
version: VersionId,
|
||||
onChangeVersion: (version: VersionId) => unknown,
|
||||
generator?: string,
|
||||
path?: string,
|
||||
category?: string,
|
||||
default?: true,
|
||||
}
|
||||
export function Generator({ lang, changeTitle, version, onChangeVersion, category, generator }: GeneratorProps) {
|
||||
export function Generator({ lang, changeTitle, version, onChangeVersion }: GeneratorProps) {
|
||||
const loc = locale.bind(null, lang)
|
||||
const [error, setError] = useState('')
|
||||
const [errorBoundary] = useErrorBoundary()
|
||||
@@ -25,19 +25,17 @@ export function Generator({ lang, changeTitle, version, onChangeVersion, categor
|
||||
return <main><ErrorPanel error={`Something went wrong rendering the generator: ${errorBoundary.message}`}/></main>
|
||||
}
|
||||
|
||||
const id = category ? `${category}/${generator}` : generator ?? ''
|
||||
const modelConfig = config.models.find(m => m.id === id)
|
||||
|
||||
if (!modelConfig) {
|
||||
return <main><ErrorPanel error={`Cannot find generator "${id}"`}/></main>
|
||||
const generator = getGenerator(getCurrentUrl())
|
||||
if (!generator) {
|
||||
return <main><ErrorPanel error="Cannot find generator" /></main>
|
||||
}
|
||||
|
||||
const minVersion = config.models.find(m => m.id === id)?.minVersion ?? '1.15'
|
||||
const minVersion = generator.minVersion ?? '1.15'
|
||||
const allowedVersions = config.versions
|
||||
.filter(v => checkVersion(v.id, minVersion))
|
||||
.map(v => v.id as VersionId)
|
||||
|
||||
changeTitle(loc('title.generator', loc(id)), allowedVersions)
|
||||
changeTitle(loc('title.generator', loc(generator.id)), allowedVersions)
|
||||
|
||||
const [model, setModel] = useState<DataModel | null>(null)
|
||||
const [blockStates, setBlockStates] = useState<BlockStateRegistry | null>(null)
|
||||
@@ -45,10 +43,10 @@ export function Generator({ lang, changeTitle, version, onChangeVersion, categor
|
||||
setModel(null)
|
||||
getBlockStates(version)
|
||||
.then(b => setBlockStates(b))
|
||||
getModel(version, id)
|
||||
getModel(version, generator.id)
|
||||
.then(m => setModel(m))
|
||||
.catch(e => setError(e.message))
|
||||
}, [version, category, generator])
|
||||
.catch(e => { console.error(e); setError(e.message) })
|
||||
}, [version, generator.id])
|
||||
|
||||
const reset = () => {
|
||||
Analytics.generatorEvent('reset')
|
||||
@@ -83,25 +81,23 @@ export function Generator({ lang, changeTitle, version, onChangeVersion, categor
|
||||
|
||||
const [presetFilter, setPresetFilter] = useState('')
|
||||
const [presetResults, setPresetResults] = useState<string[]>([])
|
||||
const registry = (modelConfig.category ? modelConfig.category + '/' : '') + modelConfig.schema
|
||||
useEffect(() => {
|
||||
if (!modelConfig.path) return
|
||||
getCollections(version)
|
||||
.then(collections => {
|
||||
const terms = (presetFilter ?? '').trim().split(' ')
|
||||
const presets = collections.get(registry)
|
||||
const presets = collections.get(generator.id)
|
||||
.map(p => p.slice(10))
|
||||
.filter(p => terms.every(t => p.includes(t)))
|
||||
if (presets) {
|
||||
setPresetResults(presets)
|
||||
}
|
||||
})
|
||||
.catch(e => setError(e.message))
|
||||
}, [version, category, generator, presetFilter])
|
||||
.catch(e => { console.error(e); setError(e.message) })
|
||||
}, [version, generator.id, presetFilter])
|
||||
|
||||
const loadPreset = (id: string) => {
|
||||
Analytics.generatorEvent('load-preset', id)
|
||||
fetchPreset(version, modelConfig.path!, id).then(preset => {
|
||||
fetchPreset(version, generator.path ?? generator.id, id).then(preset => {
|
||||
model?.reset(preset, false)
|
||||
})
|
||||
}
|
||||
@@ -134,7 +130,7 @@ export function Generator({ lang, changeTitle, version, onChangeVersion, categor
|
||||
|
||||
const [previewShown, setPreviewShown] = useState(false)
|
||||
|
||||
const hasPreview = HasPreview.includes(id)
|
||||
const hasPreview = HasPreview.includes(generator.id)
|
||||
let actionsShown = 1
|
||||
if (hasPreview) actionsShown += 1
|
||||
if (sourceShown) actionsShown += 2
|
||||
@@ -149,13 +145,13 @@ export function Generator({ lang, changeTitle, version, onChangeVersion, categor
|
||||
<Ad id="data-pack-generator" type="text" />
|
||||
<div class="controls">
|
||||
<Btn icon="upload" label={loc('import')} onClick={importSource} />
|
||||
{modelConfig.path && <BtnMenu icon="archive" label={loc('presets')} relative={false}>
|
||||
<BtnMenu icon="archive" label={loc('presets')} relative={false}>
|
||||
<BtnInput icon="search" large value={presetFilter} onChange={setPresetFilter} doSelect={1} />
|
||||
<div class="result-list">
|
||||
{presetResults.map(preset => <Btn label={preset} onClick={() => loadPreset(preset)} />)}
|
||||
</div>
|
||||
{presetResults.length === 0 && <Btn label={loc('no_presets')}/>}
|
||||
</BtnMenu>}
|
||||
</BtnMenu>
|
||||
<BtnMenu icon="tag" label={version}>
|
||||
{allowedVersions.reverse().map(v =>
|
||||
<Btn label={v} active={v === version} onClick={() => onChangeVersion(v)} />
|
||||
@@ -185,10 +181,10 @@ export function Generator({ lang, changeTitle, version, onChangeVersion, categor
|
||||
</div>
|
||||
</div>
|
||||
<div class={`popup-preview${previewShown ? ' shown' : ''}`}>
|
||||
<PreviewPanel {...{lang, model, version, id}} shown={previewShown} onError={setError} />
|
||||
<PreviewPanel {...{lang, model, version, id: generator.id}} shown={previewShown} onError={setError} />
|
||||
</div>
|
||||
<div class={`popup-source${sourceShown ? ' shown' : ''}`}>
|
||||
<SourcePanel {...{lang, model, blockStates, doCopy, doDownload, doImport}} name={modelConfig.schema ?? 'data'} onError={setError} />
|
||||
<SourcePanel {...{lang, model, blockStates, doCopy, doDownload, doImport}} name={generator.schema ?? 'data'} onError={setError} />
|
||||
</div>
|
||||
</>
|
||||
}
|
||||
|
||||
@@ -13,9 +13,10 @@ export function Home({ lang, changeTitle }: HomeProps) {
|
||||
changeTitle(loc('title.home'))
|
||||
return <main>
|
||||
<div class="home">
|
||||
{config.models.filter(m => typeof m.category !== 'string').map(m =>
|
||||
<ToolCard title={loc(m.id)} link={cleanUrl(m.id)} />
|
||||
{config.generators.filter(g => !g.category).map(g =>
|
||||
<ToolCard title={loc(g.id)} link={cleanUrl(g.url)} />
|
||||
)}
|
||||
<ToolCard title={loc('worldgen')} link="/worldgen/" />
|
||||
<hr />
|
||||
<ToolCard title="Report Inspector" icon="report" link="https://misode.github.io/report/">
|
||||
<p>Analyse your performance reports</p>
|
||||
|
||||
@@ -13,8 +13,8 @@ export function Worldgen({ lang, changeTitle }: WorldgenProps) {
|
||||
changeTitle(loc('title.generator_category', loc('worldgen')))
|
||||
return <main>
|
||||
<div class="home">
|
||||
{config.models.filter(m => m.category === 'worldgen').map(m =>
|
||||
<ToolCard title={loc(m.id)} link={cleanUrl(m.id)} />
|
||||
{config.generators.filter(g => g.category === 'worldgen').map(g =>
|
||||
<ToolCard title={loc(g.id)} link={cleanUrl(g.url)} />
|
||||
)}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
@@ -71,121 +71,105 @@
|
||||
"dynamic": true
|
||||
}
|
||||
],
|
||||
"models": [
|
||||
"generators": [
|
||||
{
|
||||
"id": "loot-table",
|
||||
"name": "Loot Table",
|
||||
"id": "loot_table",
|
||||
"url": "loot-table",
|
||||
"path": "loot_tables",
|
||||
"schema": "loot_table"
|
||||
},
|
||||
{
|
||||
"id": "predicate",
|
||||
"name": "Predicate",
|
||||
"url": "predicate",
|
||||
"path": "predicates",
|
||||
"schema": "predicate"
|
||||
},
|
||||
{
|
||||
"id": "item-modifier",
|
||||
"name": "Item Modifier",
|
||||
"id": "item_modifier",
|
||||
"url": "item-modifier",
|
||||
"path": "item_modifiers",
|
||||
"schema": "item_modifier",
|
||||
"minVersion": "1.17"
|
||||
},
|
||||
{
|
||||
"id": "advancement",
|
||||
"name": "Advancement",
|
||||
"url": "advancement",
|
||||
"path": "advancements",
|
||||
"schema": "advancement"
|
||||
},
|
||||
{
|
||||
"id": "dimension",
|
||||
"name": "Dimension",
|
||||
"path": "dimension",
|
||||
"url": "dimension",
|
||||
"schema": "dimension",
|
||||
"category": "worldgen",
|
||||
"minVersion": "1.16"
|
||||
},
|
||||
{
|
||||
"id": "dimension-type",
|
||||
"name": "Dimension Type",
|
||||
"path": "dimension_type",
|
||||
"id": "dimension_type",
|
||||
"url": "dimension-type",
|
||||
"schema": "dimension_type",
|
||||
"category": "worldgen",
|
||||
"minVersion": "1.16"
|
||||
},
|
||||
{
|
||||
"id": "world",
|
||||
"name": "World Settings",
|
||||
"url": "world",
|
||||
"schema": "world_settings",
|
||||
"category": "worldgen",
|
||||
"minVersion": "1.16"
|
||||
},
|
||||
{
|
||||
"id": "worldgen",
|
||||
"name": "Worldgen",
|
||||
"category": true,
|
||||
"minVersion": "1.16"
|
||||
},
|
||||
{
|
||||
"id": "worldgen/biome",
|
||||
"name": "Biome",
|
||||
"path": "worldgen/biome",
|
||||
"url": "worldgen/biome",
|
||||
"category": "worldgen",
|
||||
"schema": "biome",
|
||||
"minVersion": "1.16"
|
||||
},
|
||||
{
|
||||
"id": "worldgen/carver",
|
||||
"name": "Carver",
|
||||
"path": "worldgen/configured_carver",
|
||||
"id": "worldgen/configured_carver",
|
||||
"url": "worldgen/carver",
|
||||
"category": "worldgen",
|
||||
"schema": "configured_carver",
|
||||
"minVersion": "1.16"
|
||||
},
|
||||
{
|
||||
"id": "worldgen/feature",
|
||||
"name": "Feature",
|
||||
"path": "worldgen/configured_feature",
|
||||
"id": "worldgen/configured_feature",
|
||||
"url": "worldgen/feature",
|
||||
"category": "worldgen",
|
||||
"schema": "configured_feature",
|
||||
"minVersion": "1.16"
|
||||
},
|
||||
{
|
||||
"id": "worldgen/noise-settings",
|
||||
"name": "Noise Settings",
|
||||
"path": "worldgen/noise_settings",
|
||||
"id": "worldgen/noise_settings",
|
||||
"url": "worldgen/noise-settings",
|
||||
"category": "worldgen",
|
||||
"schema": "noise_settings",
|
||||
"minVersion": "1.16"
|
||||
},
|
||||
{
|
||||
"id": "worldgen/structure-feature",
|
||||
"name": "Structure Feature",
|
||||
"path": "worldgen/configured_structure_feature",
|
||||
"id": "worldgen/configured_structure_feature",
|
||||
"url": "worldgen/structure-feature",
|
||||
"category": "worldgen",
|
||||
"schema": "configured_structure_feature",
|
||||
"minVersion": "1.16"
|
||||
},
|
||||
{
|
||||
"id": "worldgen/surface-builder",
|
||||
"name": "Surface Builder",
|
||||
"path": "worldgen/configured_surface_builder",
|
||||
"id": "worldgen/configured_surface_builder",
|
||||
"url": "worldgen/surface-builder",
|
||||
"category": "worldgen",
|
||||
"schema": "configured_surface_builder",
|
||||
"minVersion": "1.16"
|
||||
},
|
||||
{
|
||||
"id": "worldgen/processor-list",
|
||||
"name": "Processor List",
|
||||
"path": "worldgen/processor_list",
|
||||
"id": "worldgen/processor_list",
|
||||
"url": "worldgen/processor-list",
|
||||
"category": "worldgen",
|
||||
"schema": "processor_list",
|
||||
"minVersion": "1.16"
|
||||
},
|
||||
{
|
||||
"id": "worldgen/template-pool",
|
||||
"name": "Template Pool",
|
||||
"path": "worldgen/template_pool",
|
||||
"id": "worldgen/template_pool",
|
||||
"url": "worldgen/template-pool",
|
||||
"category": "worldgen",
|
||||
"schema": "template_pool",
|
||||
"minVersion": "1.16"
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
{
|
||||
"advancement": "Fortschritt",
|
||||
"copy": "Kopieren",
|
||||
"dimension-type": "Dimensionstyp",
|
||||
"dimension_type": "Dimensionstyp",
|
||||
"dimension": "Dimension",
|
||||
"download": "Herunterladen",
|
||||
"language": "Sprache",
|
||||
"loot-table": "Beutetabelle",
|
||||
"loot_table": "Beutetabelle",
|
||||
"predicate": "Prädikat",
|
||||
"preview": "Visualisieren",
|
||||
"reset": "Zurücksetzen",
|
||||
"share": "Teilen",
|
||||
"title.generator": "%0%-Generator",
|
||||
"title.generator": "%0%_Generator",
|
||||
"title.home": "Datenpaketgeneratoren",
|
||||
"worldgen/biome": "Biom",
|
||||
"worldgen/carver": "Borer",
|
||||
"worldgen/feature": "Merkmal",
|
||||
"worldgen/noise-settings": "Rauscheinstellungen",
|
||||
"worldgen/processor-list": "Prozessorliste",
|
||||
"worldgen/structure-feature": "Strukturmekrmal",
|
||||
"worldgen/surface-builder": "Oberflächengestalter",
|
||||
"worldgen/template-pool": "Vorlagenauswahl"
|
||||
"worldgen/configured_carver": "Borer",
|
||||
"worldgen/configured_feature": "Merkmal",
|
||||
"worldgen/noise_settings": "Rauscheinstellungen",
|
||||
"worldgen/processor_list": "Prozessorliste",
|
||||
"worldgen/configured_structure_feature": "Strukturmekrmal",
|
||||
"worldgen/configured_surface_builder": "Oberflächengestalter",
|
||||
"worldgen/template_pool": "Vorlagenauswahl"
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"button.expand": "Expand",
|
||||
"button.remove": "Remove",
|
||||
"copy": "Copy",
|
||||
"dimension-type": "Dimension Type",
|
||||
"dimension_type": "Dimension Type",
|
||||
"dimension": "Dimension",
|
||||
"download": "Download",
|
||||
"fields": "Fields",
|
||||
@@ -15,9 +15,9 @@
|
||||
"indentation.2_spaces": "2 spaces",
|
||||
"indentation.4_spaces": "4 spaces",
|
||||
"indentation.tabs": "Tabs",
|
||||
"item-modifier": "Item Modifier",
|
||||
"item_modifier": "Item Modifier",
|
||||
"language": "Language",
|
||||
"loot-table": "Loot Table",
|
||||
"loot_table": "Loot Table",
|
||||
"not_found.description": "The page you were looking for does not exist.",
|
||||
"no_presets": "No presets",
|
||||
"predicate": "Predicate",
|
||||
@@ -44,11 +44,11 @@
|
||||
"world": "World Settings",
|
||||
"worldgen": "Worldgen",
|
||||
"worldgen/biome": "Biome",
|
||||
"worldgen/carver": "Carver",
|
||||
"worldgen/feature": "Feature",
|
||||
"worldgen/noise-settings": "Noise Settings",
|
||||
"worldgen/processor-list": "Processor List",
|
||||
"worldgen/structure-feature": "Structure Feature",
|
||||
"worldgen/surface-builder": "Surface Builder",
|
||||
"worldgen/template-pool": "Template Pool"
|
||||
"worldgen/configured_carver": "Carver",
|
||||
"worldgen/configured_feature": "Feature",
|
||||
"worldgen/noise_settings": "Noise Settings",
|
||||
"worldgen/processor_list": "Processor List",
|
||||
"worldgen/configured_structure_feature": "Structure Feature",
|
||||
"worldgen/configured_surface_builder": "Surface Builder",
|
||||
"worldgen/template_pool": "Template Pool"
|
||||
}
|
||||
|
||||
@@ -2,26 +2,26 @@
|
||||
"advancement": "Progrès",
|
||||
"copy": "Copie",
|
||||
"dimension": "Dimension",
|
||||
"dimension-type": "Type de dimension",
|
||||
"dimension_type": "Type de dimension",
|
||||
"download": "Télécharger",
|
||||
"indentation.2_spaces": "2 espaces",
|
||||
"indentation.4_spaces": "4 espaces",
|
||||
"indentation.tabs": "Onglets",
|
||||
"language": "Langage",
|
||||
"loot-table": "Table de butin",
|
||||
"loot_table": "Table de butin",
|
||||
"predicate": "Prédicat",
|
||||
"reset": "Réinitialiser",
|
||||
"share": "Partager",
|
||||
"title.generator": "Générateur de %0%",
|
||||
"title.home": "Générateur de data-pack",
|
||||
"title.home": "Générateur de data_pack",
|
||||
"preview": "Visualiser",
|
||||
"world": "Paramètres du monde",
|
||||
"worldgen/biome": "Biome",
|
||||
"worldgen/carver": "Sculpteur",
|
||||
"worldgen/feature": "Caractéristiques",
|
||||
"worldgen/noise-settings": "Paramètres de forme du terrain",
|
||||
"worldgen/processor-list": "Liste de processeurs",
|
||||
"worldgen/structure-feature": "Fonctionnalités de structures",
|
||||
"worldgen/surface-builder": "Générateur de la surface",
|
||||
"worldgen/template-pool": "Pool modèle"
|
||||
"worldgen/configured_carver": "Sculpteur",
|
||||
"worldgen/configured_feature": "Caractéristiques",
|
||||
"worldgen/noise_settings": "Paramètres de forme du terrain",
|
||||
"worldgen/processor_list": "Liste de processeurs",
|
||||
"worldgen/configured_structure_feature": "Fonctionnalités de structures",
|
||||
"worldgen/configured_surface_builder": "Générateur de la surface",
|
||||
"worldgen/template_pool": "Pool modèle"
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
"advancement": "Avanzamento",
|
||||
"copy": "Copia",
|
||||
"dimension": "Dimensione",
|
||||
"dimension-type": "Tipo di Dimensione",
|
||||
"dimension_type": "Tipo di Dimensione",
|
||||
"download": "Scarica",
|
||||
"fields": "Campi",
|
||||
"item-modifier": "Modificatore d'Oggetti",
|
||||
"item_modifier": "Modificatore d'Oggetti",
|
||||
"language": "Lingua",
|
||||
"loot-table": "Tavola del Bottino",
|
||||
"loot_table": "Tavola del Bottino",
|
||||
"predicate": "Predica",
|
||||
"redo": "Rifai"
|
||||
}
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
"advancement": "進捗 (Advancement)",
|
||||
"copy": "コピー",
|
||||
"dimension": "ディメンション (Dimension)",
|
||||
"dimension-type": "ディメンションタイプ (Dimension Type)",
|
||||
"dimension_type": "ディメンションタイプ (Dimension Type)",
|
||||
"download": "ダウンロード",
|
||||
"language": "言語設定",
|
||||
"loot-table": "ルートテーブル (Loot Table)",
|
||||
"loot_table": "ルートテーブル (Loot Table)",
|
||||
"predicate": "条件 (Predicate)",
|
||||
"reset": "リセット",
|
||||
"share": "共有",
|
||||
@@ -14,11 +14,11 @@
|
||||
"preview": "可視化",
|
||||
"world": "ワールド設定 (World Settings)",
|
||||
"worldgen/biome": "バイオーム (Biome)",
|
||||
"worldgen/carver": "地形彫刻 (Carver)",
|
||||
"worldgen/feature": "生成物 (Feature)",
|
||||
"worldgen/noise-settings": "ノイズ設定 (Noise Settings)",
|
||||
"worldgen/processor-list": "プロセッサリスト (Processor List)",
|
||||
"worldgen/structure-feature": "ストラクチャー生成物 (Structure Feature)",
|
||||
"worldgen/surface-builder": "地形生成 (Surface Builder)",
|
||||
"worldgen/template-pool": "テンプレートプール (Template Pool)"
|
||||
"worldgen/configured_carver": "地形彫刻 (Carver)",
|
||||
"worldgen/configured_feature": "生成物 (Feature)",
|
||||
"worldgen/noise_settings": "ノイズ設定 (Noise Settings)",
|
||||
"worldgen/processor_list": "プロセッサリスト (Processor List)",
|
||||
"worldgen/configured_structure_feature": "ストラクチャー生成物 (Structure Feature)",
|
||||
"worldgen/configured_surface_builder": "地形生成 (Surface Builder)",
|
||||
"worldgen/template_pool": "テンプレートプール (Template Pool)"
|
||||
}
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
"advancement": "Postęp",
|
||||
"copy": "Kopiuj",
|
||||
"dimension": "Wymiar",
|
||||
"dimension-type": "Typ Wymiaru",
|
||||
"dimension_type": "Typ Wymiaru",
|
||||
"download": "Pobierz",
|
||||
"language": "Język",
|
||||
"loot-table": "Tabela Łupów",
|
||||
"loot_table": "Tabela Łupów",
|
||||
"predicate": "Predicate",
|
||||
"reset": "Reset",
|
||||
"share": "Podziel się",
|
||||
@@ -14,11 +14,11 @@
|
||||
"preview": "Wizualizuj",
|
||||
"world": "Ustawienia Świata",
|
||||
"worldgen/biome": "Biom",
|
||||
"worldgen/carver": "Rzeźbiarz",
|
||||
"worldgen/feature": "Aspekt",
|
||||
"worldgen/noise-settings": "Ustawienia Szumu",
|
||||
"worldgen/processor-list": "Lista Procesorów",
|
||||
"worldgen/structure-feature": "Aspekt Struktury",
|
||||
"worldgen/surface-builder": "Konstruktor Powierzchni",
|
||||
"worldgen/template-pool": "Pula Szablonów"
|
||||
"worldgen/configured_carver": "Rzeźbiarz",
|
||||
"worldgen/configured_feature": "Aspekt",
|
||||
"worldgen/noise_settings": "Ustawienia Szumu",
|
||||
"worldgen/processor_list": "Lista Procesorów",
|
||||
"worldgen/configured_structure_feature": "Aspekt Struktury",
|
||||
"worldgen/configured_surface_builder": "Konstruktor Powierzchni",
|
||||
"worldgen/template_pool": "Pula Szablonów"
|
||||
}
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
"advancement": "Достижение",
|
||||
"copy": "Копировать",
|
||||
"dimension": "Измерение",
|
||||
"dimension-type": "Тип измерения",
|
||||
"dimension_type": "Тип измерения",
|
||||
"download": "Скачать",
|
||||
"fields": "Поля",
|
||||
"indentation.2_spaces": "2 пробела",
|
||||
"indentation.4_spaces": "4 пробела",
|
||||
"indentation.tabs": "Табуляция",
|
||||
"item-modifier": "Модификатор предмета",
|
||||
"item_modifier": "Модификатор предмета",
|
||||
"language": "Язык",
|
||||
"loot-table": "Таблица добычи",
|
||||
"loot_table": "Таблица добычи",
|
||||
"predicate": "Предикат",
|
||||
"preview": "Визуализировать",
|
||||
"preview.depth": "Глубина",
|
||||
@@ -27,11 +27,11 @@
|
||||
"undo": "Отменить",
|
||||
"world": "Настройки мира",
|
||||
"worldgen/biome": "Биом",
|
||||
"worldgen/carver": "«Разрезатель»",
|
||||
"worldgen/feature": "Особенность",
|
||||
"worldgen/noise-settings": "Настройки шума",
|
||||
"worldgen/processor-list": "Список процессоров",
|
||||
"worldgen/structure-feature": "Особенности структур",
|
||||
"worldgen/surface-builder": "Генерация плоскости",
|
||||
"worldgen/template-pool": "Пул шаблонов"
|
||||
"worldgen/configured_carver": "«Разрезатель»",
|
||||
"worldgen/configured_feature": "Особенность",
|
||||
"worldgen/noise_settings": "Настройки шума",
|
||||
"worldgen/processor_list": "Список процессоров",
|
||||
"worldgen/configured_structure_feature": "Особенности структур",
|
||||
"worldgen/configured_surface_builder": "Генерация плоскости",
|
||||
"worldgen/template_pool": "Пул шаблонов"
|
||||
}
|
||||
|
||||
@@ -5,15 +5,15 @@
|
||||
"button.expand": "Zobraziť",
|
||||
"button.remove": "Vymazať",
|
||||
"copy": "Kopírovať",
|
||||
"dimension-type": "Typ dimenzie",
|
||||
"dimension_type": "Typ dimenzie",
|
||||
"dimension": "Dimenzia",
|
||||
"download": "Stiahnuť",
|
||||
"fields": "Polia",
|
||||
"github": "GitHub",
|
||||
"home": "Domov",
|
||||
"item-modifier": "Úprava itemov",
|
||||
"item_modifier": "Úprava itemov",
|
||||
"language": "Jazyk",
|
||||
"loot-table": "Zoznam lupov",
|
||||
"loot_table": "Zoznam lupov",
|
||||
"not_found.description": "Stránka ktorú ste vyhľadali neexistuje.",
|
||||
"predicate": "Predikát",
|
||||
"redo": "Znovu",
|
||||
@@ -33,11 +33,11 @@
|
||||
"undo": "Späť",
|
||||
"world": "Nastavenia sveta",
|
||||
"worldgen/biome": "Bióm",
|
||||
"worldgen/carver": "Carver",
|
||||
"worldgen/feature": "Doplnky",
|
||||
"worldgen/noise-settings": "Nastavenia šumu",
|
||||
"worldgen/processor-list": "Zoznam procesorov",
|
||||
"worldgen/structure-feature": "Doplnky štruktúr",
|
||||
"worldgen/surface-builder": "Povrchový staviteľ",
|
||||
"worldgen/template-pool": "Súbor šablon"
|
||||
"worldgen/configured_carver": "Carver",
|
||||
"worldgen/configured_feature": "Doplnky",
|
||||
"worldgen/noise_settings": "Nastavenia šumu",
|
||||
"worldgen/processor_list": "Zoznam procesorov",
|
||||
"worldgen/configured_structure_feature": "Doplnky štruktúr",
|
||||
"worldgen/configured_surface_builder": "Povrchový staviteľ",
|
||||
"worldgen/template_pool": "Súbor šablon"
|
||||
}
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
"advancement": "进度",
|
||||
"copy": "复制",
|
||||
"dimension": "维度",
|
||||
"dimension-type": "维度类型",
|
||||
"dimension_type": "维度类型",
|
||||
"download": "下载",
|
||||
"fields": "字段",
|
||||
"indentation.2_spaces": "2 空格缩进",
|
||||
"indentation.4_spaces": "4 空格缩进",
|
||||
"indentation.tabs": "Tab 缩进",
|
||||
"item-modifier": "物品修饰器",
|
||||
"item_modifier": "物品修饰器",
|
||||
"language": "语言",
|
||||
"loot-table": "战利品表",
|
||||
"loot_table": "战利品表",
|
||||
"predicate": "断言",
|
||||
"preview": "可视化",
|
||||
"preview.depth": "深度",
|
||||
@@ -28,11 +28,11 @@
|
||||
"undo": "撤销",
|
||||
"world": "世界设置",
|
||||
"worldgen/biome": "生物群系",
|
||||
"worldgen/carver": "地形雕刻器",
|
||||
"worldgen/feature": "地物",
|
||||
"worldgen/noise-settings": "噪声设置",
|
||||
"worldgen/processor-list": "处理器列表",
|
||||
"worldgen/structure-feature": "结构地物",
|
||||
"worldgen/surface-builder": "地表生成器",
|
||||
"worldgen/template-pool": "模板池"
|
||||
"worldgen/configured_carver": "地形雕刻器",
|
||||
"worldgen/configured_feature": "地物",
|
||||
"worldgen/noise_settings": "噪声设置",
|
||||
"worldgen/processor_list": "处理器列表",
|
||||
"worldgen/configured_structure_feature": "结构地物",
|
||||
"worldgen/configured_surface_builder": "地表生成器",
|
||||
"worldgen/template_pool": "模板池"
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
"advancement": "進度",
|
||||
"copy": "複製",
|
||||
"dimension": "維度",
|
||||
"dimension-type": "維度類型",
|
||||
"dimension_type": "維度類型",
|
||||
"download": "下載",
|
||||
"fields": "欄位",
|
||||
"item-modifier": "物品修飾器",
|
||||
"item_modifier": "物品修飾器",
|
||||
"language": "語言",
|
||||
"loot-table": "戰利品表",
|
||||
"loot_table": "戰利品表",
|
||||
"predicate": "述詞",
|
||||
"preview": "可視化",
|
||||
"preview.depth": "深度",
|
||||
@@ -25,11 +25,11 @@
|
||||
"undo": "復原",
|
||||
"world": "世界設定",
|
||||
"worldgen/biome": "生態域",
|
||||
"worldgen/carver": "地形雕刻器",
|
||||
"worldgen/feature": "地物",
|
||||
"worldgen/noise-settings": "噪聲設定",
|
||||
"worldgen/processor-list": "處理器列表",
|
||||
"worldgen/structure-feature": "結構地物",
|
||||
"worldgen/surface-builder": "地表生成器",
|
||||
"worldgen/template-pool": "模板池"
|
||||
"worldgen/configured_carver": "地形雕刻器",
|
||||
"worldgen/configured_feature": "地物",
|
||||
"worldgen/noise_settings": "噪聲設定",
|
||||
"worldgen/processor_list": "處理器列表",
|
||||
"worldgen/configured_structure_feature": "結構地物",
|
||||
"worldgen/configured_surface_builder": "地表生成器",
|
||||
"worldgen/template_pool": "模板池"
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ export default defineConfig({
|
||||
title: '404',
|
||||
template: template,
|
||||
}),
|
||||
...config.models.map(m => html({
|
||||
...config.generators.map(m => html({
|
||||
fileName: `${m.id}/index.html`,
|
||||
title: getTitle(m),
|
||||
template: template,
|
||||
|
||||
Reference in New Issue
Block a user