From b27b26837fc1ed779fb3a6e6f496d2f9e21d1e7b Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Tue, 20 Jul 2021 02:59:38 -0400 Subject: [PATCH] Coord docs & fix serious parallax issue --- .../iris/engine/parallax/ParallaxWorld.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/java/com/volmit/iris/engine/parallax/ParallaxWorld.java b/src/main/java/com/volmit/iris/engine/parallax/ParallaxWorld.java index c05f91da7..60f2b350b 100644 --- a/src/main/java/com/volmit/iris/engine/parallax/ParallaxWorld.java +++ b/src/main/java/com/volmit/iris/engine/parallax/ParallaxWorld.java @@ -25,6 +25,8 @@ import com.volmit.iris.engine.object.tile.TileData; import com.volmit.iris.engine.parallel.MultiBurst; import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KMap; +import com.volmit.iris.util.documentation.ChunkCoordinates; +import com.volmit.iris.util.documentation.RegionCoordinates; import com.volmit.iris.util.format.C; import com.volmit.iris.util.scheduling.J; import org.bukkit.block.TileState; @@ -85,16 +87,19 @@ public class ParallaxWorld implements ParallaxAccess { } } + @RegionCoordinates public boolean isLoaded(int x, int z) { return loadedRegions.containsKey(key(x, z)); } + @RegionCoordinates public void save(int x, int z) { if (isLoaded(x, z)) { save(getR(x, z)); } } + @RegionCoordinates public int unload(int x, int z) { long key = key(x, z); int v = 0; @@ -114,6 +119,7 @@ public class ParallaxWorld implements ParallaxAccess { return v; } + @RegionCoordinates public ParallaxRegion load(int x, int z) { if (isLoaded(x, z)) { return loadedRegions.get(key(x, z)); @@ -125,6 +131,7 @@ public class ParallaxWorld implements ParallaxAccess { return v; } + @RegionCoordinates public ParallaxRegion getR(int x, int z) { long key = key(x, z); @@ -137,70 +144,84 @@ public class ParallaxWorld implements ParallaxAccess { return region; } + @RegionCoordinates public ParallaxRegion getRW(int x, int z) { save.addIfMissing(key(x, z)); return getR(x, z); } + @RegionCoordinates private long key(int x, int z) { return (((long) x) << 32) | (((long) z) & 0xffffffffL); } + @ChunkCoordinates @Override public Hunk getBlocksR(int x, int z) { return getR(x >> 5, z >> 5).getBlockSlice().getR(x & 31, z & 31); } + @ChunkCoordinates @Override public Hunk getBlocksRW(int x, int z) { return getRW(x >> 5, z >> 5).getBlockSlice().getRW(x & 31, z & 31); } + @ChunkCoordinates @Override public Hunk> getTilesR(int x, int z) { return getR(x >> 5, z >> 5).getTileSlice().getR(x & 31, z & 31); } + @ChunkCoordinates @Override public Hunk> getTilesRW(int x, int z) { return getRW(x >> 5, z >> 5).getTileSlice().getRW(x & 31, z & 31); } + @ChunkCoordinates @Override public Hunk getObjectsR(int x, int z) { return getR(x >> 5, z >> 5).getObjectSlice().getR(x & 31, z & 31); } + @ChunkCoordinates @Override public Hunk getObjectsRW(int x, int z) { return getRW(x >> 5, z >> 5).getObjectSlice().getRW(x & 31, z & 31); } + @ChunkCoordinates @Override public Hunk getEntitiesRW(int x, int z) { return getRW(x >> 5, z >> 5).getEntitySlice().getRW(x & 31, z & 31); } + @ChunkCoordinates @Override public Hunk getEntitiesR(int x, int z) { return getRW(x >> 5, z >> 5).getEntitySlice().getR(x & 31, z & 31); } + @ChunkCoordinates @Override public Hunk getUpdatesR(int x, int z) { return getR(x >> 5, z >> 5).getUpdateSlice().getR(x & 31, z & 31); } + @ChunkCoordinates @Override public Hunk getUpdatesRW(int x, int z) { return getRW(x >> 5, z >> 5).getUpdateSlice().getRW(x & 31, z & 31); } + @ChunkCoordinates @Override public ParallaxChunkMeta getMetaR(int x, int z) { return getR(x >> 5, z >> 5).getMetaR(x & 31, z & 31); } + @ChunkCoordinates @Override public ParallaxChunkMeta getMetaRW(int x, int z) { return getRW(x >> 5, z >> 5).getMetaRW(x & 31, z & 31);