ChunkPosition -> Position2

This commit is contained in:
Daniel Mills
2021-07-19 02:00:07 -04:00
parent 7ecb139dba
commit b25bf70224
8 changed files with 37 additions and 38 deletions
@@ -20,7 +20,7 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.gui.IrisExplorer; import com.volmit.iris.core.gui.NoiseExplorerGUI;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.plugin.Command; import com.volmit.iris.util.plugin.Command;
import com.volmit.iris.util.plugin.MortarCommand; import com.volmit.iris.util.plugin.MortarCommand;
@@ -57,7 +57,7 @@ public class CommandIrisStudioExplorer extends MortarCommand {
return true; return true;
} }
IrisExplorer.launch(); NoiseExplorerGUI.launch();
sender.sendMessage("Opening Noise Explorer!"); sender.sendMessage("Opening Noise Explorer!");
} }
return true; return true;
@@ -21,7 +21,7 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager; import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.gui.IrisExplorer; import com.volmit.iris.core.gui.NoiseExplorerGUI;
import com.volmit.iris.engine.object.IrisGenerator; import com.volmit.iris.engine.object.IrisGenerator;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
@@ -70,7 +70,7 @@ public class CommandIrisStudioExplorerGenerator extends MortarCommand {
if (generator != null) { if (generator != null) {
long finalSeed = seed; long finalSeed = seed;
IrisExplorer.launch((x, z) -> NoiseExplorerGUI.launch((x, z) ->
generator.getHeight(x, z, new RNG(finalSeed).nextParallelRNG(3245).lmax()), "Gen: " + generator.getLoadKey()); generator.getHeight(x, z, new RNG(finalSeed).nextParallelRNG(3245).lmax()), "Gen: " + generator.getLoadKey());
sender.sendMessage("Opening Noise Explorer for gen " + generator.getLoadKey() + " (" + generator.getLoader().getDataFolder().getName() + ")"); sender.sendMessage("Opening Noise Explorer for gen " + generator.getLoadKey() + " (" + generator.getLoader().getDataFolder().getName() + ")");
@@ -20,7 +20,7 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.gui.IrisVision; import com.volmit.iris.core.gui.VisionGUI;
import com.volmit.iris.engine.IrisWorlds; import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.IrisAccess; import com.volmit.iris.engine.framework.IrisAccess;
@@ -57,12 +57,12 @@ public class CommandIrisStudioMap extends MortarCommand {
try { try {
IrisAccess g = Iris.proj.getActiveProject().getActiveProvider(); IrisAccess g = Iris.proj.getActiveProject().getActiveProvider();
IrisVision.launch(g, 0); VisionGUI.launch(g, 0);
sender.sendMessage("Opening Map!"); sender.sendMessage("Opening Map!");
} catch (Throwable e) { } catch (Throwable e) {
Iris.reportError(e); Iris.reportError(e);
IrisAccess g = IrisWorlds.access(sender.player().getWorld()); IrisAccess g = IrisWorlds.access(sender.player().getWorld());
IrisVision.launch(g, 0); VisionGUI.launch(g, 0);
sender.sendMessage("Opening Map!"); sender.sendMessage("Opening Map!");
} }
return true; return true;
@@ -29,12 +29,11 @@ import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.function.Function2; import com.volmit.iris.util.function.Function2;
import com.volmit.iris.util.function.Function3; import com.volmit.iris.util.function.Function3;
import com.volmit.iris.util.math.ChunkPosition; import com.volmit.iris.util.math.Position2;
import com.volmit.iris.util.math.M; import com.volmit.iris.util.math.M;
import com.volmit.iris.util.oldnbt.ByteArrayTag; import com.volmit.iris.util.oldnbt.ByteArrayTag;
import com.volmit.iris.util.oldnbt.CompoundTag; import com.volmit.iris.util.oldnbt.CompoundTag;
import com.volmit.iris.util.oldnbt.Tag; import com.volmit.iris.util.oldnbt.Tag;
import io.papermc.lib.PaperLib;
import org.bukkit.block.TileState; import org.bukkit.block.TileState;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
@@ -51,9 +50,9 @@ public class HunkRegionSlice<T> {
private final HunkIOAdapter<T> adapter; private final HunkIOAdapter<T> adapter;
private final CompoundTag compound; private final CompoundTag compound;
private final String key; private final String key;
private final KMap<ChunkPosition, Hunk<T>> loadedChunks; private final KMap<Position2, Hunk<T>> loadedChunks;
private final KMap<ChunkPosition, Long> lastUse; private final KMap<Position2, Long> lastUse;
private final KSet<ChunkPosition> save; private final KSet<Position2> save;
private final int height; private final int height;
public HunkRegionSlice(int height, Function3<Integer, Integer, Integer, Hunk<T>> factory, HunkIOAdapter<T> adapter, CompoundTag compound, String key) { public HunkRegionSlice(int height, Function3<Integer, Integer, Integer, Hunk<T>> factory, HunkIOAdapter<T> adapter, CompoundTag compound, String key) {
@@ -73,14 +72,14 @@ public class HunkRegionSlice<T> {
if (loadedChunks.size() != lastUse.size()) { if (loadedChunks.size() != lastUse.size()) {
Iris.warn("Incorrect chunk use counts in " + key); Iris.warn("Incorrect chunk use counts in " + key);
for (ChunkPosition i : lastUse.k()) { for (Position2 i : lastUse.k()) {
if (!loadedChunks.containsKey(i)) { if (!loadedChunks.containsKey(i)) {
Iris.warn(" Missing LoadChunkKey " + i); Iris.warn(" Missing LoadChunkKey " + i);
} }
} }
} }
for (ChunkPosition i : lastUse.k()) { for (Position2 i : lastUse.k()) {
Long l = lastUse.get(i); Long l = lastUse.get(i);
if (l == null || M.ms() - l > t) { if (l == null || M.ms() - l > t) {
v++; v++;
@@ -104,7 +103,7 @@ public class HunkRegionSlice<T> {
try try
{ {
for (ChunkPosition i : save.copy()) { for (Position2 i : save.copy()) {
if (i == null) { if (i == null) {
continue; continue;
} }
@@ -172,7 +171,7 @@ public class HunkRegionSlice<T> {
public synchronized int unloadAll() { public synchronized int unloadAll() {
int v = 0; int v = 0;
for (ChunkPosition i : loadedChunks.k()) { for (Position2 i : loadedChunks.k()) {
unload(i.getX(), i.getZ()); unload(i.getX(), i.getZ());
v++; v++;
} }
@@ -193,7 +192,7 @@ public class HunkRegionSlice<T> {
} }
public boolean isLoaded(int x, int z) { public boolean isLoaded(int x, int z) {
return lock.withResult(x, z, () -> loadedChunks.containsKey(new ChunkPosition(x, z))); return lock.withResult(x, z, () -> loadedChunks.containsKey(new Position2(x, z)));
} }
public void save(int x, int z) { public void save(int x, int z) {
@@ -206,7 +205,7 @@ public class HunkRegionSlice<T> {
public void unload(int x, int z) { public void unload(int x, int z) {
lock.with(x, z, () -> { lock.with(x, z, () -> {
ChunkPosition key = new ChunkPosition(x, z); Position2 key = new Position2(x, z);
if (isLoaded(x, z)) { if (isLoaded(x, z)) {
if (save.contains(key)) { if (save.contains(key)) {
save(x, z); save(x, z);
@@ -222,7 +221,7 @@ public class HunkRegionSlice<T> {
public Hunk<T> load(int x, int z) { public Hunk<T> load(int x, int z) {
return lock.withResult(x, z, () -> { return lock.withResult(x, z, () -> {
if (isLoaded(x, z)) { if (isLoaded(x, z)) {
return loadedChunks.get(new ChunkPosition(x, z)); return loadedChunks.get(new Position2(x, z));
} }
Hunk<T> v = null; Hunk<T> v = null;
@@ -240,7 +239,7 @@ public class HunkRegionSlice<T> {
v = factory.apply(16, height, 16); v = factory.apply(16, height, 16);
} }
loadedChunks.put(new ChunkPosition(x, z), v); loadedChunks.put(new Position2(x, z), v);
return v; return v;
}); });
@@ -248,7 +247,7 @@ public class HunkRegionSlice<T> {
public Hunk<T> get(int x, int z) { public Hunk<T> get(int x, int z) {
return lock.withResult(x, z, () -> { return lock.withResult(x, z, () -> {
ChunkPosition key = new ChunkPosition(x, z); Position2 key = new Position2(x, z);
Hunk<T> c = loadedChunks.get(key); Hunk<T> c = loadedChunks.get(key);
@@ -256,7 +255,7 @@ public class HunkRegionSlice<T> {
c = load(x, z); c = load(x, z);
} }
lastUse.put(new ChunkPosition(x, z), M.ms()); lastUse.put(new Position2(x, z), M.ms());
return c; return c;
}); });
@@ -268,7 +267,7 @@ public class HunkRegionSlice<T> {
public Hunk<T> getRW(int x, int z) { public Hunk<T> getRW(int x, int z) {
return lock.withResult(x, z, () -> { return lock.withResult(x, z, () -> {
save.add(new ChunkPosition(x, z)); save.add(new Position2(x, z));
return get(x, z); return get(x, z);
}); });
} }
@@ -25,7 +25,7 @@ import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.noise.CNG; import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.object.NoiseStyle; import com.volmit.iris.engine.object.NoiseStyle;
import com.volmit.iris.util.math.BlockPosition; import com.volmit.iris.util.math.BlockPosition;
import com.volmit.iris.util.math.ChunkPosition; import com.volmit.iris.util.math.Position2;
import com.volmit.iris.util.math.MathHelper; import com.volmit.iris.util.math.MathHelper;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.scheduling.PrecisionStopwatch; import com.volmit.iris.util.scheduling.PrecisionStopwatch;
@@ -76,7 +76,7 @@ public class IrisRavineModifier extends EngineAssignedModifier<BlockData> {
private final float[] ravineCache = new float[1024]; private final float[] ravineCache = new float[1024];
private void doRavine(long seed, int tx, int tz, ChunkPosition pos, double sx, double sy, double sz, float f, float f2, float f3, @SuppressWarnings("SameParameterValue") int n3, @SuppressWarnings("SameParameterValue") int n4, @SuppressWarnings("SameParameterValue") double d4, RNG bbx, Hunk<BlockData> terrain) { private void doRavine(long seed, int tx, int tz, Position2 pos, double sx, double sy, double sz, float f, float f2, float f3, @SuppressWarnings("SameParameterValue") int n3, @SuppressWarnings("SameParameterValue") int n4, @SuppressWarnings("SameParameterValue") double d4, RNG bbx, Hunk<BlockData> terrain) {
int n5; int n5;
RNG random = new RNG(seed); RNG random = new RNG(seed);
double x = tx * 16 + 8; double x = tx * 16 + 8;
@@ -248,7 +248,7 @@ public class IrisRavineModifier extends EngineAssignedModifier<BlockData> {
//@done //@done
} }
public void genRavines(int n, int n2, ChunkPosition chunkSnapshot, RNG bbb, Hunk<BlockData> terrain) { public void genRavines(int n, int n2, Position2 chunkSnapshot, RNG bbb, Hunk<BlockData> terrain) {
RNG b = this.rng.nextParallelRNG(21949666); RNG b = this.rng.nextParallelRNG(21949666);
RNG bx = this.rng.nextParallelRNG(6676121); RNG bx = this.rng.nextParallelRNG(6676121);
long l = b.nextLong(); long l = b.nextLong();
@@ -263,7 +263,7 @@ public class IrisRavineModifier extends EngineAssignedModifier<BlockData> {
} }
} }
private void doRavines(int tx, int tz, int sx, int sz, ChunkPosition chunkSnapshot, RNG b, Hunk<BlockData> terrain) { private void doRavines(int tx, int tz, int sx, int sz, Position2 chunkSnapshot, RNG b, Hunk<BlockData> terrain) {
if (b.nextInt(getDimension().getRavineRarity()) != 0) { if (b.nextInt(getDimension().getRavineRarity()) != 0) {
return; return;
} }
@@ -281,6 +281,6 @@ public class IrisRavineModifier extends EngineAssignedModifier<BlockData> {
} }
public void generateRavines(RNG nextParallelRNG, int x, int z, Hunk<BlockData> terrain) { public void generateRavines(RNG nextParallelRNG, int x, int z, Hunk<BlockData> terrain) {
genRavines(x, z, new ChunkPosition(x, z), nextParallelRNG.nextParallelRNG(x).nextParallelRNG(z), terrain); genRavines(x, z, new Position2(x, z), nextParallelRNG.nextParallelRNG(x).nextParallelRNG(z), terrain);
} }
} }
@@ -26,7 +26,7 @@ import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.object.annotations.*; import com.volmit.iris.engine.object.annotations.*;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.io.IO; import com.volmit.iris.util.io.IO;
import com.volmit.iris.util.math.ChunkPosition; import com.volmit.iris.util.math.Position2;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@@ -336,7 +336,7 @@ public class IrisDimension extends IrisRegistrant {
@Desc("Define biome mutations for this dimension") @Desc("Define biome mutations for this dimension")
private KList<IrisBiomeMutation> mutations = new KList<>(); private KList<IrisBiomeMutation> mutations = new KList<>();
private final transient AtomicCache<ChunkPosition> parallaxSize = new AtomicCache<>(); private final transient AtomicCache<Position2> parallaxSize = new AtomicCache<>();
private final transient AtomicCache<CNG> rockLayerGenerator = new AtomicCache<>(); private final transient AtomicCache<CNG> rockLayerGenerator = new AtomicCache<>();
private final transient AtomicCache<CNG> fluidLayerGenerator = new AtomicCache<>(); private final transient AtomicCache<CNG> fluidLayerGenerator = new AtomicCache<>();
private final transient AtomicCache<CNG> coordFracture = new AtomicCache<>(); private final transient AtomicCache<CNG> coordFracture = new AtomicCache<>();
@@ -30,7 +30,7 @@ import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.math.AxisAlignedBB; import com.volmit.iris.util.math.AxisAlignedBB;
import com.volmit.iris.util.math.BlockPosition; import com.volmit.iris.util.math.BlockPosition;
import com.volmit.iris.util.math.ChunkPosition; import com.volmit.iris.util.math.Position2;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.scheduling.IrisLock; import com.volmit.iris.util.scheduling.IrisLock;
import lombok.Data; import lombok.Data;
@@ -466,7 +466,7 @@ public class IrisObject extends IrisRegistrant {
boolean warped = !config.getWarp().isFlat(); boolean warped = !config.getWarp().isFlat();
boolean stilting = (config.getMode().equals(ObjectPlaceMode.STILT) || config.getMode().equals(ObjectPlaceMode.FAST_STILT)); boolean stilting = (config.getMode().equals(ObjectPlaceMode.STILT) || config.getMode().equals(ObjectPlaceMode.FAST_STILT));
KMap<ChunkPosition, Integer> heightmap = config.getSnow() > 0 ? new KMap<>() : null; KMap<Position2, Integer> heightmap = config.getSnow() > 0 ? new KMap<>() : null;
int spinx = rng.imax() / 1000; int spinx = rng.imax() / 1000;
int spiny = rng.imax() / 1000; int spiny = rng.imax() / 1000;
int spinz = rng.imax() / 1000; int spinz = rng.imax() / 1000;
@@ -638,7 +638,7 @@ public class IrisObject extends IrisRegistrant {
} }
if (heightmap != null) { if (heightmap != null) {
ChunkPosition pos = new ChunkPosition(xx, zz); Position2 pos = new Position2(xx, zz);
if (!heightmap.containsKey(pos)) { if (!heightmap.containsKey(pos)) {
heightmap.put(pos, yy); heightmap.put(pos, yy);
@@ -727,7 +727,7 @@ public class IrisObject extends IrisRegistrant {
if (heightmap != null) { if (heightmap != null) {
RNG rngx = rng.nextParallelRNG(3468854); RNG rngx = rng.nextParallelRNG(3468854);
for (ChunkPosition i : heightmap.k()) { for (Position2 i : heightmap.k()) {
int vx = i.getX(); int vx = i.getX();
int vy = heightmap.get(i); int vy = heightmap.get(i);
int vz = i.getZ(); int vz = i.getZ();
@@ -18,11 +18,11 @@
package com.volmit.iris.util.math; package com.volmit.iris.util.math;
public class ChunkPosition { public class Position2 {
private int x; private int x;
private int z; private int z;
public ChunkPosition(int x, int z) { public Position2(int x, int z) {
this.x = x; this.x = x;
this.z = z; this.z = z;
} }
@@ -57,13 +57,13 @@ public class ChunkPosition {
if (this == obj) { if (this == obj) {
return true; return true;
} }
if (!(obj instanceof ChunkPosition other)) { if (!(obj instanceof Position2 other)) {
return false; return false;
} }
return x == other.x && z == other.z; return x == other.x && z == other.z;
} }
public double distance(ChunkPosition center) { public double distance(Position2 center) {
return Math.pow(center.getX() - x, 2) + Math.pow(center.getZ() - z, 2); return Math.pow(center.getX() - x, 2) + Math.pow(center.getZ() - z, 2);
} }
} }