@tendrock/database
Version:
A database lib under the Tendrock ecosystem for Minecraft Bedrock Edition Script API
41 lines (40 loc) • 1.48 kB
JavaScript
import { InstanceSerializer } from "./InstanceSerializer";
import { ConstructorRegistryImpl } from "./ConstructorRegistry";
export class InstanceData {
constructor(dataJson, instanceDataOptions, options) {
this._serializer = new InstanceSerializer();
this.database = instanceDataOptions.database;
this.identifier = instanceDataOptions.identifier;
this.uniqueId = instanceDataOptions.uniqueId;
this.beforeConstructorHook(dataJson, instanceDataOptions, options);
if (dataJson) {
this.onDeserialize(dataJson, instanceDataOptions, options);
}
else if (options) {
this.onConstruct(options, instanceDataOptions);
}
else {
this.onInitWithNoData(instanceDataOptions);
}
this.afterConstructorHook(dataJson, instanceDataOptions, options);
}
beforeConstructorHook(dataJson, instanceDataOptions, options) {
}
afterConstructorHook(dataJson, instanceDataOptions, options) {
}
toJSON() {
this._serializer.clear();
this.serialize(this._serializer);
return this._serializer.toJSON();
}
serialize(serializer) {
const constructorId = ConstructorRegistryImpl.Instance.getIdByConstructor(this.constructor);
if (!constructorId) {
return;
}
serializer.put('tendrock:cid', constructorId);
}
markDirty() {
this.database.set(this.identifier, this);
}
}