Skip encoding/decoding step when importing and downloading projects

This commit is contained in:
Misode
2024-11-26 01:15:24 +01:00
parent ef03fe6058
commit d370b4244a
3 changed files with 10 additions and 9 deletions
@@ -44,11 +44,13 @@ export function CustomizedPanel({ tab }: Props) {
const entries = Object.entries(pack).flatMap(([type, files]) => {
const prefix = `data/minecraft/${type}/`
return [...files.entries()].map(([name, data]) => {
return [prefix + name + '.json', stringifySource(JSON.stringify(data, null, 2), 'json')] as [string, string]
const text = stringifySource(JSON.stringify(data, null, 2), 'json')
return [prefix + name + '.json', new TextEncoder().encode(text)] as [string, Uint8Array]
})
})
const pack_format = config.versions.find(v => v.id === version)!.pack_format
entries.push(['pack.mcmeta', stringifySource(JSON.stringify({ pack: { pack_format, description: 'Customized world from misode.github.io' } }, null, 2), 'json')])
const packMcmetaText = stringifySource(JSON.stringify({ pack: { pack_format, description: 'Customized world from misode.github.io' } }, null, 2), 'json')
entries.push(['pack.mcmeta', new TextEncoder().encode(packMcmetaText)])
const url = await writeZip(entries)
download.current.setAttribute('href', url)
download.current.setAttribute('download', 'customized.zip')
@@ -47,8 +47,7 @@ export function ProjectPanel() {
if (!download.current || entries === undefined) return
const zipEntries = await Promise.all(entries.map(async e => {
const data = await client.fs.readFile(projectRoot + e)
const text = new TextDecoder().decode(data)
return [e, text] as [string, string]
return [e, data] as [string, Uint8Array]
}))
const url = await writeZip(zipEntries)
download.current.setAttribute('href', url)