From e0f6a087403246deac292a327f25d9ff72b39852 Mon Sep 17 00:00:00 2001 From: opfromthestart Date: Fri, 10 Sep 2021 14:14:18 -0400 Subject: [PATCH] Bug fixes -Now offset technically starts at 1, so any chunks with offset 0 are ignored. -Reduced number of unused chunks, storage efficiency is at about 99% (if null sectors are counted as useful) --- .../ru/windcorp/progressia/test/region/RegionFile.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/windcorp/progressia/test/region/RegionFile.java b/src/main/java/ru/windcorp/progressia/test/region/RegionFile.java index 385d97d..fa064b8 100644 --- a/src/main/java/ru/windcorp/progressia/test/region/RegionFile.java +++ b/src/main/java/ru/windcorp/progressia/test/region/RegionFile.java @@ -70,6 +70,8 @@ public class RegionFile { if (offset == 0) { continue; } + + offset--; Vec3i pos = new Vec3i(); pos.x = i / REGION_DIAMETER / REGION_DIAMETER; @@ -181,10 +183,10 @@ public class RegionFile { int outputLen = (int) file.length(); - int dataOffset = (int) (outputLen - HEADER_SIZE) / SECTOR_SIZE + 1; + int dataOffset = (int) Math.ceil((double) (outputLen - HEADER_SIZE) / SECTOR_SIZE); file.seek(definitionOffset); - file.writeInt(dataOffset); + file.writeInt(dataOffset+1); file.setLength(HEADER_SIZE + dataOffset * SECTOR_SIZE); return dataOffset; @@ -194,7 +196,7 @@ public class RegionFile { { int outputLen = (int) file.length(); - int dataOffset = (int) (outputLen - HEADER_SIZE) / SECTOR_SIZE + 1; + int dataOffset = (int) Math.ceil((double) (outputLen - HEADER_SIZE) / SECTOR_SIZE); file.setLength(HEADER_SIZE + dataOffset * SECTOR_SIZE);