From 797cd5db629b0224c5cf233b2d218af8f71789aa Mon Sep 17 00:00:00 2001 From: Holly Date: Mon, 18 Dec 2023 11:19:51 +0000 Subject: [PATCH] add TrackedProperty This will be used for updating inventory slots when ItemStack properties change --- server/TrackedProperty.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 server/TrackedProperty.ts diff --git a/server/TrackedProperty.ts b/server/TrackedProperty.ts new file mode 100644 index 0000000..12b596b --- /dev/null +++ b/server/TrackedProperty.ts @@ -0,0 +1,23 @@ +export class TrackedProperty { + private trackedValue?:T; + private updateCallback?:(value:T) => void; + + constructor(initialValue?:T) { + this.trackedValue = initialValue; + } + + public set OnChange(value:() => void) { + this.updateCallback = value; + } + + public get Value() { + return this.trackedValue; + } + + public set Value(value) { + this.trackedValue = value; + if (this.updateCallback && value) { + this.updateCallback(value); + } + } +} \ No newline at end of file