From 8e90643ea18d7b1aa7f7eca617656a72c71e1988 Mon Sep 17 00:00:00 2001 From: bdew Date: Sun, 22 Feb 2015 11:12:16 +0200 Subject: [PATCH] GUI update packets are now timestamped, packets from the past will be ignored --- build.gradle | 2 +- src/net/bdew/lib/data/base/TileDataSlots.scala | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 16cd2b7..5394534 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,7 @@ buildscript { apply plugin: 'scala' apply plugin: 'forge' -version = "1.6.3" +version = "1.6.4" if (project.hasProperty('buildnum')) { project.version = project.version + '.' + project.buildnum diff --git a/src/net/bdew/lib/data/base/TileDataSlots.scala b/src/net/bdew/lib/data/base/TileDataSlots.scala index 634825a..6b32756 100644 --- a/src/net/bdew/lib/data/base/TileDataSlots.scala +++ b/src/net/bdew/lib/data/base/TileDataSlots.scala @@ -19,10 +19,13 @@ import scala.collection.mutable trait TileDataSlots extends TileExtended { val dataSlots = mutable.HashMap.empty[String, DataSlot] var lastChange = 0L + var lastGuiPacket = 0L final val TRACE = false def doSave(kind: UpdateKind.Value, t: NBTTagCompound) { + if (kind == UpdateKind.GUI) + t.setLong("BDLib_TS", getWorldObj.getTotalWorldTime) for ((n, s) <- dataSlots if s.updateKind.contains(kind)) { s.save(t, kind) if (TRACE) printf("%s: %s S=> %s\n".format(kind, n, t.getTag(n))) @@ -30,6 +33,14 @@ trait TileDataSlots extends TileExtended { } def doLoad(kind: UpdateKind.Value, t: NBTTagCompound) { + if (kind == UpdateKind.GUI) { + val ts = t.getLong("BDLib_TS") + if (ts > lastGuiPacket) { + lastGuiPacket = ts + } else { + return + } + } for ((n, s) <- dataSlots if s.updateKind.contains(kind)) { if (TRACE) printf("%s: %s L<= %s\n".format(kind, n, t.getTag(n))) s.load(t, kind)