9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-26 18:49:06 +00:00
This commit is contained in:
Daniel Mills
2021-07-17 00:36:16 -04:00
parent 595ba92f06
commit 6f4363e95b
24 changed files with 352 additions and 564 deletions

View File

@@ -32,7 +32,6 @@ import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisBiomeCustom;
import com.volmit.iris.engine.object.IrisCompat;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.engine.stream.utility.CachedStream2D;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.format.C;
@@ -319,8 +318,7 @@ public class Iris extends VolmitPlugin implements Listener {
return instance.getDataFolder("cache", "temp");
}
public void verifyDataPacksPost()
{
public void verifyDataPacksPost() {
File packs = new File("plugins/Iris/packs");
File dpacks = getDatapacksFolder();
@@ -342,9 +340,8 @@ public class Iris extends VolmitPlugin implements Listener {
if (j.getName().endsWith(".json")) {
IrisDimension dim = data.getDimensionLoader().load(j.getName().split("\\Q.\\E")[0]);
if(!verifyDataPackInstalled(dim))
{
bad = true;
if (!verifyDataPackInstalled(dim)) {
bad = true;
}
}
}
@@ -353,8 +350,7 @@ public class Iris extends VolmitPlugin implements Listener {
}
}
if(bad && INMS.get().supportsDataPacks())
{
if (bad && INMS.get().supportsDataPacks()) {
Iris.error("============================================================================");
Iris.error(C.ITALIC + "You need to restart your server to properly generate custom biomes.");
Iris.error(C.ITALIC + "By continuing, Iris will use backup biomes in place of the custom biomes.");
@@ -362,10 +358,8 @@ public class Iris extends VolmitPlugin implements Listener {
Iris.error(C.UNDERLINE + "IT IS HIGHLY RECOMMENDED YOU RESTART THE SERVER BEFORE GENERATING!");
Iris.error("============================================================================");
for(Player i : Bukkit.getOnlinePlayers())
{
if(i.isOp() || Iris.perm.has(i))
{
for (Player i : Bukkit.getOnlinePlayers()) {
if (i.isOp() || Iris.perm.has(i)) {
VolmitSender sender = new VolmitSender(i, getTag("WARNING"));
sender.sendMessage("There are some Iris Packs that have custom biomes in them");
sender.sendMessage("You need to restart your server to use these packs.");
@@ -374,27 +368,21 @@ public class Iris extends VolmitPlugin implements Listener {
}
}
public boolean verifyDataPackInstalled(IrisDimension dimension)
{
public boolean verifyDataPackInstalled(IrisDimension dimension) {
IrisDataManager idm = new IrisDataManager(getDataFolder("packs", dimension.getLoadKey()));
KSet<String> keys = new KSet<>();
boolean warn = false;
for(IrisBiome i : dimension.getAllBiomes(() -> idm))
{
if(i.isCustom())
{
for(IrisBiomeCustom j : i.getCustomDerivitives())
{
keys.add(dimension.getLoadKey() +":"+ j.getId());
for (IrisBiome i : dimension.getAllBiomes(() -> idm)) {
if (i.isCustom()) {
for (IrisBiomeCustom j : i.getCustomDerivitives()) {
keys.add(dimension.getLoadKey() + ":" + j.getId());
}
}
}
if(!INMS.get().supportsDataPacks())
{
if(!keys.isEmpty())
{
if (!INMS.get().supportsDataPacks()) {
if (!keys.isEmpty()) {
Iris.warn("===================================================================================");
Iris.warn("Pack " + dimension.getLoadKey() + " has " + keys.size() + " custom biome(s). ");
Iris.warn("Your server version does not yet support datapacks for iris.");
@@ -405,19 +393,16 @@ public class Iris extends VolmitPlugin implements Listener {
return true;
}
for(String i : keys)
{
for (String i : keys) {
Object o = INMS.get().getCustomBiomeBaseFor(i);
if(o == null)
{
if (o == null) {
Iris.warn("The Biome " + i + " is not registered on the server.");
warn = true;
}
}
if(warn)
{
if (warn) {
Iris.error("The Pack " + dimension.getLoadKey() + " is INCAPABLE of generating custom biomes, restart your server before generating with this pack!");
}

View File

@@ -72,8 +72,7 @@ public class CommandIrisStudioGoto extends MortarCommand {
}
if (sender.isPlayer()) {
if(looking.get())
{
if (looking.get()) {
sender.sendMessage("A Search is already running, please wait!");
}

View File

@@ -245,16 +245,11 @@ public class CommandIrisCreate extends MortarCommand {
World w = INMS.get().createWorld(wc);
world.set(w);
try
{
if(pregen.get() > 0)
{
try {
if (pregen.get() > 0) {
new Pregenerator(w, pregen.get());
}
}
catch(Throwable e)
{
} catch (Throwable e) {
Iris.reportError(e);
}

View File

@@ -43,7 +43,6 @@ import lombok.Data;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import javax.imageio.ImageIO;
@@ -55,8 +54,6 @@ import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Comparator;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;

View File

@@ -53,8 +53,7 @@ public interface INMSBinding {
void forceBiomeInto(int x, int y, int z, Object somethingVeryDirty, ChunkGenerator.BiomeGrid chunk);
default boolean supportsDataPacks()
{
default boolean supportsDataPacks() {
return false;
}
}

View File

@@ -43,8 +43,7 @@ public class NMSBinding17_1 implements INMSBinding {
private final KMap<Biome, Object> baseBiomeCache = new KMap<>();
private Field biomeStorageCache = null;
public boolean supportsDataPacks()
{
public boolean supportsDataPacks() {
return true;
}
@@ -108,10 +107,7 @@ public class NMSBinding17_1 implements INMSBinding {
public Object getCustomBiomeBaseFor(String mckey) {
try {
return getCustomBiomeRegistry().d(ResourceKey.a(IRegistry.aO, new MinecraftKey(mckey)));
}
catch(Throwable e)
{
} catch (Throwable e) {
Iris.reportError(e);
}

View File

@@ -160,8 +160,7 @@ public class IrisEngine extends BlockPopulator implements Engine {
Hunk<BlockData> blocks = vblocks;
switch(getDimension().getTerrainMode())
{
switch (getDimension().getTerrainMode()) {
case NORMAL -> {
getFramework().getEngineParallax().generateParallaxArea(x >> 4, z >> 4);
getFramework().getBiomeActuator().actuate(x, z, vbiomes);

View File

@@ -117,7 +117,7 @@ public class IrisEngineFramework implements EngineFramework {
@Override
public EngineActuator<BlockData> getTerrainActuator() {
return switch (getEngine().getDimension().getTerrainMode()){
return switch (getEngine().getDimension().getTerrainMode()) {
case NORMAL -> getTerrainNormalActuator();
case ISLANDS -> getTerrainIslandActuator();
};

View File

@@ -22,7 +22,6 @@ import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineParallaxManager;
import com.volmit.iris.engine.object.IrisFeaturePositional;
import com.volmit.iris.engine.stream.utility.CachedStream2D;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.scheduling.IrisLock;
import lombok.Getter;

View File

@@ -18,13 +18,11 @@
package com.volmit.iris.engine.actuator;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedActuator;
import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Getter;
@@ -64,13 +62,11 @@ public class IrisTerrainIslandActuator extends EngineAssignedActuator<BlockData>
realX = (int) modX(xf + x);
realZ = (int) modZ(zf + z);
if(getComplex().getIslandStream().get(realX, realZ))
{
if (getComplex().getIslandStream().get(realX, realZ)) {
surface = getComplex().getIslandHeightStream().get(realX, realZ).intValue();
depth = getComplex().getIslandDepthStream().get(realX, realZ).intValue();
for(i = surface - depth; i < surface; i++)
{
for (i = surface - depth; i < surface; i++) {
h.set(xf, i, zf, BEDROCK);
}
}

View File

@@ -22,7 +22,6 @@ import com.google.common.util.concurrent.AtomicDouble;
import com.google.gson.Gson;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.hunk.storage.AtomicDoubleHunk;
import com.volmit.iris.engine.object.IrisRegistrant;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;

View File

@@ -31,14 +31,12 @@ import com.volmit.iris.engine.data.DirectWorldWriter;
import com.volmit.iris.engine.data.chunk.TerrainChunk;
import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisBiomeCustom;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.engine.object.IrisPosition;
import com.volmit.iris.engine.parallel.BurstExecutor;
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.collection.KSet;
import com.volmit.iris.util.fakenews.FakeWorld;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form;
@@ -464,8 +462,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
generated++;
ps.end();
if(IrisSettings.get().getGeneral().isDebug())
{
if (IrisSettings.get().getGeneral().isDebug()) {
Iris.debug("Chunk " + C.GREEN + x + "," + z + C.LIGHT_PURPLE + " in " + C.YELLOW + Form.duration(ps.getMillis(), 2) + C.LIGHT_PURPLE + " Rate: " + C.BLUE + Form.f(getGeneratedPerSecond(), 0) + "/s");
}

View File

@@ -199,11 +199,10 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
IrisLock getFeatureLock();
default void forEachFeature(double x, double z, Consumer<IrisFeaturePositional> f) {
long key = Cache.key(((int)x)>>4, ((int)z) >> 4);
long key = Cache.key(((int) x) >> 4, ((int) z) >> 4);
for(IrisFeaturePositional ipf : getFeatureCache().compute(key, (ke, v) -> {
if(v != null)
{
for (IrisFeaturePositional ipf : getFeatureCache().compute(key, (ke, v) -> {
if (v != null) {
return v;
}
@@ -226,8 +225,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
ParallaxChunkMeta m = getParallaxAccess().getMetaR(i + cx, j + cz);
try {
synchronized (m.getFeatures())
{
synchronized (m.getFeatures()) {
for (IrisFeaturePositional k : m.getFeatures()) {
if (k.shouldFilter(x, z)) {
pos.add(k);
@@ -244,16 +242,14 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
getFeatureLock().unlock();
return pos;
}))
{
})) {
f.accept(ipf);
}
}
@SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter")
default void generateParallaxArea(int x, int z) {
if(!getEngine().getDimension().isPlaceObjects())
{
if (!getEngine().getDimension().isPlaceObjects()) {
return;
}

View File

@@ -354,9 +354,8 @@ public class IrisInterpolation {
//@done
}
public static double getTrilinear(int x, int y, int z, double rad, NoiseProvider3 n)
{
return getTrilinear(x,y,z,rad,rad,rad,n);
public static double getTrilinear(int x, int y, int z, double rad, NoiseProvider3 n) {
return getTrilinear(x, y, z, rad, rad, rad, n);
}
public static double getTrilinear(int x, int y, int z, double radx, double rady, double radz, NoiseProvider3 n) {
@@ -387,7 +386,7 @@ public class IrisInterpolation {
}
public static double getTricubic(int x, int y, int z, double rad, NoiseProvider3 n) {
return getTricubic(x,y,z,rad,rad,rad,n);
return getTricubic(x, y, z, rad, rad, rad, n);
}
public static double getTricubic(int x, int y, int z, double radx, double rady, double radz, NoiseProvider3 n) {
@@ -841,19 +840,19 @@ public class IrisInterpolation {
}
public static double getNoise3D(InterpolationMethod3D method, int x, int y, int z, double radx, double rady, double radz, NoiseProvider3 n) {
return switch (method){
case TRILINEAR -> getTrilinear(x,y,z,radx, rady, radz, n);
case TRICUBIC -> getTricubic(x,y,z,radx, rady, radz, n);
case TRIHERMITE -> getTrihermite(x,y,z,radx, rady, radz, n);
return switch (method) {
case TRILINEAR -> getTrilinear(x, y, z, radx, rady, radz, n);
case TRICUBIC -> getTricubic(x, y, z, radx, rady, radz, n);
case TRIHERMITE -> getTrihermite(x, y, z, radx, rady, radz, n);
};
}
public static double getNoise3D(InterpolationMethod3D method, int x, int y, int z, double rad, NoiseProvider3 n) {
return switch (method){
case TRILINEAR -> getTrilinear(x,y,z,rad, rad, rad, n);
case TRICUBIC -> getTricubic(x,y,z,rad, rad, rad, n);
case TRIHERMITE -> getTrihermite(x,y,z,rad, rad, rad, n);
return switch (method) {
case TRILINEAR -> getTrilinear(x, y, z, rad, rad, rad, n);
case TRICUBIC -> getTricubic(x, y, z, rad, rad, rad, n);
case TRIHERMITE -> getTrihermite(x, y, z, rad, rad, rad, n);
};
}

View File

@@ -25,8 +25,6 @@ import com.volmit.iris.engine.framework.EngineAssignedModifier;
import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.common.CaveResult;
import com.volmit.iris.engine.parallel.BurstExecutor;
import com.volmit.iris.engine.parallel.MultiBurst;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.Material;

View File

@@ -450,15 +450,13 @@ public class IrisBiome extends IrisRegistrant implements IRare {
int gg = 0;
for(IrisObjectPlacement i : getObjects())
{
for(IrisObject j : data.getObjectLoader().loadAll(i.getPlace()))
{
for (IrisObjectPlacement i : getObjects()) {
for (IrisObject j : data.getObjectLoader().loadAll(i.getPlace())) {
gg = Math.max(gg, j.getH());
}
}
return maxHeight + gg+3;
return maxHeight + gg + 3;
});
}

View File

@@ -49,8 +49,7 @@ public class IrisStyledRange {
return min;
}
if(style.isFlat())
{
if (style.isFlat()) {
return M.lerp(min, max, 0.5);
}

View File

@@ -30,7 +30,6 @@ import lombok.Data;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Function;
@AllArgsConstructor

View File

@@ -65,13 +65,11 @@ public interface ProceduralStream<T> extends ProceduralLayer, Interpolated<T> {
return new FunctionStream<>(f, f2, helper);
}
default ProceduralStream<Boolean> chance(double chance)
{
default ProceduralStream<Boolean> chance(double chance) {
return of((x, z) -> getDouble(x, z) < chance, Interpolated.BOOLEAN);
}
default ProceduralStream<Boolean> seededChance(RNG brng, long rootSeed, double chance)
{
default ProceduralStream<Boolean> seededChance(RNG brng, long rootSeed, double chance) {
RNG rng = brng.nextParallelRNG(rootSeed - 3995L);
return of((x, z) -> {
double ch = getDouble(x, z);
@@ -365,11 +363,10 @@ public interface ProceduralStream<T> extends ProceduralLayer, Interpolated<T> {
return new FittedStream<T>(this, min, max);
}
default ProceduralStream<Double> style(RNG rng, IrisStyledRange range)
{
default ProceduralStream<Double> style(RNG rng, IrisStyledRange range) {
return ProceduralStream.of((x, z) -> {
double d = getDouble(x, z);
return range.get(rng,d, -d);
return range.get(rng, d, -d);
}, Interpolated.DOUBLE);
}

View File

@@ -18,8 +18,8 @@
package com.volmit.iris.engine.stream.interpolation;
import com.volmit.iris.engine.interpolation.IrisInterpolation;
import com.volmit.iris.engine.interpolation.InterpolationMethod;
import com.volmit.iris.engine.interpolation.IrisInterpolation;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
import com.volmit.iris.util.function.NoiseProvider;

View File

@@ -24,8 +24,6 @@ import com.volmit.iris.engine.cache.Cache;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
import java.util.concurrent.atomic.AtomicInteger;
public class CachedStream2D<T> extends BasicStream<T> implements ProceduralStream<T> {
private final ProceduralStream<T> stream;
private final ConcurrentLinkedHashMap<Long, T> cache;
@@ -52,8 +50,7 @@ public class CachedStream2D<T> extends BasicStream<T> implements ProceduralStrea
@Override
public T get(double x, double z) {
if(IrisComplex.cacheLock.get())
{
if (IrisComplex.cacheLock.get()) {
return stream.get((int) x, (int) z);
}

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.util.data;
import com.volmit.iris.Iris;
import org.bukkit.block.Biome;
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
import org.jetbrains.annotations.NotNull;