mca-json 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/mca-chunks.js +1 -1
- package/dist/bin/mca-chunks.js.map +1 -1
- package/dist/bin/mca-find-signs.js +3 -3
- package/dist/bin/mca-find-signs.js.map +1 -1
- package/dist/bin/mca-json.js +1 -1
- package/dist/bin/mca-json.js.map +1 -1
- package/dist/bin/mca-remove-chunks.js +1 -1
- package/dist/bin/mca-remove-chunks.js.map +1 -1
- package/dist/bin/nbt-get-player-location.js +1 -1
- package/dist/bin/nbt-get-player-location.js.map +1 -1
- package/dist/bin/nbt-json.js +1 -1
- package/dist/bin/nbt-json.js.map +1 -1
- package/dist/block/banner.d.ts +1 -1
- package/dist/block/banner.d.ts.map +1 -1
- package/dist/block/banner.js +2 -2
- package/dist/block/banner.js.map +1 -1
- package/dist/block/barrel.d.ts +6 -6
- package/dist/block/barrel.d.ts.map +1 -1
- package/dist/block/barrel.js +4 -4
- package/dist/block/barrel.js.map +1 -1
- package/dist/block/beacon.d.ts +6 -6
- package/dist/block/beacon.d.ts.map +1 -1
- package/dist/block/beacon.js +4 -4
- package/dist/block/beacon.js.map +1 -1
- package/dist/block/bed.d.ts +1 -1
- package/dist/block/bed.d.ts.map +1 -1
- package/dist/block/bed.js +1 -1
- package/dist/block/bed.js.map +1 -1
- package/dist/block/beehive.d.ts +4 -4
- package/dist/block/beehive.d.ts.map +1 -1
- package/dist/block/beehive.js +1 -1
- package/dist/block/beehive.js.map +1 -1
- package/dist/block/bell.d.ts +1 -1
- package/dist/block/bell.d.ts.map +1 -1
- package/dist/block/bell.js +1 -1
- package/dist/block/bell.js.map +1 -1
- package/dist/block/block.d.ts +10 -10
- package/dist/block/block.d.ts.map +1 -1
- package/dist/block/block.js +8 -8
- package/dist/block/block.js.map +1 -1
- package/dist/block/generic.d.ts +2 -2
- package/dist/block/generic.d.ts.map +1 -1
- package/dist/block/generic.js.map +1 -1
- package/dist/block/has-entity-data.d.ts +3 -3
- package/dist/block/has-entity-data.d.ts.map +1 -1
- package/dist/block/has-entity-data.js +1 -1
- package/dist/block/has-entity-data.js.map +1 -1
- package/dist/block/mixins/custom-name.d.ts +1 -1
- package/dist/block/mixins/custom-name.d.ts.map +1 -1
- package/dist/block/mixins/custom-name.js +1 -1
- package/dist/block/mixins/custom-name.js.map +1 -1
- package/dist/block/mixins/lock.d.ts +1 -1
- package/dist/block/mixins/lock.d.ts.map +1 -1
- package/dist/block/mixins/lock.js +1 -1
- package/dist/block/mixins/lock.js.map +1 -1
- package/dist/block/sign.d.ts +1 -1
- package/dist/block/sign.d.ts.map +1 -1
- package/dist/block/sign.js +1 -1
- package/dist/block/sign.js.map +1 -1
- package/dist/index.d.ts +38 -38
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -38
- package/dist/index.js.map +1 -1
- package/dist/lib/anvil.d.ts +3 -3
- package/dist/lib/anvil.d.ts.map +1 -1
- package/dist/lib/anvil.js +3 -3
- package/dist/lib/anvil.js.map +1 -1
- package/dist/lib/bit-data.d.ts +1 -1
- package/dist/lib/bit-data.d.ts.map +1 -1
- package/dist/lib/bit-data.js.map +1 -1
- package/dist/lib/block-data.d.ts +4 -4
- package/dist/lib/block-data.d.ts.map +1 -1
- package/dist/lib/block-data.js +1 -1
- package/dist/lib/block-data.js.map +1 -1
- package/dist/lib/chunk.d.ts +8 -6
- package/dist/lib/chunk.d.ts.map +1 -1
- package/dist/lib/chunk.js +13 -11
- package/dist/lib/chunk.js.map +1 -1
- package/dist/nbt/nbt-base.d.ts +2 -2
- package/dist/nbt/nbt-base.d.ts.map +1 -1
- package/dist/nbt/nbt-base.js.map +1 -1
- package/dist/nbt/nbt-byte-array.d.ts +3 -3
- package/dist/nbt/nbt-byte-array.d.ts.map +1 -1
- package/dist/nbt/nbt-byte-array.js +2 -2
- package/dist/nbt/nbt-byte-array.js.map +1 -1
- package/dist/nbt/nbt-byte.d.ts +3 -3
- package/dist/nbt/nbt-byte.d.ts.map +1 -1
- package/dist/nbt/nbt-byte.js +2 -2
- package/dist/nbt/nbt-byte.js.map +1 -1
- package/dist/nbt/nbt-compound.d.ts +3 -3
- package/dist/nbt/nbt-compound.d.ts.map +1 -1
- package/dist/nbt/nbt-compound.js +3 -3
- package/dist/nbt/nbt-compound.js.map +1 -1
- package/dist/nbt/nbt-double.d.ts +3 -3
- package/dist/nbt/nbt-double.d.ts.map +1 -1
- package/dist/nbt/nbt-double.js +2 -2
- package/dist/nbt/nbt-double.js.map +1 -1
- package/dist/nbt/nbt-end.d.ts +2 -2
- package/dist/nbt/nbt-end.d.ts.map +1 -1
- package/dist/nbt/nbt-end.js +2 -2
- package/dist/nbt/nbt-end.js.map +1 -1
- package/dist/nbt/nbt-float.d.ts +3 -3
- package/dist/nbt/nbt-float.d.ts.map +1 -1
- package/dist/nbt/nbt-float.js +2 -2
- package/dist/nbt/nbt-float.js.map +1 -1
- package/dist/nbt/nbt-int-array.d.ts +3 -3
- package/dist/nbt/nbt-int-array.d.ts.map +1 -1
- package/dist/nbt/nbt-int-array.js +2 -2
- package/dist/nbt/nbt-int-array.js.map +1 -1
- package/dist/nbt/nbt-int.d.ts +3 -3
- package/dist/nbt/nbt-int.d.ts.map +1 -1
- package/dist/nbt/nbt-int.js +2 -2
- package/dist/nbt/nbt-int.js.map +1 -1
- package/dist/nbt/nbt-list.d.ts +3 -3
- package/dist/nbt/nbt-list.d.ts.map +1 -1
- package/dist/nbt/nbt-list.js +3 -3
- package/dist/nbt/nbt-list.js.map +1 -1
- package/dist/nbt/nbt-long-array.d.ts +3 -3
- package/dist/nbt/nbt-long-array.d.ts.map +1 -1
- package/dist/nbt/nbt-long-array.js +2 -2
- package/dist/nbt/nbt-long-array.js.map +1 -1
- package/dist/nbt/nbt-long.d.ts +3 -3
- package/dist/nbt/nbt-long.d.ts.map +1 -1
- package/dist/nbt/nbt-long.js +2 -2
- package/dist/nbt/nbt-long.js.map +1 -1
- package/dist/nbt/nbt-short.d.ts +3 -3
- package/dist/nbt/nbt-short.d.ts.map +1 -1
- package/dist/nbt/nbt-short.js +2 -2
- package/dist/nbt/nbt-short.js.map +1 -1
- package/dist/nbt/nbt-string.d.ts +3 -3
- package/dist/nbt/nbt-string.d.ts.map +1 -1
- package/dist/nbt/nbt-string.js +2 -2
- package/dist/nbt/nbt-string.js.map +1 -1
- package/dist/nbt/nbt.d.ts +2 -2
- package/dist/nbt/nbt.d.ts.map +1 -1
- package/dist/nbt/nbt.js +17 -17
- package/dist/nbt/nbt.js.map +1 -1
- package/dist/nbt/snbt-parse.d.ts +1 -1
- package/dist/nbt/snbt-parse.d.ts.map +1 -1
- package/dist/nbt/snbt-parse.js +1 -1
- package/dist/nbt/snbt-parse.js.map +1 -1
- package/dist/nbt/snbt-to-nbt.d.ts +2 -2
- package/dist/nbt/snbt-to-nbt.d.ts.map +1 -1
- package/dist/nbt/snbt-to-nbt.js +12 -12
- package/dist/nbt/snbt-to-nbt.js.map +1 -1
- package/package.json +3 -3
- package/src/bin/mca-chunks.ts +1 -1
- package/src/bin/mca-find-signs.ts +4 -4
- package/src/bin/mca-json.ts +1 -1
- package/src/bin/mca-remove-chunks.ts +1 -1
- package/src/bin/nbt-get-player-location.ts +1 -1
- package/src/bin/nbt-json.ts +1 -1
- package/src/block/banner.ts +4 -4
- package/src/block/barrel.ts +8 -8
- package/src/block/beacon.ts +5 -5
- package/src/block/bed.ts +1 -1
- package/src/block/beehive.ts +5 -5
- package/src/block/bell.ts +1 -1
- package/src/block/block.ts +10 -10
- package/src/block/generic.ts +2 -2
- package/src/block/has-entity-data.ts +3 -3
- package/src/block/mixins/custom-name.ts +2 -2
- package/src/block/mixins/lock.ts +2 -2
- package/src/block/sign.ts +4 -4
- package/src/index.ts +38 -38
- package/src/lib/anvil.ts +4 -4
- package/src/lib/bit-data.ts +1 -1
- package/src/lib/block-data.ts +6 -6
- package/src/lib/chunk.ts +24 -22
- package/src/nbt/nbt-base.ts +2 -2
- package/src/nbt/nbt-byte-array.ts +3 -3
- package/src/nbt/nbt-byte.ts +3 -3
- package/src/nbt/nbt-compound.ts +4 -4
- package/src/nbt/nbt-double.ts +3 -3
- package/src/nbt/nbt-end.ts +2 -2
- package/src/nbt/nbt-float.ts +3 -3
- package/src/nbt/nbt-int-array.ts +3 -3
- package/src/nbt/nbt-int.ts +3 -3
- package/src/nbt/nbt-list.ts +4 -4
- package/src/nbt/nbt-long-array.ts +3 -3
- package/src/nbt/nbt-long.ts +3 -3
- package/src/nbt/nbt-short.ts +3 -3
- package/src/nbt/nbt-string.ts +3 -3
- package/src/nbt/nbt.ts +18 -18
- package/src/nbt/snbt-parse.ts +1 -1
- package/src/nbt/snbt-to-nbt.ts +14 -14
- package/tsconfig.json +2 -2
package/dist/bin/mca-chunks.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import getStdin from 'get-stdin';
|
|
3
3
|
import neodoc from 'neodoc';
|
|
4
|
-
import { Anvil } from '../lib/anvil';
|
|
4
|
+
import { Anvil } from '../lib/anvil.js';
|
|
5
5
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
6
6
|
async function readInput(filename) {
|
|
7
7
|
if (!filename || filename === '-') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mca-chunks.js","sourceRoot":"","sources":["../../src/bin/mca-chunks.ts"],"names":[],"mappings":";AAEA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"mca-chunks.js","sourceRoot":"","sources":["../../src/bin/mca-chunks.ts"],"names":[],"mappings":";AAEA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,KAAK,UAAU,SAAS,CAAC,QAA4B;IACjD,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,IAAI,GAGN,MAAM,CAAC,GAAG,CACd;;;;;;;;;CASC,EACG;IACI,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,YAAY,EAAE,IAAI;CACrB,CACJ,CAAC;AAEF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACrB,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;IAClB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,MAAqB,CAAC,CAAC;IACxE,IAAI,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC;IAExC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC;KACD,IAAI,CAAC,CAAC,MAAc,EAAE,EAAE;IACrB,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\n\nimport getStdin from 'get-stdin';\nimport neodoc from 'neodoc';\nimport { Anvil } from '../lib/anvil.js';\nimport { readFile, writeFile } from 'node:fs/promises';\n\nasync function readInput(filename: string | undefined) {\n if (!filename || filename === '-') {\n return await getStdin.buffer();\n }\n\n return readFile(filename);\n}\n\nconst args: {\n '<input>'?: string;\n '<output>'?: string;\n} = neodoc.run(\n`Usage: mca-chunks [OPTIONS] [<input> [<output>]]\n\nLists the chunk coordinates in a Minecraft MCA file, one set of coordinates per\nline. Each line will have \"X,Z\", such as \"-23,14\". Both input and output are\noptional. If input is not provided, this reads from stdin. If output is not\nprovided, this writes to stdout.\n\nOptions:\n -h, --help Show this message.\n`,\n {\n argv: [...process.argv].slice(2),\n laxPlacement: true,\n }\n);\n\nreadInput(args['<input>'])\n .then((inputBuffer) => {\n if (inputBuffer.length === 0) {\n console.error('No input provided. Use --help for usage.');\n process.exit(1);\n }\n\n const anvilParser = Anvil.fromBuffer(inputBuffer.buffer as ArrayBuffer);\n let chunks = anvilParser.getAllChunks();\n\n return chunks.map((chunk) => chunk.chunkKey()).join('\\n');\n })\n .then((output: string) => {\n if (args['<output>']) {\n writeFile(args['<output>'], output);\n } else {\n console.log(output);\n }\n });\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import debug from 'debug';
|
|
3
3
|
import neodoc from 'neodoc';
|
|
4
|
-
import { Anvil } from '../lib/anvil';
|
|
5
|
-
import { Sign } from '../block/sign';
|
|
4
|
+
import { Anvil } from '../lib/anvil.js';
|
|
5
|
+
import { Sign } from '../block/sign.js';
|
|
6
6
|
import { readFile } from 'node:fs/promises';
|
|
7
7
|
const debugLog = debug('mca-find-signs');
|
|
8
8
|
const args = neodoc.run(`Usage: mca-find-signs [OPTIONS] MCA_FILE...
|
|
@@ -93,7 +93,7 @@ function processChunk(chunk) {
|
|
|
93
93
|
const foundSigns = [];
|
|
94
94
|
for (const blockName of blockNames) {
|
|
95
95
|
if (blockName.match(/^minecraft:.+_sign$/)) {
|
|
96
|
-
debugLog(`
|
|
96
|
+
debugLog(`Chunk lists sign name: ${blockName}`);
|
|
97
97
|
const listOfBlockCoordinates = chunk.findBlocksByName(blockName);
|
|
98
98
|
if (listOfBlockCoordinates.length === 0) {
|
|
99
99
|
debugLog(`Possible corruption - no blocks found for sign: ${blockName}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mca-find-signs.js","sourceRoot":"","sources":["../../src/bin/mca-find-signs.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport debug from 'debug';\nimport neodoc from 'neodoc';\nimport { Anvil } from '../lib/anvil';\nimport { Chunk } from '../lib/chunk';\nimport { Sign } from '../block/sign';\nimport { readFile } from 'node:fs/promises';\n\ninterface SignInfo {\n chunkX: number;\n chunkZ: number;\n x: number;\n y: number;\n z: number;\n front: string[];\n back: string[] | null;\n}\n\ninterface Args {\n '--blank'?: boolean;\n '--generated'?: boolean;\n '--first'?: boolean;\n '--user'?: boolean;\n '--verbose'?: boolean;\n MCA_FILE?: string[];\n}\n\nconst debugLog = debug('mca-find-signs');\nconst args: Args = neodoc.run(\n `Usage: mca-find-signs [OPTIONS] MCA_FILE...\n\nExtracts sign coordinates from MCA files. This is designed to find different\ncategories of signs.\n\n* Blank signs are blank on both sides.\n* Generated signs can be blank or have any non-numeric and non-alphabetic\n characters. This is so igloos with \"<----\" and \"---->\" are included.\n* User-created signs must have at least a number or a letter on the front or\n the back. There's no way to tell from the block data that a user placed a\n sign, but this is a good heuristic.\n\nThe default output is a JSON array that shows the following information:\n\n[\n {\n \"chunkX\": 0,\n \"chunkZ\": 3,\n \"x\": 12,\n \"y\": 34,\n \"z\": 56,\n \"front\": [\"Line 1\", \"Line 2\", \"Line 3\", \"Line 4\"],\n \"back\": [\"Line 1\", \"Line 2\", \"Line 3\", \"Line 4\"]\n },\n ...\n]\n\nOptions:\n --blank Only show blank signs. Conflicts with --generated and --user.\n --generated Only show generated signs. Conflicts with --blank and --user.\n --user Only show user-created signs. Conflicts with --blank and --generated.\n --first Stop scanning a chunk after the first sign is found.\n -h, --help Show this message.\n -v, --verbose Show more information during processing.\n`,\n {\n argv: [...process.argv].slice(2),\n laxPlacement: true,\n }\n);\n\nif (!args.MCA_FILE?.length) {\n console.error('No files specified.');\n process.exit(1);\n}\n\nif (\n (args['--blank'] ? 1 : 0) +\n (args['--generated'] ? 1 : 0) +\n (args['--user'] ? 1 : 0) >\n 1\n) {\n console.error(\n 'Conflicting options specified. Please choose only one of --blank, --generated, or --user.'\n );\n process.exit(1);\n}\n\nconst signs: SignInfo[] = [];\n\nfor (const file of args.MCA_FILE) {\n try {\n const moreSigns = await processFile(file);\n signs.push(...moreSigns);\n } catch (e) {\n console.error(`Error processing file ${file}: ${e}`);\n\n process.exit(1);\n }\n}\n\nconsole.log(JSON.stringify(signs, null, 4));\n\nasync function processFile(filename: string): Promise<SignInfo[]> {\n debugLog(`Reading file: ${filename}`);\n\n if (args['--verbose']) {\n console.log(`Reading file: ${filename}`);\n }\n\n const contents = await readFile(filename);\n const anvil = Anvil.fromBuffer(contents.buffer);\n const chunks = anvil.getAllChunks();\n const allSignsFound: SignInfo[] = [];\n\n for (const chunk of chunks) {\n const chunkKey = chunk.chunkKey() || '';\n const signs = processChunk(chunk);\n\n if (signs.length > 0) {\n debugLog(`Found ${signs.length} signs in chunk ${chunkKey}.`);\n\n if (args['--verbose']) {\n console.log(\n `Found ${signs.length} signs in chunk ${chunkKey}.`\n );\n }\n\n allSignsFound.push(...signs);\n }\n }\n\n return allSignsFound;\n}\n\nfunction processChunk(chunk: Chunk): SignInfo[] {\n const blockNames = chunk.uniqueBlockNames();\n const foundSigns: SignInfo[] = [];\n\n for (const blockName of blockNames) {\n if (blockName.match(/^minecraft:.+_sign$/)) {\n debugLog(`Found sign: ${blockName}`);\n\n const listOfBlockCoordinates = chunk.findBlocksByName(blockName);\n\n if (listOfBlockCoordinates.length === 0) {\n debugLog(\n `Possible corruption - no blocks found for sign: ${blockName}`\n );\n }\n\n for (const coords of listOfBlockCoordinates) {\n debugLog(`Checking block at coordinates: ${coords}`);\n const block = chunk.getBlock(coords);\n\n if (!(block instanceof Sign)) {\n throw new Error(\n `Block is supposed to be a sign: ${block.name}`\n );\n }\n\n const front = block.frontText();\n const back = block.backText();\n const text = [...front, ...(back ?? [])].join('');\n debugLog(`Front: ${JSON.stringify(front)}`);\n debugLog(`Back: ${JSON.stringify(back)}`);\n\n if (args['--blank'] && text.length !== 0) {\n debugLog(`Skipping non-blank sign.`);\n continue;\n }\n\n if (args['--generated'] && !text.match(/^[^a-z0-9]*$/i)) {\n debugLog(`Skipping user-created sign.`);\n }\n\n if (args['--user'] && !text.match(/[a-z0-9]/i)) {\n debugLog(`Skipping a possible generated sign.`);\n continue;\n }\n\n debugLog(`Found a matching sign.`);\n\n if (args['--verbose']) {\n console.log(\n `Found a matching sign: ${JSON.stringify(front)} and ${JSON.stringify(back)}`\n );\n }\n\n const chunkCoordinates = chunk.chunkCoordinates();\n\n if (!chunkCoordinates) {\n throw new Error('Chunk coordinates not found.');\n }\n\n foundSigns.push({\n chunkX: chunkCoordinates[0],\n chunkZ: chunkCoordinates[1],\n x: coords[0],\n y: coords[1],\n z: coords[2],\n front,\n back: back ?? null,\n });\n\n if (args['--first']) {\n return foundSigns;\n }\n }\n }\n }\n\n return foundSigns;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mca-find-signs.js","sourceRoot":"","sources":["../../src/bin/mca-find-signs.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport debug from 'debug';\nimport neodoc from 'neodoc';\nimport { Anvil } from '../lib/anvil.js';\nimport { Chunk } from '../lib/chunk.js';\nimport { Sign } from '../block/sign.js';\nimport { readFile } from 'node:fs/promises';\n\ninterface SignInfo {\n chunkX: number;\n chunkZ: number;\n x: number;\n y: number;\n z: number;\n front: string[];\n back: string[] | null;\n}\n\ninterface Args {\n '--blank'?: boolean;\n '--generated'?: boolean;\n '--first'?: boolean;\n '--user'?: boolean;\n '--verbose'?: boolean;\n MCA_FILE?: string[];\n}\n\nconst debugLog = debug('mca-find-signs');\nconst args: Args = neodoc.run(\n `Usage: mca-find-signs [OPTIONS] MCA_FILE...\n\nExtracts sign coordinates from MCA files. This is designed to find different\ncategories of signs.\n\n* Blank signs are blank on both sides.\n* Generated signs can be blank or have any non-numeric and non-alphabetic\n characters. This is so igloos with \"<----\" and \"---->\" are included.\n* User-created signs must have at least a number or a letter on the front or\n the back. There's no way to tell from the block data that a user placed a\n sign, but this is a good heuristic.\n\nThe default output is a JSON array that shows the following information:\n\n[\n {\n \"chunkX\": 0,\n \"chunkZ\": 3,\n \"x\": 12,\n \"y\": 34,\n \"z\": 56,\n \"front\": [\"Line 1\", \"Line 2\", \"Line 3\", \"Line 4\"],\n \"back\": [\"Line 1\", \"Line 2\", \"Line 3\", \"Line 4\"]\n },\n ...\n]\n\nOptions:\n --blank Only show blank signs. Conflicts with --generated and --user.\n --generated Only show generated signs. Conflicts with --blank and --user.\n --user Only show user-created signs. Conflicts with --blank and --generated.\n --first Stop scanning a chunk after the first sign is found.\n -h, --help Show this message.\n -v, --verbose Show more information during processing.\n`,\n {\n argv: [...process.argv].slice(2),\n laxPlacement: true,\n }\n);\n\nif (!args.MCA_FILE?.length) {\n console.error('No files specified.');\n process.exit(1);\n}\n\nif (\n (args['--blank'] ? 1 : 0) +\n (args['--generated'] ? 1 : 0) +\n (args['--user'] ? 1 : 0) >\n 1\n) {\n console.error(\n 'Conflicting options specified. Please choose only one of --blank, --generated, or --user.'\n );\n process.exit(1);\n}\n\nconst signs: SignInfo[] = [];\n\nfor (const file of args.MCA_FILE) {\n try {\n const moreSigns = await processFile(file);\n signs.push(...moreSigns);\n } catch (e) {\n console.error(`Error processing file ${file}: ${e}`);\n\n process.exit(1);\n }\n}\n\nconsole.log(JSON.stringify(signs, null, 4));\n\nasync function processFile(filename: string): Promise<SignInfo[]> {\n debugLog(`Reading file: ${filename}`);\n\n if (args['--verbose']) {\n console.log(`Reading file: ${filename}`);\n }\n\n const contents = await readFile(filename);\n const anvil = Anvil.fromBuffer(contents.buffer);\n const chunks = anvil.getAllChunks();\n const allSignsFound: SignInfo[] = [];\n\n for (const chunk of chunks) {\n const chunkKey = chunk.chunkKey() || '';\n const signs = processChunk(chunk);\n\n if (signs.length > 0) {\n debugLog(`Found ${signs.length} signs in chunk ${chunkKey}.`);\n\n if (args['--verbose']) {\n console.log(\n `Found ${signs.length} signs in chunk ${chunkKey}.`\n );\n }\n\n allSignsFound.push(...signs);\n }\n }\n\n return allSignsFound;\n}\n\nfunction processChunk(chunk: Chunk): SignInfo[] {\n const blockNames = chunk.uniqueBlockNames();\n const foundSigns: SignInfo[] = [];\n\n for (const blockName of blockNames) {\n if (blockName.match(/^minecraft:.+_sign$/)) {\n debugLog(`Chunk lists sign name: ${blockName}`);\n\n const listOfBlockCoordinates = chunk.findBlocksByName(blockName);\n\n if (listOfBlockCoordinates.length === 0) {\n debugLog(\n `Possible corruption - no blocks found for sign: ${blockName}`\n );\n }\n\n for (const coords of listOfBlockCoordinates) {\n debugLog(`Checking block at coordinates: ${coords}`);\n const block = chunk.getBlock(coords);\n\n if (!(block instanceof Sign)) {\n throw new Error(\n `Block is supposed to be a sign: ${block.name}`\n );\n }\n\n const front = block.frontText();\n const back = block.backText();\n const text = [...front, ...(back ?? [])].join('');\n debugLog(`Front: ${JSON.stringify(front)}`);\n debugLog(`Back: ${JSON.stringify(back)}`);\n\n if (args['--blank'] && text.length !== 0) {\n debugLog(`Skipping non-blank sign.`);\n continue;\n }\n\n if (args['--generated'] && !text.match(/^[^a-z0-9]*$/i)) {\n debugLog(`Skipping user-created sign.`);\n }\n\n if (args['--user'] && !text.match(/[a-z0-9]/i)) {\n debugLog(`Skipping a possible generated sign.`);\n continue;\n }\n\n debugLog(`Found a matching sign.`);\n\n if (args['--verbose']) {\n console.log(\n `Found a matching sign: ${JSON.stringify(front)} and ${JSON.stringify(back)}`\n );\n }\n\n const chunkCoordinates = chunk.chunkCoordinates();\n\n if (!chunkCoordinates) {\n throw new Error('Chunk coordinates not found.');\n }\n\n foundSigns.push({\n chunkX: chunkCoordinates[0],\n chunkZ: chunkCoordinates[1],\n x: coords[0],\n y: coords[1],\n z: coords[2],\n front,\n back: back ?? null,\n });\n\n if (args['--first']) {\n return foundSigns;\n }\n }\n }\n }\n\n return foundSigns;\n}\n"]}
|
package/dist/bin/mca-json.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import getStdin from 'get-stdin';
|
|
3
3
|
import neodoc from 'neodoc';
|
|
4
|
-
import { Anvil } from '../lib/anvil';
|
|
4
|
+
import { Anvil } from '../lib/anvil.js';
|
|
5
5
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
6
6
|
async function readInput(filename) {
|
|
7
7
|
if (!filename || filename === '-') {
|
package/dist/bin/mca-json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mca-json.js","sourceRoot":"","sources":["../../src/bin/mca-json.ts"],"names":[],"mappings":";AAEA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"mca-json.js","sourceRoot":"","sources":["../../src/bin/mca-json.ts"],"names":[],"mappings":";AAEA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,KAAK,UAAU,SAAS,CAAC,QAA4B;IACjD,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,IAAI,GAMN,MAAM,CAAC,GAAG,CACd;;;;;;;;;;;;;;;;;;;;;;CAsBC,EACG;IACI,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,YAAY,EAAE,IAAI;CACrB,CACJ,CAAC;AAEF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACrB,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;IAClB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,MAAqB,CAAC,CAAC;IACxE,IAAI,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC;IAExC,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAqB,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACnE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1D,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnD,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,OAAO,CAAC,OAAO,CACrB,iCAAiC,EACjC,CAAC,KAAK,EAAE,EAAE;YACN,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC,CACJ,CAAC;IACN,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;KACD,IAAI,CAAC,CAAC,MAAc,EAAE,EAAE;IACrB,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\n\nimport getStdin from 'get-stdin';\nimport neodoc from 'neodoc';\nimport { Anvil } from '../lib/anvil.js';\nimport { readFile, writeFile } from 'node:fs/promises';\n\nasync function readInput(filename: string | undefined) {\n if (!filename || filename === '-') {\n return await getStdin.buffer();\n }\n\n return readFile(filename);\n}\n\nconst args: {\n '--chunk-coords'?: string | string[];\n '--compact'?: boolean;\n '--condense'?: boolean;\n '<input>'?: string;\n '<output>'?: string;\n} = neodoc.run(\n`Usage: mca-json [OPTIONS] [<input> [<output>]]\n\nConverts a Minecraft MCA file to JSON. Both input and output are optional. If\ninput is not provided, this reads from stdin. If output is not provided, this\nwrites to stdout.\n\nBecause MCA files can contain a tremendous amount of information, the tool\nmight run out of memory. When that happens, you can dump specific chunks by\nspecifying the --chunk-coords option.\n\nOptions:\n --chunk-coords=COORDS\n Only write out the chunk at the specified chunk coordinates.\n Chunk coordinates are absolute chunks from the world origin.\n Can be specified multiple times. Coordinates are specified\n as \"x,z\". Highly recommended to limit the size of the JSON\n that's generated.\n --compact Do not use pretty-printing in the JSON output.\n --condense Condense arrays of bytes, ints, and longs to a single line.\n This significantly cuts down on the size of the generated\n JSON.\n -h, --help Show this message.\n`,\n {\n argv: [...process.argv].slice(2),\n laxPlacement: true,\n }\n);\n\nreadInput(args['<input>'])\n .then((inputBuffer) => {\n if (inputBuffer.length === 0) {\n console.error('No input provided. Use --help for usage.');\n process.exit(1);\n }\n\n const anvilParser = Anvil.fromBuffer(inputBuffer.buffer as ArrayBuffer);\n let chunks = anvilParser.getAllChunks();\n\n if (args['--chunk-coords']) {\n if (!Array.isArray(args['--chunk-coords'])) {\n args['--chunk-coords'] = [args['--chunk-coords']];\n }\n\n const wanted = new Set<string | undefined>(args['--chunk-coords']);\n chunks = chunks.filter((chunk) => wanted.has(chunk.chunkKey()));\n }\n\n let jsonObjects = chunks.map((chunk) => chunk.toObject());\n\n if (args['--compact']) {\n return JSON.stringify(jsonObjects);\n }\n\n let content = JSON.stringify(jsonObjects, null, 4);\n\n if (args['--condense']) {\n content = content.replace(\n /: \\[(\\n\\s*\"?-?\\d+\"?,?)*\\n\\s*\\]/g,\n (match) => {\n return match.replace(/\\n\\s*/g, ' ');\n }\n );\n }\n\n return content;\n })\n .then((output: string) => {\n if (args['<output>']) {\n writeFile(args['<output>'], output);\n } else {\n console.log(output);\n }\n });\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import debug from 'debug';
|
|
3
3
|
import neodoc from 'neodoc';
|
|
4
|
-
import { Anvil } from '../lib/anvil';
|
|
4
|
+
import { Anvil } from '../lib/anvil.js';
|
|
5
5
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
6
6
|
const debugLog = debug('mca-remove-chunks');
|
|
7
7
|
const args = neodoc.run(`Usage: mca-remove-chunks [OPTIONS] MCA_FILE...
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mca-remove-chunks.js","sourceRoot":"","sources":["../../src/bin/mca-remove-chunks.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport debug from 'debug';\nimport neodoc from 'neodoc';\nimport { Anvil } from '../lib/anvil';\nimport { readFile, writeFile } from 'node:fs/promises';\n\nconst debugLog = debug('mca-remove-chunks');\nconst args: {\n '--dry-run'?: boolean;\n '--remove'?: string[];\n '--remove-list'?: string;\n '--preserve'?: string[];\n '--preserve-list'?: string;\n '--verbose'?: boolean;\n MCA_FILE?: string[];\n} = neodoc.run(\n `Usage: mca-remove-chunks [OPTIONS] MCA_FILE...\n\nRemoves chunks from MCA files (region/r.*.*.mca or entities/r.*.*.mca).\n\nThis does not change the file size. Similar to deleting a file on a hard drive,\nthe space is marked as free but not actually removed. Minecraft will reuse or reclaim the space when the region file is next modified.\n\nYou can either specify chunk coordinates to preserve or chunk coordinates to remove, but not both.\n\nOptions:\n -h, --help Show this message.\n -n, --dry-run Do not write changes to the file.\n --remove CHUNK_COORDINATES...\n Remove chunks with these coordinates. Coordinates are in\n the format \"x,z\". May be specified multiple times.\n --remove-list FILE\n Remove chunks with coordinates specified in a text file.\n Each line of the file should have coordinates in the format\n \"x,z\". Safe to combine with --remove option.\n --preserve CHUNK_COORDINATES...\n Do not remove chunks with these coordinates. Coordinates\n are in the format \"x,z\". May be specified multiple times.\n --preserve-list FILE\n Preserve chunks with coordinates specified in a text file.\n Each line of the file should have coordinates in the format\n \"x,z\". Safe to combine with --preserve option.\n -v, --verbose Show more information during processing.\n`,\n {\n argv: [...process.argv].slice(2),\n laxPlacement: true,\n }\n);\n\nmain();\n\nasync function main() {\n if (!args.MCA_FILE?.length) {\n console.error('No files specified.');\n process.exit(1);\n }\n\n if (args['--remove-list']) {\n const coordinates = await readCoordinates(args['--remove-list']);\n\n if (!args['--remove']) {\n args['--remove'] = [];\n }\n\n args['--remove'].push(...coordinates);\n }\n\n if (args['--preserve-list']) {\n const coordinates = await readCoordinates(args['--preserve-list']);\n\n if (!args['--preserve']) {\n args['--preserve'] = [];\n }\n\n args['--preserve'].push(...coordinates);\n }\n\n if (args['--remove'] && args['--preserve']) {\n console.error('Cannot specify both --remove and --preserve options.');\n process.exit(1);\n }\n\n if (!args['--remove'] && !args['--preserve']) {\n console.error('Must specify either --remove or --preserve option.');\n process.exit(1);\n }\n\n if (args['--preserve'] && args['--verbose']) {\n console.log(`Preserving coordinates: ${args['--preserve'].join(' ')}`);\n }\n\n if (args['--remove'] && args['--verbose']) {\n console.log(`Removing coordinates: ${args['--remove'].join(' ')}`);\n }\n\n const determinator = makeDeterminator();\n\n for (const file of args.MCA_FILE) {\n try {\n await processFile(file, determinator);\n } catch (e) {\n console.error(`Error processing file ${file}: ${e}`);\n\n process.exit(1);\n }\n }\n}\n\nasync function processFile(\n filename: string,\n determinator: (chunkKey: string) => boolean\n) {\n debugLog(`Reading file: ${filename}`);\n\n if (args['--verbose']) {\n console.log(`Reading file: ${filename}`);\n }\n\n const contents = await readFile(filename);\n const anvil = Anvil.fromBuffer(contents.buffer);\n const chunks = anvil.getAllChunks();\n let changes = 0;\n\n for (const chunk of chunks) {\n const chunkKey = chunk.chunkKey() || '';\n\n if (determinator(chunkKey)) {\n debugLog(`Preserving chunk: ${chunkKey}`);\n\n if (args['--verbose']) {\n console.log(`Preserving chunk: ${chunkKey}`);\n }\n } else {\n debugLog(`Removing chunk: ${chunkKey}`);\n\n if (args['--verbose']) {\n console.log(`Removing chunk: ${chunkKey}`);\n }\n\n anvil.deleteChunk(chunk);\n changes += 1;\n }\n }\n\n if (args['--verbose']) {\n console.log(`Chunks removed: ${changes}/${chunks.length}`);\n }\n\n if (changes) {\n if (args['--dry-run']) {\n console.log(`DRY RUN: Would write changes to file: ${filename}`);\n } else {\n console.log(`Writing changes to file: ${filename}`);\n const modifiedBuffer = Buffer.from(anvil.buffer());\n await writeFile(filename, modifiedBuffer);\n }\n }\n}\n\nfunction makeDeterminator() {\n if (args['--preserve']) {\n const preservedCoordinates = new Set(args['--preserve']);\n\n return (chunkKey: string) => preservedCoordinates.has(chunkKey);\n } else if (args['--remove']) {\n const removedCoordinates = new Set(args['--remove']);\n\n return (chunkKey: string) => !removedCoordinates.has(chunkKey);\n } else {\n throw new Error('Invalid state: no determinator could be created.');\n }\n}\n\nasync function readCoordinates(filename: string): Promise<string[]> {\n const contents = await readFile(filename, 'utf-8');\n const lines = contents\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n return lines;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mca-remove-chunks.js","sourceRoot":"","sources":["../../src/bin/mca-remove-chunks.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport debug from 'debug';\nimport neodoc from 'neodoc';\nimport { Anvil } from '../lib/anvil.js';\nimport { readFile, writeFile } from 'node:fs/promises';\n\nconst debugLog = debug('mca-remove-chunks');\nconst args: {\n '--dry-run'?: boolean;\n '--remove'?: string[];\n '--remove-list'?: string;\n '--preserve'?: string[];\n '--preserve-list'?: string;\n '--verbose'?: boolean;\n MCA_FILE?: string[];\n} = neodoc.run(\n `Usage: mca-remove-chunks [OPTIONS] MCA_FILE...\n\nRemoves chunks from MCA files (region/r.*.*.mca or entities/r.*.*.mca).\n\nThis does not change the file size. Similar to deleting a file on a hard drive,\nthe space is marked as free but not actually removed. Minecraft will reuse or reclaim the space when the region file is next modified.\n\nYou can either specify chunk coordinates to preserve or chunk coordinates to remove, but not both.\n\nOptions:\n -h, --help Show this message.\n -n, --dry-run Do not write changes to the file.\n --remove CHUNK_COORDINATES...\n Remove chunks with these coordinates. Coordinates are in\n the format \"x,z\". May be specified multiple times.\n --remove-list FILE\n Remove chunks with coordinates specified in a text file.\n Each line of the file should have coordinates in the format\n \"x,z\". Safe to combine with --remove option.\n --preserve CHUNK_COORDINATES...\n Do not remove chunks with these coordinates. Coordinates\n are in the format \"x,z\". May be specified multiple times.\n --preserve-list FILE\n Preserve chunks with coordinates specified in a text file.\n Each line of the file should have coordinates in the format\n \"x,z\". Safe to combine with --preserve option.\n -v, --verbose Show more information during processing.\n`,\n {\n argv: [...process.argv].slice(2),\n laxPlacement: true,\n }\n);\n\nmain();\n\nasync function main() {\n if (!args.MCA_FILE?.length) {\n console.error('No files specified.');\n process.exit(1);\n }\n\n if (args['--remove-list']) {\n const coordinates = await readCoordinates(args['--remove-list']);\n\n if (!args['--remove']) {\n args['--remove'] = [];\n }\n\n args['--remove'].push(...coordinates);\n }\n\n if (args['--preserve-list']) {\n const coordinates = await readCoordinates(args['--preserve-list']);\n\n if (!args['--preserve']) {\n args['--preserve'] = [];\n }\n\n args['--preserve'].push(...coordinates);\n }\n\n if (args['--remove'] && args['--preserve']) {\n console.error('Cannot specify both --remove and --preserve options.');\n process.exit(1);\n }\n\n if (!args['--remove'] && !args['--preserve']) {\n console.error('Must specify either --remove or --preserve option.');\n process.exit(1);\n }\n\n if (args['--preserve'] && args['--verbose']) {\n console.log(`Preserving coordinates: ${args['--preserve'].join(' ')}`);\n }\n\n if (args['--remove'] && args['--verbose']) {\n console.log(`Removing coordinates: ${args['--remove'].join(' ')}`);\n }\n\n const determinator = makeDeterminator();\n\n for (const file of args.MCA_FILE) {\n try {\n await processFile(file, determinator);\n } catch (e) {\n console.error(`Error processing file ${file}: ${e}`);\n\n process.exit(1);\n }\n }\n}\n\nasync function processFile(\n filename: string,\n determinator: (chunkKey: string) => boolean\n) {\n debugLog(`Reading file: ${filename}`);\n\n if (args['--verbose']) {\n console.log(`Reading file: ${filename}`);\n }\n\n const contents = await readFile(filename);\n const anvil = Anvil.fromBuffer(contents.buffer);\n const chunks = anvil.getAllChunks();\n let changes = 0;\n\n for (const chunk of chunks) {\n const chunkKey = chunk.chunkKey() || '';\n\n if (determinator(chunkKey)) {\n debugLog(`Preserving chunk: ${chunkKey}`);\n\n if (args['--verbose']) {\n console.log(`Preserving chunk: ${chunkKey}`);\n }\n } else {\n debugLog(`Removing chunk: ${chunkKey}`);\n\n if (args['--verbose']) {\n console.log(`Removing chunk: ${chunkKey}`);\n }\n\n anvil.deleteChunk(chunk);\n changes += 1;\n }\n }\n\n if (args['--verbose']) {\n console.log(`Chunks removed: ${changes}/${chunks.length}`);\n }\n\n if (changes) {\n if (args['--dry-run']) {\n console.log(`DRY RUN: Would write changes to file: ${filename}`);\n } else {\n console.log(`Writing changes to file: ${filename}`);\n const modifiedBuffer = Buffer.from(anvil.buffer());\n await writeFile(filename, modifiedBuffer);\n }\n }\n}\n\nfunction makeDeterminator() {\n if (args['--preserve']) {\n const preservedCoordinates = new Set(args['--preserve']);\n\n return (chunkKey: string) => preservedCoordinates.has(chunkKey);\n } else if (args['--remove']) {\n const removedCoordinates = new Set(args['--remove']);\n\n return (chunkKey: string) => !removedCoordinates.has(chunkKey);\n } else {\n throw new Error('Invalid state: no determinator could be created.');\n }\n}\n\nasync function readCoordinates(filename: string): Promise<string[]> {\n const contents = await readFile(filename, 'utf-8');\n const lines = contents\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n return lines;\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import debug from 'debug';
|
|
|
3
3
|
import getStdin from 'get-stdin';
|
|
4
4
|
import neodoc from 'neodoc';
|
|
5
5
|
import { inflate } from 'pako';
|
|
6
|
-
import { Nbt } from '../nbt/nbt';
|
|
6
|
+
import { Nbt } from '../nbt/nbt.js';
|
|
7
7
|
import { readFile } from 'node:fs/promises';
|
|
8
8
|
const debugLog = debug('mca-trim-chunks-without-signs');
|
|
9
9
|
main();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nbt-get-player-location.js","sourceRoot":"","sources":["../../src/bin/nbt-get-player-location.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"nbt-get-player-location.js","sourceRoot":"","sources":["../../src/bin/nbt-get-player-location.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport debug from 'debug';\nimport getStdin from 'get-stdin';\nimport neodoc from 'neodoc';\nimport { inflate } from 'pako';\nimport { Nbt } from '../nbt/nbt.js';\nimport { readFile } from 'node:fs/promises';\n\nconst debugLog = debug('mca-trim-chunks-without-signs');\nmain();\n\nasync function main() {\nconst args: {\n 'NBT_FILE'?: string[];\n} = neodoc.run(\n`Usage: nbt-get-player-locations NBT_FILE...\n\nScans a player NBT data file for the player location and prints it to stdout.\nNBT files can be compressed or uncompressed and this tool can handle both. If the filename is \"-\" or not provided, this will read from stdin.\n\nThe output is JSON with the following fields:\n\n{\n \"chunkX\": 7, # player's chunk X coordinate\n \"chunkZ\": -29 # player's chunk Z coordinate\n \"x\": 123, # player's X coordinate, rounded\n \"y\": 64, # player's Y coordinate, rounded\n \"z\": -456, # player's Z coordinate, rounded\n \"dimension\": \"minecraft:overworld\", # or \"minecraft:the_nether\" or \"minecraft:the_end\"\n}\n\nOptions:\n -h, --help Show this message.\n`,\n {\n argv: [...process.argv].slice(2),\n laxPlacement: true,\n }\n);\n\n if (!args.NBT_FILE?.length) {\n args.NBT_FILE = ['-'];\n }\n\n for (const file of args.NBT_FILE) {\n try {\n await processFile(file);\n } catch (e) {\n console.error(`Error processing file ${file}: ${e}`);\n\n process.exit(1);\n }\n }\n}\n\nasync function readInput(filename: string | undefined) {\n if (!filename || filename === '-') {\n debugLog(`Reading from stdin`);\n return await getStdin.buffer();\n }\n\n debugLog(`Reading file: ${filename}`);\n\n return readFile(filename);\n}\n\nasync function processFile(filename: string) {\n const inputBuffer = await readInput(filename);\n\n if (inputBuffer.length === 0) {\n if (filename === '-') {\n console.error('Input (stdin) is empty.');\n } else {\n console.error(`Input file is empty: ${filename}`);\n }\n console.error('Aborting. Use --help for usage.');\n process.exit(1);\n }\n\n let buffer = inputBuffer.buffer as ArrayBufferLike;\n\n try {\n buffer = inflate(inputBuffer).buffer;\n } catch (_ignore) {}\n\n const nbt = Nbt.fromBuffer(buffer);\n\n const dimension = nbt.findChild('Dimension')?.data;\n const x = nbt.findChild('Pos/0')?.data;\n const y = nbt.findChild('Pos/1')?.data;\n const z = nbt.findChild('Pos/2')?.data;\n\n if (typeof dimension !== 'string' || typeof x !== 'number' || typeof y !== 'number' || typeof z !== 'number') {\n console.error(`NBT file ${filename} does not contain valid player location data.`);\n process.exit(1);\n }\n\n const chunkX = Math.floor(x / 16);\n const chunkZ = Math.floor(z / 16);\n const output = {\n chunkX,\n chunkZ,\n x: Math.round(x),\n y: Math.round(y),\n z: Math.round(z),\n dimension,\n };\n console.log(JSON.stringify(output, null, 4));\n}\n"]}
|
package/dist/bin/nbt-json.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import getStdin from 'get-stdin';
|
|
3
3
|
import neodoc from 'neodoc';
|
|
4
4
|
import { inflate } from 'pako';
|
|
5
|
-
import { Nbt } from '../nbt/nbt';
|
|
5
|
+
import { Nbt } from '../nbt/nbt.js';
|
|
6
6
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
7
7
|
async function readInput(filename) {
|
|
8
8
|
if (!filename || filename === '-') {
|
package/dist/bin/nbt-json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nbt-json.js","sourceRoot":"","sources":["../../src/bin/nbt-json.ts"],"names":[],"mappings":";AAEA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"nbt-json.js","sourceRoot":"","sources":["../../src/bin/nbt-json.ts"],"names":[],"mappings":";AAEA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,KAAK,UAAU,SAAS,CAAC,QAA4B;IACjD,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,IAAI,GAKN,MAAM,CAAC,GAAG,CACd;;;;;;;;;;;;;;;CAeC,EACG;IACI,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,YAAY,EAAE,IAAI;CACrB,CACJ,CAAC;AAEF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACrB,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;IAClB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,MAAM,GAAG,WAAW,CAAC,MAAyB,CAAC;IAEnD,IAAI,CAAC;QACD,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;IACzC,CAAC;IAAC,OAAO,OAAO,EAAE,CAAC,CAAA,CAAC;IAEpB,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAEnC,IAAI,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IAEhC,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAElD,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,OAAO,CAAC,OAAO,CACrB,iCAAiC,EACjC,CAAC,KAAK,EAAE,EAAE;YACN,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC,CACJ,CAAC;IACN,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;KACD,IAAI,CAAC,CAAC,MAAc,EAAE,EAAE;IACrB,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\n\nimport getStdin from 'get-stdin';\nimport neodoc from 'neodoc';\nimport { inflate } from 'pako';\nimport { Nbt } from '../nbt/nbt.js';\nimport { readFile, writeFile } from 'node:fs/promises';\n\nasync function readInput(filename: string | undefined) {\n if (!filename || filename === '-') {\n return await getStdin.buffer();\n }\n\n return readFile(filename);\n}\n\nconst args: {\n '--compact'?: boolean;\n '--condense'?: boolean;\n '<input>'?: string;\n '<output>'?: string;\n} = neodoc.run(\n`Usage: nbt-json [OPTIONS] [<input> [<output>]]\n\nShows NBT data in a JSON format. Both input and output are optional. If input\nis not provided, this reads from stdin. If output is not provided, this writes\nto stdout.\n\nNBT files can be compressed or uncompressed. This tool can handle both. One\nexample NBT file is the player.dat file.\n\nOptions:\n --compact Do not use pretty-printing in the JSON output.\n --condense Condense arrays of bytes, ints, and longs to a single line.\n This significantly cuts down on the size of the generated\n JSON.\n -h, --help Show this message.\n`,\n {\n argv: [...process.argv].slice(2),\n laxPlacement: true,\n }\n);\n\nreadInput(args['<input>'])\n .then((inputBuffer) => {\n if (inputBuffer.length === 0) {\n console.error('No input provided. Use --help for usage.');\n process.exit(1);\n }\n\n let buffer = inputBuffer.buffer as ArrayBufferLike;\n\n try {\n buffer = inflate(inputBuffer).buffer;\n } catch (_ignore) {}\n\n const nbt = Nbt.fromBuffer(buffer);\n\n let jsonObject = nbt.toObject();\n\n if (args['--compact']) {\n return JSON.stringify(jsonObject);\n }\n\n let content = JSON.stringify(jsonObject, null, 4);\n\n if (args['--condense']) {\n content = content.replace(\n /: \\[(\\n\\s*\"?-?\\d+\"?,?)*\\n\\s*\\]/g,\n (match) => {\n return match.replace(/\\n\\s*/g, ' ');\n }\n );\n }\n\n return content;\n })\n .then((output: string) => {\n if (args['<output>']) {\n writeFile(args['<output>'], output);\n } else {\n console.log(output);\n }\n });\n"]}
|
package/dist/block/banner.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/block/banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/block/banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,MAAM,WAAW,uBAAuB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAAC;CAC7C;AAED,qBAAa,MAAO,SAAQ,aAAa;IACrC,QAAQ,IAAI,aAAa,EAAE;CAiC9B"}
|
package/dist/block/banner.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { HasEntityData } from './has-entity-data';
|
|
2
|
-
import { NbtString } from '../nbt/nbt-string';
|
|
1
|
+
import { HasEntityData } from './has-entity-data.js';
|
|
2
|
+
import { NbtString } from '../nbt/nbt-string.js';
|
|
3
3
|
export class Banner extends HasEntityData {
|
|
4
4
|
patterns() {
|
|
5
5
|
const patterns = this.entityData.findChild('Patterns');
|
package/dist/block/banner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/block/banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/block/banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAYjD,MAAM,OAAO,MAAO,SAAQ,aAAa;IACrC,QAAQ;QACJ,MAAM,QAAQ,GACV,IAAI,CAAC,UAAU,CAAC,SAAS,CAAuB,UAAU,CAAC,CAAC;QAEhE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAY,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAC9B,SAAS,CACZ,CAAC;YAEF,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,OAAO,YAAY,SAAS,EAAE,CAAC;gBAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YACxD,CAAC;YAED,OAAO;gBACH,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,OAAO,EAAE;oBACL,QAAQ,EACJ,OAAO,CAAC,SAAS,CAAY,SAAS,CAAC,EAAE,IAAI,IAAI,EAAE;oBACvD,eAAe,EACX,OAAO,CAAC,SAAS,CAAY,SAAS,CAAC,EAAE,IAAI,IAAI,EAAE;iBAC1D;aACJ,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;CACJ","sourcesContent":["import { HasEntityData } from './has-entity-data.js';\nimport { NbtCompound } from '../nbt/nbt-compound.js';\nimport { NbtList } from '../nbt/nbt-list.js';\nimport { NbtString } from '../nbt/nbt-string.js';\n\nexport interface BannerPatternDefinition {\n asset_id: string;\n translation_key: string;\n}\n\nexport interface BannerPattern {\n color: string;\n pattern: string | BannerPatternDefinition;\n}\n\nexport class Banner extends HasEntityData {\n patterns(): BannerPattern[] {\n const patterns =\n this.entityData.findChild<NbtList<NbtCompound>>('Patterns');\n\n if (!patterns) {\n throw new Error('Unable to find patterns in banner');\n }\n\n return patterns.data.map((compound) => {\n const color = compound.findChild<NbtString>('Color');\n const pattern = compound.findChild<NbtString | NbtCompound>(\n 'Pattern'\n );\n\n if (!color || !pattern) {\n throw new Error('Color or pattern not found in banner pattern');\n }\n\n if (pattern instanceof NbtString) {\n return { color: color.data, pattern: pattern.data };\n }\n\n return {\n color: color.data,\n pattern: {\n asset_id:\n pattern.findChild<NbtString>('Pattern')?.data ?? '',\n translation_key:\n pattern.findChild<NbtString>('Pattern')?.data ?? '',\n },\n };\n });\n }\n}\n"]}
|
package/dist/block/barrel.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { CustomName } from './mixins/custom-name';
|
|
2
|
-
import { Lock } from './mixins/lock';
|
|
3
|
-
import { NbtCompound } from '../nbt/nbt-compound';
|
|
4
|
-
import { NbtList } from '../nbt/nbt-list';
|
|
5
|
-
declare const Barrel_base: new (name: string, coords: import("
|
|
1
|
+
import { CustomName } from './mixins/custom-name.js';
|
|
2
|
+
import { Lock } from './mixins/lock.js';
|
|
3
|
+
import { NbtCompound } from '../nbt/nbt-compound.js';
|
|
4
|
+
import { NbtList } from '../nbt/nbt-list.js';
|
|
5
|
+
declare const Barrel_base: new (name: string, coords: import("../index.js").Coords3d, entityData?: NbtCompound | undefined) => CustomName & Lock & {
|
|
6
6
|
items(): NbtList<NbtCompound>;
|
|
7
7
|
lootTable(): string | undefined;
|
|
8
8
|
lootTableSeed(): bigint | undefined;
|
|
9
9
|
entityData: NbtCompound;
|
|
10
10
|
name: string;
|
|
11
|
-
coords: import("
|
|
11
|
+
coords: import("../index.js").Coords3d;
|
|
12
12
|
components(): NbtCompound | undefined;
|
|
13
13
|
};
|
|
14
14
|
export declare class Barrel extends Barrel_base {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"barrel.d.ts","sourceRoot":"","sources":["../../src/block/barrel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"barrel.d.ts","sourceRoot":"","sources":["../../src/block/barrel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;;aAS5B,OAAO,CAAC,WAAW,CAAC;iBAWhB,MAAM,GAAG,SAAS;qBAId,MAAM,GAAG,SAAS;;;;;;AApB3C,qBAAa,MAAO,SAAQ,WAwB3B;CAAG"}
|
package/dist/block/barrel.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { HasEntityData } from './has-entity-data';
|
|
2
|
-
import { CustomName } from './mixins/custom-name';
|
|
3
|
-
import { Lock } from './mixins/lock';
|
|
4
|
-
import { Mixin } from './mixins/mixin';
|
|
1
|
+
import { HasEntityData } from './has-entity-data.js';
|
|
2
|
+
import { CustomName } from './mixins/custom-name.js';
|
|
3
|
+
import { Lock } from './mixins/lock.js';
|
|
4
|
+
import { Mixin } from './mixins/mixin.js';
|
|
5
5
|
export class Barrel extends Mixin(HasEntityData, CustomName, Lock, class extends HasEntityData {
|
|
6
6
|
items() {
|
|
7
7
|
const items = this.entityData.findChild('Items');
|
package/dist/block/barrel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"barrel.js","sourceRoot":"","sources":["../../src/block/barrel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"barrel.js","sourceRoot":"","sources":["../../src/block/barrel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAM1C,MAAM,OAAO,MAAO,SAAQ,KAAK,CAC7B,aAAa,EACb,UAAU,EACV,IAAI,EACJ,KAAM,SAAQ,aAAa;IACvB,KAAK;QACD,MAAM,KAAK,GACP,IAAI,CAAC,UAAU,CAAC,SAAS,CAAuB,OAAO,CAAC,CAAC;QAE7D,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAY,WAAW,CAAC,EAAE,IAAI,CAAC;IACnE,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAU,eAAe,CAAC,EAAE,IAAI,CAAC;IACrE,CAAC;CACJ,CACJ;CAAG","sourcesContent":["import { HasEntityData } from './has-entity-data.js';\nimport { CustomName } from './mixins/custom-name.js';\nimport { Lock } from './mixins/lock.js';\nimport { Mixin } from './mixins/mixin.js';\nimport { NbtCompound } from '../nbt/nbt-compound.js';\nimport { NbtList } from '../nbt/nbt-list.js';\nimport { NbtLong } from '../nbt/nbt-long.js';\nimport { NbtString } from '../nbt/nbt-string.js';\n\nexport class Barrel extends Mixin(\n HasEntityData,\n CustomName,\n Lock,\n class extends HasEntityData {\n items(): NbtList<NbtCompound> {\n const items =\n this.entityData.findChild<NbtList<NbtCompound>>('Items');\n\n if (!items) {\n throw new Error('Barrel is missing items tag');\n }\n\n return items;\n }\n\n lootTable(): string | undefined {\n return this.entityData.findChild<NbtString>('LootTable')?.data;\n }\n\n lootTableSeed(): bigint | undefined {\n return this.entityData.findChild<NbtLong>('LootTableSeed')?.data;\n }\n }\n) {}\n"]}
|
package/dist/block/beacon.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { CustomName } from './mixins/custom-name';
|
|
2
|
-
import { Lock } from './mixins/lock';
|
|
3
|
-
declare const Beacon_base: new (name: string, coords: import("
|
|
1
|
+
import { CustomName } from './mixins/custom-name.js';
|
|
2
|
+
import { Lock } from './mixins/lock.js';
|
|
3
|
+
declare const Beacon_base: new (name: string, coords: import("../index.js").Coords3d, entityData?: import("../index.js").NbtCompound | undefined) => CustomName & Lock & {
|
|
4
4
|
primaryEffect(): string | undefined;
|
|
5
5
|
secondaryEffect(): string | undefined;
|
|
6
|
-
entityData: import("
|
|
6
|
+
entityData: import("../index.js").NbtCompound;
|
|
7
7
|
name: string;
|
|
8
|
-
coords: import("
|
|
9
|
-
components(): import("
|
|
8
|
+
coords: import("../index.js").Coords3d;
|
|
9
|
+
components(): import("../index.js").NbtCompound | undefined;
|
|
10
10
|
};
|
|
11
11
|
export declare class Beacon extends Beacon_base {
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beacon.d.ts","sourceRoot":"","sources":["../../src/block/beacon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"beacon.d.ts","sourceRoot":"","sources":["../../src/block/beacon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;;qBASf,MAAM,GAAG,SAAS;uBAIhB,MAAM,GAAG,SAAS;;;;;;AAT7C,qBAAa,MAAO,SAAQ,WAa3B;CAAG"}
|
package/dist/block/beacon.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { CustomName } from './mixins/custom-name';
|
|
2
|
-
import { HasEntityData } from './has-entity-data';
|
|
3
|
-
import { Lock } from './mixins/lock';
|
|
4
|
-
import { Mixin } from './mixins/mixin';
|
|
1
|
+
import { CustomName } from './mixins/custom-name.js';
|
|
2
|
+
import { HasEntityData } from './has-entity-data.js';
|
|
3
|
+
import { Lock } from './mixins/lock.js';
|
|
4
|
+
import { Mixin } from './mixins/mixin.js';
|
|
5
5
|
export class Beacon extends Mixin(HasEntityData, CustomName, Lock, class extends HasEntityData {
|
|
6
6
|
primaryEffect() {
|
|
7
7
|
return this.entityData.findChild('LootTable')?.data;
|
package/dist/block/beacon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../src/block/beacon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../src/block/beacon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,MAAM,OAAO,MAAO,SAAQ,KAAK,CAC7B,aAAa,EACb,UAAU,EACV,IAAI,EACJ,KAAM,SAAQ,aAAa;IACvB,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAY,WAAW,CAAC,EAAE,IAAI,CAAC;IACnE,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAY,eAAe,CAAC,EAAE,IAAI,CAAC;IACvE,CAAC;CACJ,CACJ;CAAG","sourcesContent":["import { CustomName } from './mixins/custom-name.js';\nimport { HasEntityData } from './has-entity-data.js';\nimport { Lock } from './mixins/lock.js';\nimport { Mixin } from './mixins/mixin.js';\nimport { NbtString } from '../nbt/nbt-string.js';\n\nexport class Beacon extends Mixin(\n HasEntityData,\n CustomName,\n Lock,\n class extends HasEntityData {\n primaryEffect(): string | undefined {\n return this.entityData.findChild<NbtString>('LootTable')?.data;\n }\n\n secondaryEffect(): string | undefined {\n return this.entityData.findChild<NbtString>('LootTableSeed')?.data;\n }\n }\n) {}\n"]}
|
package/dist/block/bed.d.ts
CHANGED
package/dist/block/bed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bed.d.ts","sourceRoot":"","sources":["../../src/block/bed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bed.d.ts","sourceRoot":"","sources":["../../src/block/bed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,qBAAa,GAAI,SAAQ,aAAa;CAAG"}
|
package/dist/block/bed.js
CHANGED
package/dist/block/bed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bed.js","sourceRoot":"","sources":["../../src/block/bed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bed.js","sourceRoot":"","sources":["../../src/block/bed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAO,GAAI,SAAQ,aAAa;CAAG","sourcesContent":["import { HasEntityData } from './has-entity-data.js';\n\nexport class Bed extends HasEntityData {}\n"]}
|
package/dist/block/beehive.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Coords3d } from '../types/coords';
|
|
2
|
-
import { HasEntityData } from './has-entity-data';
|
|
3
|
-
import { NbtCompound } from '../nbt/nbt-compound';
|
|
4
|
-
import { NbtList } from '../nbt/nbt-list';
|
|
1
|
+
import { Coords3d } from '../types/coords.js';
|
|
2
|
+
import { HasEntityData } from './has-entity-data.js';
|
|
3
|
+
import { NbtCompound } from '../nbt/nbt-compound.js';
|
|
4
|
+
import { NbtList } from '../nbt/nbt-list.js';
|
|
5
5
|
export declare class Beehive extends HasEntityData {
|
|
6
6
|
bees(): NbtList<NbtCompound> | undefined;
|
|
7
7
|
flowerPos(): Coords3d | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beehive.d.ts","sourceRoot":"","sources":["../../src/block/beehive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"beehive.d.ts","sourceRoot":"","sources":["../../src/block/beehive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,qBAAa,OAAQ,SAAQ,aAAa;IACtC,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,SAAS;IAIxC,SAAS,IAAI,QAAQ,GAAG,SAAS;CAKpC"}
|
package/dist/block/beehive.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beehive.js","sourceRoot":"","sources":["../../src/block/beehive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"beehive.js","sourceRoot":"","sources":["../../src/block/beehive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,MAAM,OAAO,OAAQ,SAAQ,aAAa;IACtC,IAAI;QACA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAuB,MAAM,CAAC,CAAC;IACnE,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAc,YAAY,CAAC,EAAE,IAE9C,CAAC;IACpB,CAAC;CACJ","sourcesContent":["import { Coords3d } from '../types/coords.js';\nimport { HasEntityData } from './has-entity-data.js';\nimport { NbtCompound } from '../nbt/nbt-compound.js';\nimport { NbtIntArray } from '../nbt/nbt-int-array.js';\nimport { NbtList } from '../nbt/nbt-list.js';\n\nexport class Beehive extends HasEntityData {\n bees(): NbtList<NbtCompound> | undefined {\n return this.entityData.findChild<NbtList<NbtCompound>>('bees');\n }\n\n flowerPos(): Coords3d | undefined {\n return this.entityData.findChild<NbtIntArray>('flower_pos')?.data as\n | Coords3d\n | undefined;\n }\n}\n"]}
|
package/dist/block/bell.d.ts
CHANGED
package/dist/block/bell.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bell.d.ts","sourceRoot":"","sources":["../../src/block/bell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bell.d.ts","sourceRoot":"","sources":["../../src/block/bell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,qBAAa,IAAK,SAAQ,aAAa;CAAG"}
|
package/dist/block/bell.js
CHANGED
package/dist/block/bell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bell.js","sourceRoot":"","sources":["../../src/block/bell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bell.js","sourceRoot":"","sources":["../../src/block/bell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAO,IAAK,SAAQ,aAAa;CAAG","sourcesContent":["import { HasEntityData } from './has-entity-data.js';\n\nexport class Bell extends HasEntityData {}\n"]}
|
package/dist/block/block.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Banner } from './banner';
|
|
2
|
-
import { Barrel } from './barrel';
|
|
3
|
-
import { Beacon } from './beacon';
|
|
4
|
-
import { Bed } from './bed';
|
|
5
|
-
import { Beehive } from './beehive';
|
|
6
|
-
import { Bell } from './bell';
|
|
7
|
-
import { Coords3d } from '../types/coords';
|
|
8
|
-
import { Generic } from './generic';
|
|
9
|
-
import { NbtCompound } from '../nbt/nbt-compound';
|
|
10
|
-
import { Sign } from './sign';
|
|
1
|
+
import { Banner } from './banner.js';
|
|
2
|
+
import { Barrel } from './barrel.js';
|
|
3
|
+
import { Beacon } from './beacon.js';
|
|
4
|
+
import { Bed } from './bed.js';
|
|
5
|
+
import { Beehive } from './beehive.js';
|
|
6
|
+
import { Bell } from './bell.js';
|
|
7
|
+
import { Coords3d } from '../types/coords.js';
|
|
8
|
+
import { Generic } from './generic.js';
|
|
9
|
+
import { NbtCompound } from '../nbt/nbt-compound.js';
|
|
10
|
+
import { Sign } from './sign.js';
|
|
11
11
|
export type BlockInstance = Banner | Barrel | Beacon | Bed | Beehive | Bell | Generic | Sign;
|
|
12
12
|
export declare class Block {
|
|
13
13
|
static blockConstructor: Map<(name: string) => boolean, typeof Generic>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/block/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/block/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;AAE7F,qBAAa,KAAK;IACd,MAAM,CAAC,gBAAgB,aAAkB,MAAM,KAAK,OAAO,kBAQxD;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,OAAO;IAUhF,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAItC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAItC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAItC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGvC"}
|
package/dist/block/block.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Banner } from './banner';
|
|
2
|
-
import { Barrel } from './barrel';
|
|
3
|
-
import { Beacon } from './beacon';
|
|
4
|
-
import { Bed } from './bed';
|
|
5
|
-
import { Beehive } from './beehive';
|
|
6
|
-
import { Bell } from './bell';
|
|
7
|
-
import { Generic } from './generic';
|
|
8
|
-
import { Sign } from './sign';
|
|
1
|
+
import { Banner } from './banner.js';
|
|
2
|
+
import { Barrel } from './barrel.js';
|
|
3
|
+
import { Beacon } from './beacon.js';
|
|
4
|
+
import { Bed } from './bed.js';
|
|
5
|
+
import { Beehive } from './beehive.js';
|
|
6
|
+
import { Bell } from './bell.js';
|
|
7
|
+
import { Generic } from './generic.js';
|
|
8
|
+
import { Sign } from './sign.js';
|
|
9
9
|
export class Block {
|
|
10
10
|
static blockConstructor = new Map([
|
|
11
11
|
[Block.isBanner, Banner],
|