diff --git a/package.json b/package.json index 6344440a..81c53960 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "author": "Misode", "license": "MIT", "dependencies": { - "@mcschema/core": "^0.3.0", - "@mcschema/java-1.16": "^0.1.1", + "@mcschema/core": "^0.3.1", + "@mcschema/java-1.16": "^0.1.2", "@types/split.js": "^1.4.0", "copy-webpack-plugin": "^6.0.1", "html-webpack-plugin": "^4.3.0", diff --git a/src/app/RegistryFetcher.ts b/src/app/RegistryFetcher.ts index 3aad47a5..a0e7cf2e 100644 --- a/src/app/RegistryFetcher.ts +++ b/src/app/RegistryFetcher.ts @@ -1,6 +1,8 @@ import { CollectionRegistry } from '@mcschema/core' -export const mcdata = (version: string, registry: string) => `https://raw.githubusercontent.com/Arcensoth/mcdata/${version}/processed/reports/registries/${registry}/${registry}.min.json` +export const mcdata = (version: string, registry: string) => { + return `https://raw.githubusercontent.com/Arcensoth/mcdata/${version}/processed/reports/registries/${registry}/${registry.split('/').pop()}.min.json` +} export const RegistryFetcher = async (target: CollectionRegistry, registries: string[], version = 'master') => { await Promise.all(registries.map(async r => { diff --git a/src/app/Sandbox.ts b/src/app/Sandbox.ts deleted file mode 100644 index c92a1834..00000000 --- a/src/app/Sandbox.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { - StringNode, - BooleanNode, - EnumNode, - NumberNode, - ObjectNode, - ListNode, - MapNode, - Switch, - Case, - Reference, - JsonNode, - RangeNode, - Resource, - SCHEMAS -} from '@mcschema/core' - -SCHEMAS.register('foo', ObjectNode({ - foo: StringNode(), - bar: BooleanNode({ radio: true }), - nested: ObjectNode({ - baz: NumberNode({ min: 1 }), - range: RangeNode() - }, { collapse: true }), - arr: ListNode( - ObjectNode({ - aaa: StringNode(), - bbb: JsonNode() - }) - ), - map: MapNode( - EnumNode(['pig', 'sheep'], 'pig'), - Resource(StringNode()) - ), - recursive: ListNode( - Reference('foo') - ), - [Switch]: path => path.push('foo'), - [Case]: { - 'blah': { - haha: StringNode() - } - } -})) - -export const SandboxSchema = SCHEMAS.get('foo') diff --git a/src/app/app.ts b/src/app/app.ts index 2e7081b1..7284b039 100644 --- a/src/app/app.ts +++ b/src/app/app.ts @@ -11,7 +11,6 @@ import { } from '@mcschema/core' import { schemas } from '@mcschema/java-1.16' import { RegistryFetcher } from './RegistryFetcher' -import { SandboxSchema } from './Sandbox' import { ErrorsView } from './ErrorsView' const LOCAL_STORAGE_THEME = 'theme' @@ -19,7 +18,7 @@ const LOCAL_STORAGE_LANGUAGE = 'language' const publicPath = process.env.NODE_ENV === 'production' ? '/dev/' : '/'; -const modelFromPath = (p: string) => p.split('/').filter(e => e.length !== 0).pop() ?? '' +const modelFromPath = (p: string) => p.replace(publicPath, '').replace(/\/$/, '') const addChecked = (el: HTMLElement) => { el.classList.add('check') @@ -41,13 +40,12 @@ const models: { [key: string]: DataModel } = { 'advancement': new DataModel(schemas['advancement']), 'dimension': new DataModel(schemas['dimension']), 'dimension-type': new DataModel(schemas['dimension-type']), - 'sandbox': new DataModel(SandboxSchema) + 'worldgen/biome': new DataModel(schemas['biome']), + 'worldgen/feature': new DataModel(schemas['feature']) } const registries = [ 'attribute', - 'biome', - 'biome_source', 'block', 'enchantment', 'entity_type', @@ -58,7 +56,11 @@ const registries = [ 'loot_pool_entry_type', 'mob_effect', 'stat_type', - 'structure_feature' + 'worldgen/biome_source', + 'worldgen/carver', + 'worldgen/decorator', + 'worldgen/feature', + 'worldgen/surface_builder' ] const treeViewObserver = (el: HTMLElement) => { @@ -127,15 +129,19 @@ Promise.all([ ]).then(responses => { let selected = '' + Object.values(models).forEach(m => m.validate(true)) const updateModel = () => { + let title = '' if (models[selected] === undefined) { - selectedModel.textContent = locale(`title.home`) + title = locale(`title.home`) } else { - selectedModel.textContent = locale(`title.${selected}`) + title = locale(`title.${selected}`) Object.values(views).forEach(v => v.setModel(models[selected])) models[selected].invalidate() } + selectedModel.textContent = title + document.title = title modelSelectorMenu.innerHTML = '' Object.keys(models).forEach(m => { diff --git a/src/index.html b/src/index.html index 1299212f..d1307f41 100644 --- a/src/index.html +++ b/src/index.html @@ -4,8 +4,8 @@ <%= htmlWebpackPlugin.options.title %> - - + +
diff --git a/src/locales/en.json b/src/locales/en.json index c7c5f62e..a54afa8a 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1,16 +1,20 @@ { - "title.home": "Minecraft Generators", + "title.home": "Data Pack Generators", "title.loot-table": "Loot Table Generator", "title.predicate": "Predicate Generator", "title.advancement": "Advancement Generator", "title.dimension": "Dimension Generator", "title.dimension-type": "Dimension Type Generator", + "title.worldgen/biome": "Biome Generator", + "title.worldgen/feature": "Feature Generator", "title.sandbox": "Sandbox", "loot-table": "Loot Table", "predicate": "Predicate", "advancement": "Advancement", "dimension": "Dimension", "dimension-type": "Dimension Type", + "worldgen/biome": "Worldgen Biome", + "worldgen/feature": "Worldgen Feature", "sandbox": "Sandbox", "language": "Language", "reset": "Reset", diff --git a/webpack.config.js b/webpack.config.js index 9db79fc0..786a62ff 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -37,7 +37,7 @@ module.exports = (env, argv) => ({ } }), new HtmlWebpackPlugin({ - title: 'Minecraft Generators', + title: 'Data Pack Generators Minecraft', filename: 'index.html', template: 'src/index.html' }), @@ -67,8 +67,13 @@ module.exports = (env, argv) => ({ template: 'src/index.html' }), new HtmlWebpackPlugin({ - title: 'Sandbox Generator Minecraft', - filename: 'sandbox/index.html', + title: 'Biome Generator Minecraft', + filename: 'worldgen/biome/index.html', + template: 'src/index.html' + }), + new HtmlWebpackPlugin({ + title: 'Feature Generator Minecraft', + filename: 'worldgen/feature/index.html', template: 'src/index.html' }) ]