grow-items
Version: 
A standalone items.dat parser for Growtopia
173 lines (164 loc) • 7.42 kB
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; // NOTE: not sure what this does
}
interface ItemsDatMeta {
  version?: number;
  itemCount?: number;
  items: Collection<string, 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 };