mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-23 07:10:41 +00:00
Add item modifiers, fix problems with version switcher
This commit is contained in:
21
package-lock.json
generated
21
package-lock.json
generated
@@ -5,9 +5,9 @@
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@mcschema/core": {
|
||||
"version": "0.11.2",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.11.2.tgz",
|
||||
"integrity": "sha512-Y5jKXDesEkwwM/USwSQFoNaokAfZZDopb2bjIz77RppSFsa4f7zJuHPn+A+Wohn4ZZAmizkXx7P6slUj4rvc6Q=="
|
||||
"version": "0.11.3",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.11.3.tgz",
|
||||
"integrity": "sha512-15CTjCGeZPW123NYnjnG7jwtK9IVydFPSIas/QIKO9WGXlbLC+zRflOhcVVkHEprJuuFdGGmH9cfnUeFyZbDRQ=="
|
||||
},
|
||||
"@mcschema/java-1.16": {
|
||||
"version": "0.5.14",
|
||||
@@ -18,11 +18,18 @@
|
||||
}
|
||||
},
|
||||
"@mcschema/java-1.17": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/java-1.17/-/java-1.17-0.1.3.tgz",
|
||||
"integrity": "sha512-YQ0zxBAS2MFk6YWOTYip2/eZo/WXHBWxh/CuZEyibYoRMqEwryj0IR71d5Q/mgFZlhm4S8MI05ucuwfRk+X27A==",
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/java-1.17/-/java-1.17-0.1.4.tgz",
|
||||
"integrity": "sha512-N3Et4Uz+VlmdpM2dAUEKoOS2HJIid1DlFWJIFK9NDRXLRqEFz9uNO5Coise2AM+0p/fJqapxVQCRgAwlEtd02g==",
|
||||
"requires": {
|
||||
"@mcschema/core": "^0.11.2"
|
||||
"@mcschema/core": "^0.11.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@mcschema/core": {
|
||||
"version": "0.11.3",
|
||||
"resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.11.3.tgz",
|
||||
"integrity": "sha512-15CTjCGeZPW123NYnjnG7jwtK9IVydFPSIas/QIKO9WGXlbLC+zRflOhcVVkHEprJuuFdGGmH9cfnUeFyZbDRQ=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@mcschema/locales": {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"dependencies": {
|
||||
"@mcschema/core": "^0.11.2",
|
||||
"@mcschema/java-1.16": "^0.5.14",
|
||||
"@mcschema/java-1.17": "^0.1.3",
|
||||
"@mcschema/java-1.17": "^0.1.4",
|
||||
"@mcschema/locales": "^0.1.11",
|
||||
"@types/google.analytics": "0.0.40",
|
||||
"@types/split.js": "^1.4.0",
|
||||
|
||||
@@ -12,6 +12,14 @@ import { BiomeNoiseVisualizer } from './visualization/BiomeNoiseVisualizer'
|
||||
import { Mounter } from './Mounter'
|
||||
import { getLanguage, hasLocale, locale, registerLocale, setLanguage } from './locales'
|
||||
|
||||
type ModelConfig = {
|
||||
id: string
|
||||
name: string
|
||||
schema?: string
|
||||
minVersion?: string
|
||||
children?: ModelConfig[]
|
||||
}
|
||||
|
||||
const versionSchemas: {
|
||||
[versionId: string]: {
|
||||
getCollections: () => CollectionRegistry,
|
||||
@@ -30,6 +38,8 @@ const publicPath = '/';
|
||||
|
||||
const modelFromPath = (p: string) => p.replace(publicPath, '').replace(/\/$/, '')
|
||||
|
||||
const modelConfig = (id: string): ModelConfig => config.models.find(m => m.id === id) ?? config.models.filter(m => m.children).reduce((acc: any, cur: any) => [...acc, ...cur.children], []).find(m => m.id === id)
|
||||
|
||||
const addChecked = (el: HTMLElement) => {
|
||||
el.classList.add('check')
|
||||
setTimeout(() => {
|
||||
@@ -174,7 +184,10 @@ Promise.all([
|
||||
let models: { [key: string]: DataModel } = {}
|
||||
const buildModel = (model: any) => {
|
||||
if (model.schema) {
|
||||
models[model.id] = new DataModel(SCHEMAS.get(model.schema))
|
||||
const schema = SCHEMAS.get(model.schema)
|
||||
if (schema) {
|
||||
models[model.id] = new DataModel(schema)
|
||||
}
|
||||
} else if (model.children) {
|
||||
model.children.forEach(buildModel)
|
||||
}
|
||||
@@ -199,6 +212,21 @@ Promise.all([
|
||||
document.querySelectorAll('[data-i18n]').forEach(el => {
|
||||
el.textContent = locale(el.attributes.getNamedItem('data-i18n')!.value)
|
||||
})
|
||||
|
||||
treeVersionMenu.innerHTML = ''
|
||||
const m = modelConfig(selected)
|
||||
const minVersion = config.versions.findIndex(v => v.id === (m?.minVersion ?? '1.16'))
|
||||
config.versions.forEach((v, i) => {
|
||||
if (i > minVersion) return
|
||||
const entry = document.createElement('button')
|
||||
entry.classList.add('btn')
|
||||
entry.textContent = v.id
|
||||
entry.addEventListener('click', () => {
|
||||
updateVersion(v.id)
|
||||
ga('send', 'event', 'Generator', 'set-version', version)
|
||||
})
|
||||
treeVersionMenu.append(entry)
|
||||
})
|
||||
}
|
||||
|
||||
const updateLanguage = (id: string, store = false) => {
|
||||
@@ -228,30 +256,38 @@ Promise.all([
|
||||
}
|
||||
}
|
||||
|
||||
const updateVersion = (id: string) => {
|
||||
const updateVersion = async (id: string) => {
|
||||
localStorage.setItem(LOCAL_STORAGE_VERSION, id)
|
||||
if (id === version) return
|
||||
|
||||
const newCollections = versionSchemas[id].getCollections()
|
||||
RegistryFetcher(newCollections, id).then(() => {
|
||||
await RegistryFetcher(newCollections, id)
|
||||
const newSchemas = versionSchemas[id].getSchemas(newCollections)
|
||||
|
||||
const newSchemas = versionSchemas[id].getSchemas(newCollections)
|
||||
|
||||
const fixModel = (model: any) => {
|
||||
if (model.schema) {
|
||||
models[model.id].schema = newSchemas.get(model.schema)
|
||||
const fixModel = (model: ModelConfig) => {
|
||||
if (model.schema) {
|
||||
const minVersion = config.versions.findIndex(v => v.id === (model.minVersion ?? '1.16'))
|
||||
const targetVersion = config.versions.findIndex(v => v.id === id)
|
||||
if (minVersion >= targetVersion) {
|
||||
const schema = newSchemas.get(model.schema)
|
||||
if (models[model.id] === undefined) {
|
||||
models[model.id] = new DataModel(schema)
|
||||
} else {
|
||||
models[model.id].schema = schema
|
||||
}
|
||||
models[model.id].validate()
|
||||
models[model.id].invalidate()
|
||||
} else if (model.children) {
|
||||
model.children.forEach(fixModel)
|
||||
} else {
|
||||
delete models[model.id]
|
||||
}
|
||||
} else if (model.children) {
|
||||
model.children.forEach(fixModel)
|
||||
}
|
||||
config.models.forEach(fixModel)
|
||||
|
||||
treeVersionLabel.textContent = id
|
||||
version = id
|
||||
ga('set', 'dimension3', version);
|
||||
})
|
||||
}
|
||||
config.models.forEach(fixModel)
|
||||
treeVersionLabel.textContent = id
|
||||
version = id
|
||||
ga('set', 'dimension3', version);
|
||||
}
|
||||
|
||||
homeLink.addEventListener('click', evt => {
|
||||
@@ -355,17 +391,6 @@ Promise.all([
|
||||
}, { capture: true, once: true })
|
||||
})
|
||||
|
||||
config.versions.forEach(v => {
|
||||
const entry = document.createElement('button')
|
||||
entry.classList.add('btn')
|
||||
entry.textContent = v.id
|
||||
entry.addEventListener('click', () => {
|
||||
updateVersion(v.id)
|
||||
ga('send', 'event', 'Generator', 'set-version', version)
|
||||
})
|
||||
treeVersionMenu.append(entry)
|
||||
})
|
||||
|
||||
treeControlsReset.addEventListener('click', evt => {
|
||||
models[selected].reset(models[selected].schema.default(), true)
|
||||
addChecked(treeControlsReset)
|
||||
@@ -427,7 +452,7 @@ Promise.all([
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
|
||||
const panels = [treeViewEl, sourceViewEl, errorsViewEl]
|
||||
if (models[selected] === undefined) {
|
||||
if (['', 'worldgen'].includes(selected)) {
|
||||
homeViewEl.style.display = '';
|
||||
(document.querySelector('.gutter') as HTMLElement).style.display = 'none';
|
||||
(document.querySelector('.content') as HTMLElement).style.overflowY = 'initial'
|
||||
@@ -454,7 +479,16 @@ Promise.all([
|
||||
homeViewEl.style.display = 'none';
|
||||
(document.querySelector('.gutter') as HTMLElement).style.display = ''
|
||||
panels.forEach(v => v.style.display = '')
|
||||
|
||||
if (models[selected] === undefined) {
|
||||
const m = modelConfig(selected)
|
||||
const loadedVersion = config.versions.findIndex(v => v.id === version)
|
||||
const minVersion = config.versions.findIndex(v => v.id === m.minVersion)
|
||||
if (minVersion < loadedVersion) {
|
||||
updateVersion(m.minVersion!).then(() => {
|
||||
updateModel()
|
||||
})
|
||||
}
|
||||
}
|
||||
if (params.has('q')) {
|
||||
const data = atob(params.get('q')!)
|
||||
models[selected].reset(JSON.parse(data))
|
||||
|
||||
@@ -62,6 +62,12 @@
|
||||
"name": "Predicate",
|
||||
"schema": "predicate"
|
||||
},
|
||||
{
|
||||
"id": "item-modifier",
|
||||
"name": "Item Modifier",
|
||||
"schema": "item_modifier",
|
||||
"minVersion": "1.17"
|
||||
},
|
||||
{
|
||||
"id": "advancement",
|
||||
"name": "Advancement",
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"dimension-type": "Dimension Type",
|
||||
"dimension": "Dimension",
|
||||
"download": "Download",
|
||||
"item-modifier": "Item Modifier",
|
||||
"language": "Language",
|
||||
"loot-table": "Loot Table",
|
||||
"predicate": "Predicate",
|
||||
|
||||
Reference in New Issue
Block a user