grow-items
Version:
A standalone items.dat parser for Growtopia
175 lines (166 loc) • 7.43 kB
text/typescript
/** A {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map | Map} with some Array-like additions. */
declare class Collection<K, V> extends Map<K, V> {
/** If this collection is empty. */
get empty(): boolean;
/** See: {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every | Array#every } */
every<T extends V, ThisArg = Collection<K, V>>(predicate: (value: V, index: number, array: Array<V>) => value is T, thisArg?: ThisArg): this is Array<T>;
every<ThisArg = Collection<K, V>>(predicate: (value: V, index: number, array: Array<V>) => unknown, thisArg?: ThisArg): boolean;
/** See: {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter | Array#filter } */
filter<S extends V, ThisArg = Collection<K, V>>(predicate: (this: ThisArg, value: V, index: number, array: Array<V>) => value is S, thisArg?: ThisArg): Array<S>;
filter<ThisArg = Collection<K, V>>(predicate: (this: ThisArg, value: V, index: number, array: Array<V>) => unknown, thisArg?: ThisArg): Array<V>;
/** See: {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find | Array#find } */
find<S extends V, ThisArg = Collection<K, V>>(predicate: (this: ThisArg, value: V, index: number, obj: Array<V>) => value is S, thisArg?: ThisArg): S | undefined;
find<ThisArg = Collection<K, V>>(predicate: (this: ThisArg, value: V, index: number, obj: Array<V>) => unknown, thisArg?: ThisArg): V | undefined;
/** See: {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex | Array#findIndex } */
findIndex(predicate: (value: V, index: number, obj: Array<V>) => unknown, thisArg?: unknown): number;
/**
* Get the first element, or first X elements if a number is provided.
* @param amount The amount of elements to get.
*/
first(): V | undefined;
first(amount: number): Array<V>;
/**
* Get the last element, or last X elements if a number is provided.
* @param amount The amount of elements to get.
*/
last(): V | undefined;
last(amount: number): Array<V>;
/** See: {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map | Array#map } */
map<T>(predicate: (value: V, index: number, obj: Array<V>) => T, thisArg?: unknown): Array<T>;
/**
* Pick a random element from the collection, or undefined if the collection is empty.
*/
random(): V | undefined;
/** See: {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce | Array#reduce } */
reduce(predicate: (previousValue: V, currentValue: V, currentIndex: number, array: Array<V>) => V): V;
reduce(predicate: (previousValue: V, currentValue: V, currentIndex: number, array: Array<V>) => V, initialValue: V): V;
reduce<T>(predicate: (previousValue: T, currentValue: V, currentIndex: number, array: Array<V>) => T, initialValue: T): T;
/** See: {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight | Array#reduceRight } */
reduceRight(predicate: (previousValue: V, currentValue: V, currentIndex: number, array: Array<V>) => V): V;
reduceRight(predicate: (previousValue: V, currentValue: V, currentIndex: number, array: Array<V>) => V, initialValue: V): V;
reduceRight<T>(predicate: (previousValue: T, currentValue: V, currentIndex: number, array: Array<V>) => T, initialValue: T): T;
/** See: {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some | Array#some } */
some<ThisArg = Collection<K, V>>(predicate: (value: V, index: number, array: Array<V>) => unknown, thisArg?: ThisArg): boolean;
/** Get the values of this collection as an array. */
toArray(): Array<V>;
}
interface StringOptions {
id?: number;
encoded?: boolean;
}
interface ItemDefinition {
[key: string]: any;
id?: number;
flags?: number;
type?: number;
materialType?: number;
name?: string;
texture?: string;
textureHash?: number;
visualEffectType?: number;
cookingTime?: number;
textureX?: number;
textureY?: number;
storageType?: number;
isStripeyWallpaper?: number;
collisionType?: number;
breakHits?: number;
resetStateAfter?: number;
bodyPartType?: number;
blockType?: number;
growTime?: number;
rarity?: number;
maxAmount?: number;
extraFile?: string;
extraFileHash?: number;
audioVolume?: number;
petName?: string;
petPrefix?: string;
petSuffix?: string;
petAbility?: string;
seedBase?: number;
seedOverlay?: number;
treeBase?: number;
treeLeaves?: number;
seedColor?: number;
seedOverlayColor?: number;
isMultiFace?: number;
extraOptions?: string;
texture2?: string;
extraOptions2?: string;
punchOptions?: string;
extraBytes?: number[];
tileRange?: number;
vaultCapacity?: number;
ingredient?: number;
fxFlags?: number;
flags2?: number;
flags3?: number;
bodyPart?: number[];
lightRange?: number;
canSit?: number;
playerOffsetX?: number;
playerOffsetY?: number;
chairTextureX?: number;
chairTextureY?: number;
chairLegOffsetX?: number;
chairLegOffsetY?: number;
chairTexture?: string;
itemRenderer?: string;
unknownInt1?: number; // NOTE: not sure what this does
unknownInt2?: number; // NOTE: not sure what this does
unknownInt3?: number; // NOTE: not sure what this does
unknownBytes1?: number[]; // NOTE: not sure what this does
extraFlags1?: number; // NOTE: not sure what this does
itemRendererHash?: number; // NOTE: not sure what this does
unknownBytes2?: number[]; // NOTE: not sure what this does
unknownShort1?: number; // NOTE: not sure what this does
info?: string;
recipe?: number[];
unknownByte1?: number;
}
interface ItemsDatMeta {
version?: number;
itemCount?: number;
items: Collection<number, ItemDefinition>;
}
declare class ExtendBuffer {
mempos: number;
data: number[];
constructor(data: number[] | number, mempos?: number);
private read;
private readSigned;
private write;
readU8: () => number;
readU16: (be?: boolean) => number;
readU32: (be?: boolean) => number;
readI8: () => number;
readI16: (be?: boolean) => number;
readI32: (be?: boolean) => number;
private readBE;
private readSignedBE;
writeU8: (value: number) => void;
writeU16: (value: number, be?: boolean) => void;
writeU32: (value: number, be?: boolean) => void;
writeI8: (value: number) => void;
writeI16: (value: number, be?: boolean) => void;
writeI32: (value: number, be?: boolean) => void;
private writeBE;
writeU: (size: number, value: number, be?: boolean) => void;
writeI: (size: number, value: number, be?: boolean) => void;
readString(be?: boolean): Promise<string>;
writeString(str: string, be?: boolean): Promise<void>;
}
declare class ItemsDat {
buffer: ExtendBuffer;
private key;
private stringFields;
meta: ItemsDatMeta;
constructor(data: number[] | number);
getWriteSize(): number;
decode(): Promise<void>;
encode(): Promise<void>;
private readString;
private writeString;
}
export { ExtendBuffer, type ItemDefinition, ItemsDat, type ItemsDatMeta, type StringOptions };