mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-23 07:10:41 +00:00
Update spyglass to better support resource packs
This commit is contained in:
164
package-lock.json
generated
164
package-lock.json
generated
@@ -10,12 +10,12 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@giscus/react": "^2.2.3",
|
||||
"@spyglassmc/core": "^0.4.14",
|
||||
"@spyglassmc/java-edition": "^0.3.17",
|
||||
"@spyglassmc/json": "^0.3.16",
|
||||
"@spyglassmc/locales": "^0.3.8",
|
||||
"@spyglassmc/mcdoc": "^0.3.17",
|
||||
"@spyglassmc/nbt": "^0.3.17",
|
||||
"@spyglassmc/core": "^0.4.15",
|
||||
"@spyglassmc/java-edition": "^0.3.19",
|
||||
"@spyglassmc/json": "^0.3.17",
|
||||
"@spyglassmc/locales": "^0.3.9",
|
||||
"@spyglassmc/mcdoc": "^0.3.18",
|
||||
"@spyglassmc/nbt": "^0.3.18",
|
||||
"@zip.js/zip.js": "^2.4.5",
|
||||
"brace": "^0.11.1",
|
||||
"buffer": "^6.0.3",
|
||||
@@ -740,11 +740,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@spyglassmc/core": {
|
||||
"version": "0.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/core/-/core-0.4.14.tgz",
|
||||
"integrity": "sha512-5PIicwc5a8IubXdHCzm4FBjYmhsGH0xGXIk3A+XyQtPTriC6qVd0cdba5pjRPsmUkGA3S2qE2bj/J0qnNJ5dqA==",
|
||||
"version": "0.4.15",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/core/-/core-0.4.15.tgz",
|
||||
"integrity": "sha512-3nupUJN13rtOgch0NEzTg56oj/hf+jM966lmRNmAiMjb/hUbu8ohDjWMRDxx2Pvdekif/e6jRHNel6bvulA3cQ==",
|
||||
"dependencies": {
|
||||
"@spyglassmc/locales": "0.3.8",
|
||||
"@spyglassmc/locales": "0.3.9",
|
||||
"base64-arraybuffer": "^1.0.2",
|
||||
"binary-search": "^1.3.6",
|
||||
"chokidar": "^3.5.2",
|
||||
@@ -758,59 +758,59 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@spyglassmc/java-edition": {
|
||||
"version": "0.3.17",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/java-edition/-/java-edition-0.3.17.tgz",
|
||||
"integrity": "sha512-XO7bX/xowN21lwdtqP+6NsGAtfrdXWRcXoe8ByHUxHqtFXwp1ifSY7Lg76nlUm/FSOMM2QXUEh3QDj2Wr0wJyA==",
|
||||
"version": "0.3.19",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/java-edition/-/java-edition-0.3.19.tgz",
|
||||
"integrity": "sha512-CHFFGAveCDw9PtqrTbMC9N6rkCk8C/INOvUClnpoIex+++Epj3TOgZgU/uC6iKkFhb0PfGbBWnVqwkvVkf9Muw==",
|
||||
"dependencies": {
|
||||
"@spyglassmc/core": "0.4.14",
|
||||
"@spyglassmc/json": "0.3.16",
|
||||
"@spyglassmc/locales": "0.3.8",
|
||||
"@spyglassmc/mcdoc": "0.3.17",
|
||||
"@spyglassmc/mcfunction": "0.2.16",
|
||||
"@spyglassmc/nbt": "0.3.17"
|
||||
"@spyglassmc/core": "0.4.15",
|
||||
"@spyglassmc/json": "0.3.17",
|
||||
"@spyglassmc/locales": "0.3.9",
|
||||
"@spyglassmc/mcdoc": "0.3.18",
|
||||
"@spyglassmc/mcfunction": "0.2.17",
|
||||
"@spyglassmc/nbt": "0.3.18"
|
||||
}
|
||||
},
|
||||
"node_modules/@spyglassmc/json": {
|
||||
"version": "0.3.16",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/json/-/json-0.3.16.tgz",
|
||||
"integrity": "sha512-rBOeXWjPn1xsuaYECqkX+iclNf0EYqCq6jj8zb1+9IeaEeYSVOEUevKvYNqtk0++5UPBruXbBAOuJI08GRMQWQ==",
|
||||
"version": "0.3.17",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/json/-/json-0.3.17.tgz",
|
||||
"integrity": "sha512-F28eajPqmhTaPBGTHoE3aUvg/Q/VApcY0fF3b6jIY+3Lu2fF9idyDKe87A9Eqj3eKiNMcJBzeWf/ai8xICs3Vg==",
|
||||
"dependencies": {
|
||||
"@spyglassmc/core": "0.4.14",
|
||||
"@spyglassmc/locales": "0.3.8",
|
||||
"@spyglassmc/mcdoc": "0.3.17"
|
||||
"@spyglassmc/core": "0.4.15",
|
||||
"@spyglassmc/locales": "0.3.9",
|
||||
"@spyglassmc/mcdoc": "0.3.18"
|
||||
}
|
||||
},
|
||||
"node_modules/@spyglassmc/locales": {
|
||||
"version": "0.3.8",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/locales/-/locales-0.3.8.tgz",
|
||||
"integrity": "sha512-xkoNkiMbrCmQkdpIedfvr12irHYSL5i8hZiBeDrjPmxN3hXa5+iZrCTeHgO1iEYiuNbKIyxaSpVNAXqj5c4ShA=="
|
||||
"version": "0.3.9",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/locales/-/locales-0.3.9.tgz",
|
||||
"integrity": "sha512-91ncF6pe2d3LynVXf9MvKcbKCKOFJkTOcyTv1TS+sEHMyfPXCr5ryavOrRRkXCIuaA9S6eNkOa8na85f7gjhLA=="
|
||||
},
|
||||
"node_modules/@spyglassmc/mcdoc": {
|
||||
"version": "0.3.17",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/mcdoc/-/mcdoc-0.3.17.tgz",
|
||||
"integrity": "sha512-qX0pamJ6VNzq1F7Ea5lpUY/iQIu8C46bp0XzvQn4rHGKyrl6rty5wo7K9H8gmvuE6CXuq3ion+nP47Dpny8Fqg==",
|
||||
"version": "0.3.18",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/mcdoc/-/mcdoc-0.3.18.tgz",
|
||||
"integrity": "sha512-UkEZhe+bzamCm5KFenPXF+HvwJg4xvgwQFjZvxzv9Fpw8rY6dd9eaSkVPzJn6QkLKJG8bh+rs/MkM4pxnwpEKA==",
|
||||
"dependencies": {
|
||||
"@spyglassmc/core": "0.4.14",
|
||||
"@spyglassmc/locales": "0.3.8"
|
||||
"@spyglassmc/core": "0.4.15",
|
||||
"@spyglassmc/locales": "0.3.9"
|
||||
}
|
||||
},
|
||||
"node_modules/@spyglassmc/mcfunction": {
|
||||
"version": "0.2.16",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/mcfunction/-/mcfunction-0.2.16.tgz",
|
||||
"integrity": "sha512-Iwo8Akp/MuIsDkzzCumHfPNK9zgxsVw5sVEq1H6f3RWPJFrnhwx0bQRR80pqjiHhIuli/g2pxv195wsAU1PDHA==",
|
||||
"version": "0.2.17",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/mcfunction/-/mcfunction-0.2.17.tgz",
|
||||
"integrity": "sha512-8nyfeAXGxj7OhjSWWLMUaKTr8vLXxS+eECYzSE/sMCmNPYSm3anBEzR9gGHeU1NuSV01YmrBPIGFtj2AjXAEbA==",
|
||||
"dependencies": {
|
||||
"@spyglassmc/core": "0.4.14",
|
||||
"@spyglassmc/locales": "0.3.8"
|
||||
"@spyglassmc/core": "0.4.15",
|
||||
"@spyglassmc/locales": "0.3.9"
|
||||
}
|
||||
},
|
||||
"node_modules/@spyglassmc/nbt": {
|
||||
"version": "0.3.17",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/nbt/-/nbt-0.3.17.tgz",
|
||||
"integrity": "sha512-Jk8yjN5HFy/GF6fUjP0oJatz4oNJ1EE6NtfpctjeznQLNG51Xj/FDeJybnKYksM+V/nj7eth9mLyRjkMcTUcAw==",
|
||||
"version": "0.3.18",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/nbt/-/nbt-0.3.18.tgz",
|
||||
"integrity": "sha512-w/bNVACn4FVbfKQeEfuzC9eJXVdKVMKgGMS4PglEvBZ8lnPQROPstixgTUK1cR92htmeZDv30mjqpFlP8iP/Hg==",
|
||||
"dependencies": {
|
||||
"@spyglassmc/core": "0.4.14",
|
||||
"@spyglassmc/locales": "0.3.8",
|
||||
"@spyglassmc/mcdoc": "0.3.17"
|
||||
"@spyglassmc/core": "0.4.15",
|
||||
"@spyglassmc/locales": "0.3.9",
|
||||
"@spyglassmc/mcdoc": "0.3.18"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/diff": {
|
||||
@@ -5169,11 +5169,11 @@
|
||||
}
|
||||
},
|
||||
"@spyglassmc/core": {
|
||||
"version": "0.4.14",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/core/-/core-0.4.14.tgz",
|
||||
"integrity": "sha512-5PIicwc5a8IubXdHCzm4FBjYmhsGH0xGXIk3A+XyQtPTriC6qVd0cdba5pjRPsmUkGA3S2qE2bj/J0qnNJ5dqA==",
|
||||
"version": "0.4.15",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/core/-/core-0.4.15.tgz",
|
||||
"integrity": "sha512-3nupUJN13rtOgch0NEzTg56oj/hf+jM966lmRNmAiMjb/hUbu8ohDjWMRDxx2Pvdekif/e6jRHNel6bvulA3cQ==",
|
||||
"requires": {
|
||||
"@spyglassmc/locales": "0.3.8",
|
||||
"@spyglassmc/locales": "0.3.9",
|
||||
"base64-arraybuffer": "^1.0.2",
|
||||
"binary-search": "^1.3.6",
|
||||
"chokidar": "^3.5.2",
|
||||
@@ -5187,59 +5187,59 @@
|
||||
}
|
||||
},
|
||||
"@spyglassmc/java-edition": {
|
||||
"version": "0.3.17",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/java-edition/-/java-edition-0.3.17.tgz",
|
||||
"integrity": "sha512-XO7bX/xowN21lwdtqP+6NsGAtfrdXWRcXoe8ByHUxHqtFXwp1ifSY7Lg76nlUm/FSOMM2QXUEh3QDj2Wr0wJyA==",
|
||||
"version": "0.3.19",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/java-edition/-/java-edition-0.3.19.tgz",
|
||||
"integrity": "sha512-CHFFGAveCDw9PtqrTbMC9N6rkCk8C/INOvUClnpoIex+++Epj3TOgZgU/uC6iKkFhb0PfGbBWnVqwkvVkf9Muw==",
|
||||
"requires": {
|
||||
"@spyglassmc/core": "0.4.14",
|
||||
"@spyglassmc/json": "0.3.16",
|
||||
"@spyglassmc/locales": "0.3.8",
|
||||
"@spyglassmc/mcdoc": "0.3.17",
|
||||
"@spyglassmc/mcfunction": "0.2.16",
|
||||
"@spyglassmc/nbt": "0.3.17"
|
||||
"@spyglassmc/core": "0.4.15",
|
||||
"@spyglassmc/json": "0.3.17",
|
||||
"@spyglassmc/locales": "0.3.9",
|
||||
"@spyglassmc/mcdoc": "0.3.18",
|
||||
"@spyglassmc/mcfunction": "0.2.17",
|
||||
"@spyglassmc/nbt": "0.3.18"
|
||||
}
|
||||
},
|
||||
"@spyglassmc/json": {
|
||||
"version": "0.3.16",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/json/-/json-0.3.16.tgz",
|
||||
"integrity": "sha512-rBOeXWjPn1xsuaYECqkX+iclNf0EYqCq6jj8zb1+9IeaEeYSVOEUevKvYNqtk0++5UPBruXbBAOuJI08GRMQWQ==",
|
||||
"version": "0.3.17",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/json/-/json-0.3.17.tgz",
|
||||
"integrity": "sha512-F28eajPqmhTaPBGTHoE3aUvg/Q/VApcY0fF3b6jIY+3Lu2fF9idyDKe87A9Eqj3eKiNMcJBzeWf/ai8xICs3Vg==",
|
||||
"requires": {
|
||||
"@spyglassmc/core": "0.4.14",
|
||||
"@spyglassmc/locales": "0.3.8",
|
||||
"@spyglassmc/mcdoc": "0.3.17"
|
||||
"@spyglassmc/core": "0.4.15",
|
||||
"@spyglassmc/locales": "0.3.9",
|
||||
"@spyglassmc/mcdoc": "0.3.18"
|
||||
}
|
||||
},
|
||||
"@spyglassmc/locales": {
|
||||
"version": "0.3.8",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/locales/-/locales-0.3.8.tgz",
|
||||
"integrity": "sha512-xkoNkiMbrCmQkdpIedfvr12irHYSL5i8hZiBeDrjPmxN3hXa5+iZrCTeHgO1iEYiuNbKIyxaSpVNAXqj5c4ShA=="
|
||||
"version": "0.3.9",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/locales/-/locales-0.3.9.tgz",
|
||||
"integrity": "sha512-91ncF6pe2d3LynVXf9MvKcbKCKOFJkTOcyTv1TS+sEHMyfPXCr5ryavOrRRkXCIuaA9S6eNkOa8na85f7gjhLA=="
|
||||
},
|
||||
"@spyglassmc/mcdoc": {
|
||||
"version": "0.3.17",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/mcdoc/-/mcdoc-0.3.17.tgz",
|
||||
"integrity": "sha512-qX0pamJ6VNzq1F7Ea5lpUY/iQIu8C46bp0XzvQn4rHGKyrl6rty5wo7K9H8gmvuE6CXuq3ion+nP47Dpny8Fqg==",
|
||||
"version": "0.3.18",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/mcdoc/-/mcdoc-0.3.18.tgz",
|
||||
"integrity": "sha512-UkEZhe+bzamCm5KFenPXF+HvwJg4xvgwQFjZvxzv9Fpw8rY6dd9eaSkVPzJn6QkLKJG8bh+rs/MkM4pxnwpEKA==",
|
||||
"requires": {
|
||||
"@spyglassmc/core": "0.4.14",
|
||||
"@spyglassmc/locales": "0.3.8"
|
||||
"@spyglassmc/core": "0.4.15",
|
||||
"@spyglassmc/locales": "0.3.9"
|
||||
}
|
||||
},
|
||||
"@spyglassmc/mcfunction": {
|
||||
"version": "0.2.16",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/mcfunction/-/mcfunction-0.2.16.tgz",
|
||||
"integrity": "sha512-Iwo8Akp/MuIsDkzzCumHfPNK9zgxsVw5sVEq1H6f3RWPJFrnhwx0bQRR80pqjiHhIuli/g2pxv195wsAU1PDHA==",
|
||||
"version": "0.2.17",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/mcfunction/-/mcfunction-0.2.17.tgz",
|
||||
"integrity": "sha512-8nyfeAXGxj7OhjSWWLMUaKTr8vLXxS+eECYzSE/sMCmNPYSm3anBEzR9gGHeU1NuSV01YmrBPIGFtj2AjXAEbA==",
|
||||
"requires": {
|
||||
"@spyglassmc/core": "0.4.14",
|
||||
"@spyglassmc/locales": "0.3.8"
|
||||
"@spyglassmc/core": "0.4.15",
|
||||
"@spyglassmc/locales": "0.3.9"
|
||||
}
|
||||
},
|
||||
"@spyglassmc/nbt": {
|
||||
"version": "0.3.17",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/nbt/-/nbt-0.3.17.tgz",
|
||||
"integrity": "sha512-Jk8yjN5HFy/GF6fUjP0oJatz4oNJ1EE6NtfpctjeznQLNG51Xj/FDeJybnKYksM+V/nj7eth9mLyRjkMcTUcAw==",
|
||||
"version": "0.3.18",
|
||||
"resolved": "https://registry.npmjs.org/@spyglassmc/nbt/-/nbt-0.3.18.tgz",
|
||||
"integrity": "sha512-w/bNVACn4FVbfKQeEfuzC9eJXVdKVMKgGMS4PglEvBZ8lnPQROPstixgTUK1cR92htmeZDv30mjqpFlP8iP/Hg==",
|
||||
"requires": {
|
||||
"@spyglassmc/core": "0.4.14",
|
||||
"@spyglassmc/locales": "0.3.8",
|
||||
"@spyglassmc/mcdoc": "0.3.17"
|
||||
"@spyglassmc/core": "0.4.15",
|
||||
"@spyglassmc/locales": "0.3.9",
|
||||
"@spyglassmc/mcdoc": "0.3.18"
|
||||
}
|
||||
},
|
||||
"@types/diff": {
|
||||
|
||||
12
package.json
12
package.json
@@ -16,12 +16,12 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@giscus/react": "^2.2.3",
|
||||
"@spyglassmc/core": "^0.4.14",
|
||||
"@spyglassmc/java-edition": "^0.3.17",
|
||||
"@spyglassmc/json": "^0.3.16",
|
||||
"@spyglassmc/locales": "^0.3.8",
|
||||
"@spyglassmc/mcdoc": "^0.3.17",
|
||||
"@spyglassmc/nbt": "^0.3.17",
|
||||
"@spyglassmc/core": "^0.4.15",
|
||||
"@spyglassmc/java-edition": "^0.3.19",
|
||||
"@spyglassmc/json": "^0.3.17",
|
||||
"@spyglassmc/locales": "^0.3.9",
|
||||
"@spyglassmc/mcdoc": "^0.3.18",
|
||||
"@spyglassmc/nbt": "^0.3.18",
|
||||
"@zip.js/zip.js": "^2.4.5",
|
||||
"brace": "^0.11.1",
|
||||
"buffer": "^6.0.3",
|
||||
|
||||
@@ -38,7 +38,8 @@ export function FileCreation({ docAndNode, gen, method }: Props) {
|
||||
return
|
||||
}
|
||||
const id = Identifier.parse(fileId.includes(':') || project.namespace === undefined ? fileId : `${project.namespace}:${fileId}`)
|
||||
const uri = `${getProjectRoot(project)}data/${id.namespace}/${genPath(gen, version)}/${id.path}.json`
|
||||
const pack = gen.tags?.includes('assets') ? 'assets' : 'data'
|
||||
const uri = `${getProjectRoot(project)}${pack}/${id.namespace}/${genPath(gen, version)}/${id.path}.json`
|
||||
Analytics.saveProjectFile(method)
|
||||
const text = docAndNode.doc.getText()
|
||||
client.fs.writeFile(uri, text).then(() => {
|
||||
|
||||
@@ -72,7 +72,7 @@ export function ProjectPanel() {
|
||||
const res = service?.dissectUri(uri)
|
||||
if (res?.ok) {
|
||||
// This is pretty hacky, improve this in the future when spyglass has a "constructUri" function
|
||||
const oldSuffix = `/${res.namespace}/${res.path}/${res.identifier}${res.ext}`
|
||||
const oldSuffix = `${res.pack}/${res.namespace}/${res.path}/${res.identifier}${res.ext}`
|
||||
if (!uri.endsWith(oldSuffix)) {
|
||||
console.warn(`Expected ${uri} to end with ${oldSuffix}`)
|
||||
return
|
||||
@@ -80,7 +80,7 @@ export function ProjectPanel() {
|
||||
const onRename = (newId: string) => {
|
||||
const prefix = uri.substring(0, uri.length - oldSuffix.length)
|
||||
const { namespace, path } = Identifier.parse(newId)
|
||||
const newUri = prefix + `/${namespace}/${res.path}/${path}${res.ext}`
|
||||
const newUri = prefix + `${res.pack}/${namespace}/${res.path}/${path}${res.ext}`
|
||||
service?.renameFile(uri, newUri).then(() => {
|
||||
setProjectUri(newUri)
|
||||
})
|
||||
|
||||
@@ -10,7 +10,7 @@ import * as zip from '@zip.js/zip.js'
|
||||
import { TextDocument } from 'vscode-languageserver-textdocument'
|
||||
import type { ConfigGenerator } from '../Config.js'
|
||||
import siteConfig from '../Config.js'
|
||||
import { computeIfAbsent, genPath, message } from '../Utils.js'
|
||||
import { computeIfAbsent, genPath } from '../Utils.js'
|
||||
import type { VersionMeta } from './DataFetcher.js'
|
||||
import { fetchBlockStates, fetchRegistries, fetchVanillaMcdoc, fetchVersions, getVersionChecksum } from './DataFetcher.js'
|
||||
import { IndexedDbFileSystem, MixedFileSystem } from './FileSystem.js'
|
||||
@@ -240,7 +240,8 @@ export class SpyglassService {
|
||||
if (gen.id === 'pack_mcmeta') {
|
||||
return `${UNSAVED_URI}pack.mcmeta`
|
||||
}
|
||||
return `${UNSAVED_URI}data/draft/${genPath(gen, this.version)}/draft.json`
|
||||
const pack = gen.tags?.includes('assets') ? 'assets' : 'data'
|
||||
return `${UNSAVED_URI}${pack}/draft/${genPath(gen, this.version)}/draft.json`
|
||||
}
|
||||
|
||||
public watchFile(uri: string, handler: (docAndNode: core.DocAndNode) => void) {
|
||||
@@ -291,22 +292,6 @@ export class SpyglassService {
|
||||
world: {
|
||||
category: 'world',
|
||||
},
|
||||
// TODO: move these to the assets folder
|
||||
atlases: {
|
||||
category: 'atlas',
|
||||
},
|
||||
blockstates: {
|
||||
category: 'block_definition',
|
||||
},
|
||||
font: {
|
||||
category: 'font',
|
||||
},
|
||||
items: {
|
||||
category: 'item_definition',
|
||||
},
|
||||
models: {
|
||||
category: 'model',
|
||||
},
|
||||
// Partner resources
|
||||
...Object.fromEntries(siteConfig.generators.filter(gen => gen.dependency).map(gen =>
|
||||
[gen.path ?? gen.id, {
|
||||
@@ -397,55 +382,7 @@ const initialize: core.ProjectInitializer = async (ctx) => {
|
||||
|
||||
meta.registerSymbolRegistrar('mcmeta-summary', {
|
||||
checksum: versionChecksum,
|
||||
registrar: je.dependency.symbolRegistrar(summary),
|
||||
})
|
||||
|
||||
meta.registerSymbolRegistrar('mcdoc-block-states', {
|
||||
checksum: versionChecksum,
|
||||
registrar: (symbols) => {
|
||||
const uri = 'mcmeta://summary/block_states.json'
|
||||
symbols.query(uri, 'mcdoc/dispatcher', 'mcdoc:block_states').enter({
|
||||
usage: { type: 'declaration' },
|
||||
}).onEach(Object.entries(summary.blocks), ([id, [properties]], blockQuery) => {
|
||||
const data: mcdoc.binder.TypeDefSymbolData = { typeDef: {
|
||||
kind: 'struct',
|
||||
fields: Object.entries(properties).map(([propKey, propValues]) => ({
|
||||
kind: 'pair',
|
||||
key: propKey,
|
||||
optional: true,
|
||||
type: {
|
||||
kind: 'union',
|
||||
members: propValues.map(value => ({
|
||||
kind: 'literal', value: { kind: 'string', value },
|
||||
})),
|
||||
},
|
||||
})),
|
||||
} }
|
||||
blockQuery.member(id, (stateQuery) => {
|
||||
stateQuery.enter({
|
||||
data: { data },
|
||||
usage: { type: 'declaration' },
|
||||
})
|
||||
})
|
||||
})
|
||||
symbols.query(uri, 'mcdoc/dispatcher', 'mcdoc:block_state_keys').enter({
|
||||
usage: { type: 'declaration' },
|
||||
}).onEach(Object.entries(summary.blocks), ([id, [properties]], blockQuery) => {
|
||||
const data: mcdoc.binder.TypeDefSymbolData = { typeDef: {
|
||||
kind: 'union',
|
||||
members: Object.keys(properties).map(propKey => ({
|
||||
kind: 'literal',
|
||||
value: { kind: 'string', value: propKey },
|
||||
})),
|
||||
} }
|
||||
blockQuery.member(id, (stateQuery) => {
|
||||
stateQuery.enter({
|
||||
data: { data },
|
||||
usage: { type: 'declaration' },
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
registrar: je.dependency.symbolRegistrar(summary, release),
|
||||
})
|
||||
|
||||
registerAttributes(meta, release, versions)
|
||||
@@ -455,17 +392,6 @@ const initialize: core.ProjectInitializer = async (ctx) => {
|
||||
je.mcf.initialize(ctx, summary.commands, release)
|
||||
nbt.initialize(ctx)
|
||||
|
||||
// Until spyglass registers these correctly
|
||||
meta.registerFormatter<json.JsonFileNode>('json:file', (node, ctx) => {
|
||||
return ctx.meta.getFormatter(node.children[0].type)(node.children[0], ctx)
|
||||
})
|
||||
meta.registerFormatter<json.JsonStringNode>('json:string', (node) => {
|
||||
return JSON.stringify(node.value)
|
||||
})
|
||||
meta.registerFormatter<core.ErrorNode>('error', () => {
|
||||
return ''
|
||||
})
|
||||
|
||||
return { loadedVersion: release }
|
||||
}
|
||||
|
||||
@@ -527,21 +453,4 @@ function registerAttributes(meta: core.MetaRegistry, release: ReleaseVersion, ve
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
// Until spyglass implements this attribute itself
|
||||
mcdoc.runtime.registerAttribute(meta, 'regex_pattern', () => undefined, {
|
||||
checker: (_, typeDef) => {
|
||||
if (typeDef.kind !== 'literal' || typeDef.value.kind !== 'string') {
|
||||
return undefined
|
||||
}
|
||||
const pattern = typeDef.value.value
|
||||
return (node, ctx) => {
|
||||
try {
|
||||
RegExp(pattern)
|
||||
} catch (e) {
|
||||
ctx.err.report(message(e), node, 2)
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user