From c60c3f25edce4756a672292d36612ce4ce9c5fd1 Mon Sep 17 00:00:00 2001 From: David Vierra Date: Thu, 31 Jan 2013 13:11:22 -1000 Subject: [PATCH] Added: RegionFile now touches the chunk's timestamp field whenever a chunk is saved. --- regionfile.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/regionfile.py b/regionfile.py index ce06a5f..7f30aa6 100644 --- a/regionfile.py +++ b/regionfile.py @@ -4,6 +4,7 @@ import struct import zlib from numpy import fromstring +import time from mclevelbase import notclosing, RegionMalformed, ChunkNotPresent import nbt @@ -287,6 +288,8 @@ class MCRegionFile(object): self.setOffset(cx, cz, sectorNumber << 8 | sectorsNeeded) self.writeSector(sectorNumber, data, format) + self.setTimestamp(cx, cz) + def writeSector(self, sectorNumber, data, format): with self.file as f: log.debug("REGION: Writing sector {0}".format(sectorNumber)) @@ -313,6 +316,22 @@ class MCRegionFile(object): f.seek(0) f.write(self.offsets.tostring()) + def getTimestamp(self, cx, cz): + cx &= 0x1f + cz &= 0x1f + return self.modTimes[cx + cz * 32] + + def setTimestamp(self, cx, cz, timestamp = None): + if timestamp is None: + timestamp = time.time() + + cx &= 0x1f + cz &= 0x1f + self.modTimes[cx + cz * 32] = timestamp + with self.file as f: + f.seek(self.SECTOR_BYTES) + f.write(self.modTimes.tostring()) + SECTOR_BYTES = 4096 SECTOR_INTS = SECTOR_BYTES / 4 CHUNK_HEADER_SIZE = 5