UNPKG

grow-items

Version:

A standalone items.dat parser for Growtopia

1 lines 24.4 kB
{"version":3,"sources":["../lib/ExtendBuffer.ts","../lib/Items.ts"],"sourcesContent":["export class ExtendBuffer {\n public data: number[];\n\n constructor(data: number[] | number, public mempos = 0) {\n this.data = Array.isArray(data) ? data : new Array(data).fill(0);\n }\n\n private read(size: number): number {\n let value = 0;\n for (let i = 0; i < size; i++) {\n value |= this.data[this.mempos + i] << (i * 8);\n }\n this.mempos += size;\n return value >>> 0;\n }\n\n private readSigned(size: number): number {\n let value = this.read(size);\n const bits = size * 8;\n if (value & (1 << (bits - 1))) {\n value = value - (1 << bits);\n }\n return value;\n }\n\n private write(value: number, size: number): void {\n for (let i = 0; i < size; i++) {\n this.data[this.mempos + i] = (value >> (i * 8)) & 0xff;\n }\n this.mempos += size;\n }\n\n public readU8 = () => this.read(1);\n public readU16 = (be = false) => (be ? this.readBE(2) : this.read(2));\n public readU32 = (be = false) => (be ? this.readBE(4) : this.read(4));\n\n public readI8 = () => this.readSigned(1);\n public readI16 = (be = false) => (be ? this.readSignedBE(2) : this.readSigned(2));\n public readI32 = (be = false) => (be ? this.readSignedBE(4) : this.readSigned(4));\n\n private readBE(size: number): number {\n let value = 0;\n for (let i = 0; i < size; i++) {\n value = (value << 8) | this.data[this.mempos + i];\n }\n this.mempos += size;\n return value >>> 0;\n }\n\n private readSignedBE(size: number): number {\n let value = this.readBE(size);\n const bits = size * 8;\n if (value & (1 << (bits - 1))) {\n value = value - (1 << bits);\n }\n return value;\n }\n\n public writeU8 = (value: number) => this.write(value, 1);\n public writeU16 = (value: number, be = false) => (be ? this.writeBE(value, 2) : this.write(value, 2));\n public writeU32 = (value: number, be = false) => (be ? this.writeBE(value, 4) : this.write(value, 4));\n\n public writeI8 = (value: number) => this.write(value, 1);\n public writeI16 = (value: number, be = false) => (be ? this.writeBE(value, 2) : this.write(value, 2));\n public writeI32 = (value: number, be = false) => (be ? this.writeBE(value, 4) : this.write(value, 4));\n\n private writeBE(value: number, size: number): void {\n for (let i = 0; i < size; i++) {\n this.data[this.mempos + i] = (value >> ((size - 1 - i) * 8)) & 0xff;\n }\n this.mempos += size;\n }\n\n public writeU = (size: number, value: number, be = false) => {\n const methods = { 1: this.writeU8, 2: this.writeU16, 4: this.writeU32 };\n methods[size as 1 | 2 | 4](value, be);\n };\n\n public writeI = (size: number, value: number, be = false) => {\n const methods = { 1: this.writeI8, 2: this.writeI16, 4: this.writeI32 };\n methods[size as 1 | 2 | 4](value, be);\n };\n\n public async readString(be = false) {\n const len = be ? this.readBE(2) : this.read(2);\n const chars = this.data.slice(this.mempos, this.mempos + len);\n this.mempos += len;\n return String.fromCharCode(...chars);\n }\n\n public async writeString(str: string, be = false) {\n const bytes = str.split(\"\").map((char) => char.charCodeAt(0));\n be ? this.writeBE(str.length, 2) : this.write(str.length, 2);\n for (const byte of bytes) {\n this.data[this.mempos++] = byte;\n }\n }\n}\n","import type { ItemDefinition, ItemsDatMeta, StringOptions } from \"../types\";\nimport { ExtendBuffer } from \"./ExtendBuffer\";\n\nexport class ItemsDat {\n public buffer: ExtendBuffer;\n private key: string = \"PBG892FXX982ABC*\";\n private stringFields: string[] = [\n \"name\",\n \"texture\",\n \"extraFile\",\n \"petName\",\n \"petPrefix\",\n \"petSuffix\",\n \"petAbility\",\n \"extraOptions\",\n \"texture2\",\n \"extraOptions2\",\n \"punchOptions\",\n \"chairTexture\",\n \"itemRenderer\",\n \"info\"\n ];\n\n public meta: ItemsDatMeta = {\n items: [],\n itemCount: 0,\n version: 0\n };\n\n constructor(data: number[] | number) {\n this.buffer = new ExtendBuffer(data);\n }\n\n public getWriteSize(items: ItemDefinition[]) {\n let size = 130 * items.length;\n\n for (const item of items) {\n const keys = Object.keys(item);\n\n for (const key of keys) {\n const strValue = item[key] as unknown as string;\n if (this.stringFields.includes(key) && typeof strValue === \"string\") {\n size += strValue.length + 2;\n }\n if (typeof item[key] === \"object\") {\n const numArray = item[key] as unknown as number[];\n size += numArray.length;\n }\n }\n }\n\n return size + 4 + 2;\n }\n\n public async decode() {\n this.buffer.mempos = 0;\n this.meta.version = this.buffer.readU16();\n this.meta.itemCount = this.buffer.readI32();\n\n for (let i = 0; i < this.meta.itemCount; i++) {\n const item: ItemDefinition = {};\n\n item.id = this.buffer.readI32();\n item.flags = this.buffer.readU8();\n item.flagsCategory = this.buffer.readU8();\n item.type = this.buffer.readU8();\n item.materialType = this.buffer.readU8();\n\n item.name = await this.readString({ id: item.id, encoded: true });\n item.texture = await this.readString({ id: item.id });\n\n item.textureHash = this.buffer.readI32();\n item.visualEffectType = this.buffer.readU8();\n item.cookingTime = this.buffer.readI32();\n\n item.textureX = this.buffer.readU8();\n item.textureY = this.buffer.readU8();\n item.storageType = this.buffer.readU8();\n item.isStripeyWallpaper = this.buffer.readU8();\n item.collisionType = this.buffer.readU8();\n item.breakHits = this.buffer.readU8() / 6;\n\n item.resetStateAfter = this.buffer.readI32();\n item.bodyPartType = this.buffer.readU8();\n item.rarity = this.buffer.readI16();\n item.maxAmount = this.buffer.readU8();\n\n item.extraFile = await this.readString({ id: item.id });\n item.extraFileHash = this.buffer.readI32();\n item.audioVolume = this.buffer.readI32();\n\n item.petName = await this.readString({ id: item.id });\n item.petPrefix = await this.readString({ id: item.id });\n item.petSuffix = await this.readString({ id: item.id });\n item.petAbility = await this.readString({ id: item.id });\n\n item.seedBase = this.buffer.readU8();\n item.seedOverlay = this.buffer.readU8();\n item.treeBase = this.buffer.readU8();\n item.treeLeaves = this.buffer.readU8();\n\n item.seedColor = this.buffer.readI32();\n item.seedOverlayColor = this.buffer.readI32();\n item.ingredient = this.buffer.readI32();\n item.growTime = this.buffer.readI32();\n\n item.fxFlags = this.buffer.readI32();\n\n item.extraOptions = await this.readString({ id: item.id });\n item.texture2 = await this.readString({ id: item.id });\n item.extraOptions2 = await this.readString({ id: item.id });\n\n item.unknownInt1 = this.buffer.readI32();\n item.unknownInt2 = this.buffer.readI32();\n item.flags2 = this.buffer.readI32();\n\n item.extraBytes = this.buffer.data.slice(this.buffer.mempos, (this.buffer.mempos += 60));\n\n item.tileRange = this.buffer.readI32();\n item.vaultCapacity = this.buffer.readI32();\n\n if (this.meta.version >= 11) {\n item.punchOptions = await this.readString({ id: item.id });\n\n if (this.meta.version >= 12) {\n item.flags3 = this.buffer.readI32();\n item.bodyPart = this.buffer.data.slice(this.buffer.mempos, (this.buffer.mempos += 9));\n }\n if (this.meta.version >= 13) item.lightRange = this.buffer.readI32();\n if (this.meta.version >= 14) item.unknownInt3 = this.buffer.readI32();\n if (this.meta.version >= 15) {\n item.canSit = this.buffer.readU8();\n item.playerOffsetX = this.buffer.readI32();\n item.playerOffsetY = this.buffer.readI32();\n\n item.chairTextureX = this.buffer.readI32();\n item.chairTextureY = this.buffer.readI32();\n\n item.chairLegOffsetX = this.buffer.readI32();\n item.chairLegOffsetY = this.buffer.readI32();\n\n item.chairTexture = await this.readString({ id: item.id });\n }\n if (this.meta.version >= 16) item.itemRenderer = await this.readString({ id: item.id });\n if (this.meta.version >= 17) item.extraFlags1 = this.buffer.readI32();\n if (this.meta.version >= 18) item.itemRendererHash = this.buffer.readI32();\n if (this.meta.version >= 19) item.unknownBytes2 = this.buffer.data.slice(this.buffer.mempos, (this.buffer.mempos += 9));\n if (this.meta.version! >= 21) item.unknownShort1 = this.buffer.readI16();\n if (this.meta.version! >= 22) item.info = await this.readString({ id: item.id });\n }\n\n this.meta.items.push(item);\n }\n }\n\n public async encode() {\n this.buffer.mempos = 0;\n const size = this.getWriteSize(this.meta.items);\n\n this.buffer = new ExtendBuffer(size);\n this.buffer.writeI16(this.meta.version!);\n this.buffer.writeI32(this.meta.items.length);\n\n for (const item of this.meta.items) {\n this.buffer.writeI32(item.id!);\n this.buffer.writeU8(item.flags!);\n this.buffer.writeU8(item.flagsCategory!);\n this.buffer.writeU8(item.type!);\n this.buffer.writeU8(item.materialType!);\n\n await this.writeString(item.name!, item.id!, true);\n await this.writeString(item.texture!, item.id!);\n\n this.buffer.writeI32(item.textureHash!);\n this.buffer.writeU8(item.visualEffectType!);\n this.buffer.writeI32(item.cookingTime!);\n\n this.buffer.writeU8(item.textureX!);\n this.buffer.writeU8(item.textureY!);\n this.buffer.writeU8(item.storageType!);\n this.buffer.writeU8(item.isStripeyWallpaper!);\n this.buffer.writeU8(item.collisionType!);\n this.buffer.writeU8(item.breakHits! * 6);\n\n this.buffer.writeI32(item.resetStateAfter!);\n this.buffer.writeU8(item.bodyPartType!);\n this.buffer.writeI16(item.rarity!);\n this.buffer.writeU8(item.maxAmount!);\n\n await this.writeString(item.extraFile!, item.id!);\n this.buffer.writeI32(item.extraFileHash!);\n this.buffer.writeI32(item.audioVolume!);\n\n await this.writeString(item.petName!, item.id!);\n await this.writeString(item.petPrefix!, item.id!);\n await this.writeString(item.petSuffix!, item.id!);\n await this.writeString(item.petAbility!, item.id!);\n\n this.buffer.writeU8(item.seedBase!);\n this.buffer.writeU8(item.seedOverlay!);\n this.buffer.writeU8(item.treeBase!);\n this.buffer.writeU8(item.treeLeaves!);\n\n this.buffer.writeI32(item.seedColor!);\n this.buffer.writeI32(item.seedOverlayColor!);\n this.buffer.writeI32(item.ingredient!);\n this.buffer.writeI32(item.growTime!);\n\n this.buffer.writeI32(item.fxFlags!);\n\n await this.writeString(item.extraOptions!, item.id!);\n await this.writeString(item.texture2!, item.id!);\n await this.writeString(item.extraOptions2!, item.id!);\n\n this.buffer.writeI32(item.unknownInt1!);\n this.buffer.writeI32(item.unknownInt2!);\n this.buffer.writeI32(item.flags2!);\n\n if (item.extraBytes) {\n for (const byte of item.extraBytes) {\n this.buffer.writeU8(byte);\n }\n }\n\n this.buffer.writeI32(item.tileRange!);\n this.buffer.writeI32(item.vaultCapacity!);\n\n if (this.meta.version! >= 11) {\n await this.writeString(item.punchOptions || \"\", item.id!);\n\n if (this.meta.version! >= 12) {\n this.buffer.writeI32(item.flags3!);\n if (item.bodyPart) {\n for (const byte of item.bodyPart) {\n this.buffer.writeU8(byte);\n }\n }\n }\n if (this.meta.version! >= 13) this.buffer.writeI32(item.lightRange!);\n if (this.meta.version! >= 14) this.buffer.writeI32(item.unknownInt3!);\n if (this.meta.version! >= 15) {\n this.buffer.writeU8(item.canSit!);\n this.buffer.writeI32(item.playerOffsetX!);\n this.buffer.writeI32(item.playerOffsetY!);\n\n this.buffer.writeI32(item.chairTextureX!);\n this.buffer.writeI32(item.chairTextureY!);\n\n this.buffer.writeI32(item.chairLegOffsetX!);\n this.buffer.writeI32(item.chairLegOffsetY!);\n\n await this.writeString(item.chairTexture || \"\", item.id!);\n }\n if (this.meta.version! >= 16) {\n await this.writeString(item.itemRenderer || \"\", item.id!);\n }\n if (this.meta.version! >= 17) this.buffer.writeI32(item.extraFlags1!);\n if (this.meta.version! >= 18) this.buffer.writeI32(item.itemRendererHash!);\n if (this.meta.version! >= 19) {\n if (item.unknownBytes2) {\n for (const byte of item.unknownBytes2) {\n this.buffer.writeU8(byte);\n }\n }\n }\n if (this.meta.version! >= 21) this.buffer.writeI16(item.unknownShort1!);\n if (this.meta.version! >= 22) this.writeString(item.info!, item.id!);\n }\n }\n }\n\n private async readString(opts: StringOptions = { encoded: false }): Promise<string> {\n const len = this.buffer.readI16();\n\n if (!opts.encoded) {\n const chars = [];\n for (let i = 0; i < len; i++) {\n chars.push(String.fromCharCode(this.buffer.data[this.buffer.mempos++]));\n }\n return chars.join(\"\");\n } else {\n const chars = [];\n for (let i = 0; i < len; i++) {\n chars.push(String.fromCharCode(this.buffer.data[this.buffer.mempos] ^ this.key.charCodeAt((opts.id! + i) % this.key.length)));\n this.buffer.mempos++;\n }\n return chars.join(\"\");\n }\n }\n\n private async writeString(str: string, id: number, encoded: boolean = false): Promise<void> {\n this.buffer.writeI16(str.length);\n\n if (!encoded) {\n for (let i = 0; i < str.length; i++) {\n this.buffer.writeU8(str.charCodeAt(i));\n }\n } else {\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i) ^ this.key.charCodeAt((i + id) % this.key.length);\n this.buffer.writeU8(char);\n }\n }\n }\n}\n"],"mappings":"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","names":["ExtendBuffer","data","mempos","size","value","bits","be","len","chars","str","bytes","char","byte","ItemsDat","data","ExtendBuffer","items","size","item","keys","key","strValue","numArray","i","byte","opts","len","chars","str","id","encoded","char"]}