Add biome and feature generators

This commit is contained in:
Misode
2020-07-09 22:16:54 +02:00
parent 7416e21c5d
commit dbc52ff79d
7 changed files with 34 additions and 63 deletions

View File

@@ -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",

View File

@@ -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 => {

View File

@@ -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')

View File

@@ -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 => {

View File

@@ -4,8 +4,8 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= htmlWebpackPlugin.options.title %></title>
<link rel="stylesheet" href="../styles/global.css">
<link rel="stylesheet" href="../styles/nodes.css">
<link rel="stylesheet" href="<%= htmlWebpackPlugin.files.publicPath %>styles/global.css">
<link rel="stylesheet" href="<%= htmlWebpackPlugin.files.publicPath %>styles/nodes.css">
</head>
<body style="visibility: hidden;">
<div class="container">

View File

@@ -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",

View File

@@ -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'
})
]