This commit is contained in:
Daniel Mills
2020-08-29 14:30:12 -04:00
parent ed9ddc0825
commit 20b715f7cb
41 changed files with 17273 additions and 14829 deletions

View File

@@ -10,6 +10,7 @@ import com.volmit.iris.util.KMap;
public class AtomicMulticache
{
public static boolean broken = false;
private final AtomicInteger x;
private final AtomicInteger z;
private final KMap<Long, Double> height;
@@ -29,6 +30,11 @@ public class AtomicMulticache
public void targetChunk(int x, int z)
{
if(broken)
{
return;
}
this.x.set(x);
this.z.set(z);
@@ -40,6 +46,11 @@ public class AtomicMulticache
public double getHeight(int x, int z, Supplier<Double> g)
{
if(broken)
{
return -5784;
}
Long pos = pos(x, z);
Double r = height.get(pos);
@@ -82,6 +93,10 @@ public class AtomicMulticache
public BiomeResult getRawBiome(int x, int z, Supplier<BiomeResult> g)
{
if(broken)
{
return null;
}
Long pos = pos(x, z);
BiomeResult r = rawBiome.get(pos);
@@ -96,11 +111,19 @@ public class AtomicMulticache
private long pos(int x, int z)
{
if(broken)
{
return 1;
}
return (((long) x) << 32) | (z & 0xffffffffL);
}
public void updateHeight(int x, int z, int h)
{
if(broken)
{
return;
}
height.put(pos(x, z), (double) h);
}
@@ -111,6 +134,11 @@ public class AtomicMulticache
public void drop()
{
if(broken)
{
return;
}
height.clear();
region.clear();
biome.clear();

View File

@@ -25,6 +25,7 @@ import lombok.Data;
public class AtomicSliver
{
public static final BlockData AIR = B.getBlockData("AIR");
public static boolean forgetful = false;
private transient KMap<Integer, IrisBiome> truebiome;
private transient KMap<Integer, Biome> biome;
private transient IrisLock lock = new IrisLock("Sliver");
@@ -59,16 +60,30 @@ public class AtomicSliver
public void update(int y)
{
if(forgetful)
{
return;
}
blockUpdates.add(y);
}
public void dontUpdate(int y)
{
if(forgetful)
{
return;
}
blockUpdates.remove(y);
}
public BlockData get(int h)
{
if(forgetful)
{
return null;
}
BlockData b = block.get(h);
last = M.ms();
@@ -82,6 +97,10 @@ public class AtomicSliver
public BlockData getOrNull(int h)
{
if(forgetful)
{
return null;
}
BlockData b = block.get(h);
last = M.ms();
@@ -95,6 +114,10 @@ public class AtomicSliver
public void set(int h, BlockData d)
{
if(forgetful)
{
return;
}
setSilently(h, d);
modified = true;
lock.lock();
@@ -104,6 +127,11 @@ public class AtomicSliver
public void setSilently(int h, BlockData d)
{
if(forgetful)
{
return;
}
if(d == null)
{
return;
@@ -133,6 +161,11 @@ public class AtomicSliver
public Biome getBiome(int h)
{
if(forgetful)
{
return Biome.THE_VOID;
}
last = M.ms();
return biome.containsKey(h) ? biome.get(h) : Biome.THE_VOID;
}
@@ -162,7 +195,13 @@ public class AtomicSliver
public void write(ChunkData d)
{
if(forgetful)
{
return;
}
lock.lock();
for(int i = 0; i <= highestBlock; i++)
{
if(block.get(i) == null)
@@ -180,6 +219,10 @@ public class AtomicSliver
public void write(BiomeGrid d)
{
if(forgetful)
{
return;
}
lock.lock();
for(int i = 0; i <= highestBiome; i++)
{
@@ -193,6 +236,10 @@ public class AtomicSliver
public void write(HeightMap height)
{
if(forgetful)
{
return;
}
lock.lock();
height.setHeight(x, z, highestBlock);
lock.unlock();
@@ -200,6 +247,10 @@ public class AtomicSliver
public void read(DataInputStream din) throws IOException
{
if(forgetful)
{
return;
}
lock.lock();
this.block = new KMap<Integer, BlockData>();
@@ -234,6 +285,10 @@ public class AtomicSliver
public void write(DataOutputStream dos) throws IOException
{
if(forgetful)
{
return;
}
lock.lock();
// Block Palette
@@ -278,6 +333,10 @@ public class AtomicSliver
public void insert(AtomicSliver atomicSliver)
{
if(forgetful)
{
return;
}
lock.lock();
for(int i = 0; i < 256; i++)
{
@@ -297,6 +356,10 @@ public class AtomicSliver
public void inject(ChunkData currentData)
{
if(forgetful)
{
return;
}
lock.lock();
for(int i = 0; i < 256; i++)
{
@@ -311,11 +374,21 @@ public class AtomicSliver
public boolean isOlderThan(long m)
{
if(forgetful)
{
return false;
}
return M.ms() - last > m;
}
public void inject(KSet<Integer> updatables)
{
if(forgetful)
{
return;
}
blockUpdates.addAll(updatables);
}
}