mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-12-31 12:56:35 +00:00
Tweaks
This commit is contained in:
@@ -89,7 +89,7 @@ public abstract class ContextualTerrainProvider implements TerrainProvider, List
|
||||
tickLatch = new ChronoLatch(650);
|
||||
perSecond = new ChronoLatch(1000);
|
||||
hlast = M.ms();
|
||||
cache = new AtomicMulticache((IrisTerrainProvider) this);
|
||||
cache = new AtomicMulticache((SkyTerrainProvider) this);
|
||||
CNG.creates = 0;
|
||||
generated = 0;
|
||||
ticks = 0;
|
||||
@@ -470,7 +470,6 @@ public abstract class ContextualTerrainProvider implements TerrainProvider, List
|
||||
Iris.instance.imsg(i, C.DARK_RED + "Iris Generator has crashed!");
|
||||
Iris.instance.imsg(i, C.RED + "- Check the console for the error.");
|
||||
Iris.instance.imsg(i, C.RED + "- To Regen, use /iris std open <dim>");
|
||||
Iris.instance.imsg(i, C.RED + "- To Retry the chunk, use /iris world retry");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ import lombok.EqualsAndHashCode;
|
||||
public abstract class DimensionalTerrainProvider extends ContextualTerrainProvider
|
||||
{
|
||||
private String dimensionName;
|
||||
private IrisDimension forceDimension;
|
||||
protected static final FastBlockData AIR = FastBlockData.of(Material.AIR);
|
||||
protected static final FastBlockData CAVE_AIR = B.get("CAVE_AIR");
|
||||
protected static final FastBlockData BEDROCK = FastBlockData.of(Material.BEDROCK);
|
||||
@@ -35,6 +36,7 @@ public abstract class DimensionalTerrainProvider extends ContextualTerrainProvid
|
||||
{
|
||||
super(t);
|
||||
setDimensionName(dimensionName);
|
||||
setForceDimension(null);
|
||||
|
||||
if(getDimensionName().isEmpty())
|
||||
{
|
||||
@@ -99,6 +101,11 @@ public abstract class DimensionalTerrainProvider extends ContextualTerrainProvid
|
||||
}
|
||||
}
|
||||
|
||||
protected void forceDimension(IrisDimension sky)
|
||||
{
|
||||
setForceDimension(sky);
|
||||
}
|
||||
|
||||
protected void useDefaultDimensionSetupNOW()
|
||||
{
|
||||
|
||||
@@ -124,6 +131,11 @@ public abstract class DimensionalTerrainProvider extends ContextualTerrainProvid
|
||||
|
||||
public IrisDimension getDimension()
|
||||
{
|
||||
if(forceDimension != null)
|
||||
{
|
||||
return forceDimension;
|
||||
}
|
||||
|
||||
IrisDimension d = loadDimension(getDimensionName());
|
||||
|
||||
return d;
|
||||
|
||||
@@ -253,6 +253,7 @@ public class IrisTerrainProvider extends SkyTerrainProvider implements IrisConte
|
||||
getData().dump();
|
||||
getCache().drop();
|
||||
onHotload();
|
||||
skyHotload();
|
||||
Iris.proj.updateWorkspace();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
package com.volmit.iris.gen;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.block.BlockDropItemEvent;
|
||||
import org.bukkit.event.entity.EntitySpawnEvent;
|
||||
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
|
||||
import org.bukkit.generator.ChunkGenerator.ChunkData;
|
||||
import org.bukkit.material.MaterialData;
|
||||
import org.bukkit.util.BlockVector;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.gen.scaffold.GeneratedChunk;
|
||||
import com.volmit.iris.gen.scaffold.TerrainChunk;
|
||||
import com.volmit.iris.gen.scaffold.TerrainTarget;
|
||||
@@ -7,14 +22,232 @@ import com.volmit.iris.util.RNG;
|
||||
|
||||
public abstract class SkyTerrainProvider extends PostBlockTerrainProvider
|
||||
{
|
||||
private IrisTerrainProvider actualSky;
|
||||
|
||||
public SkyTerrainProvider(TerrainTarget t, String dimensionName, int threads)
|
||||
{
|
||||
super(t, dimensionName, threads);
|
||||
}
|
||||
|
||||
public void skyHotload()
|
||||
{
|
||||
if(actualSky != null)
|
||||
{
|
||||
actualSky.onHotloaded();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected GeneratedChunk onGenerate(RNG random, int x, int z, TerrainChunk terrain)
|
||||
{
|
||||
return super.onGenerate(random, x, z, terrain);
|
||||
GeneratedChunk gc = super.onGenerate(random, x, z, terrain);
|
||||
|
||||
if(getDimension().hasSky())
|
||||
{
|
||||
getDimension().getSky().setSkyDimension(true);
|
||||
if(actualSky == null)
|
||||
{
|
||||
actualSky = new IrisTerrainProvider(getTarget(), "...", getThreads())
|
||||
{
|
||||
@Override
|
||||
public boolean shouldGenerateVanillaStructures()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldGenerateMobs()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldGenerateDecorations()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldGenerateCaves()
|
||||
{
|
||||
return getDimension().getSky().isVanillaCaves();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockVector computeSpawn(Function<BlockVector, Boolean> allowed)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSpawn(int x, int z)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSpawn(EntitySpawnEvent e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPlayerJoin(Player p)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFailure(Throwable e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onChunkUnloaded(Chunk c)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onChunkLoaded(Chunk c)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleDrops(BlockDropItemEvent e)
|
||||
{
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
actualSky.changeThreadCount(getThreads());
|
||||
actualSky.forceDimension(getDimension().getSky());
|
||||
actualSky.setMasterRandom(new RNG(getMasterRandom().nextParallelRNG(299455).nextLong()));
|
||||
Iris.info("Created Sky Dimension Provider");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
actualSky.onGenerate(random, x, z, new TerrainChunk()
|
||||
{
|
||||
@Override
|
||||
public void setRegion(int xMin, int yMin, int zMin, int xMax, int yMax, int zMax, BlockData blockData)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRegion(int xMin, int yMin, int zMin, int xMax, int yMax, int zMax, MaterialData material)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRegion(int xMin, int yMin, int zMin, int xMax, int yMax, int zMax, Material material)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlock(int x, int y, int z, MaterialData material)
|
||||
{
|
||||
gc.getTerrain().setBlock(x, 255 - y, z, material);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlock(int x, int y, int z, Material material)
|
||||
{
|
||||
gc.getTerrain().setBlock(x, 255 - y, z, material);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MaterialData getTypeAndData(int x, int y, int z)
|
||||
{
|
||||
return gc.getTerrain().getTypeAndData(x, 255 - y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Material getType(int x, int y, int z)
|
||||
{
|
||||
return gc.getTerrain().getType(x, 255 - y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte getData(int x, int y, int z)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRaw(ChunkData data)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlock(int x, int y, int z, BlockData blockData)
|
||||
{
|
||||
gc.getTerrain().setBlock(x, 255 - y, z, blockData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBiome(int x, int y, int z, Biome bio)
|
||||
{
|
||||
gc.getTerrain().setBiome(x, 255 - y, z, bio);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBiome(int x, int z, Biome bio)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void inject(BiomeGrid biome)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChunkData getRaw()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxHeight()
|
||||
{
|
||||
return gc.getTerrain().getMaxHeight();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockData getBlockData(int x, int y, int z)
|
||||
{
|
||||
return gc.getTerrain().getBlockData(x, 255 - y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Biome getBiome(int x, int y, int z)
|
||||
{
|
||||
return gc.getTerrain().getBiome(x, 255 - y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Biome getBiome(int x, int z)
|
||||
{
|
||||
return Biome.THE_VOID;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
catch(Throwable e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return gc;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.volmit.iris.gen.atomics;
|
||||
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||
import com.github.benmanes.caffeine.cache.LoadingCache;
|
||||
import com.volmit.iris.IrisSettings;
|
||||
import com.volmit.iris.gen.IrisTerrainProvider;
|
||||
import com.volmit.iris.gen.SkyTerrainProvider;
|
||||
import com.volmit.iris.object.IrisBiome;
|
||||
import com.volmit.iris.object.IrisRegion;
|
||||
import com.volmit.iris.util.ChunkPosition;
|
||||
@@ -18,7 +18,7 @@ public class AtomicMulticache
|
||||
private final LoadingCache<ChunkPosition, IrisBiome> rawBiome;
|
||||
private final LoadingCache<ChunkPosition, IrisRegion> region;
|
||||
|
||||
public AtomicMulticache(IrisTerrainProvider gen)
|
||||
public AtomicMulticache(SkyTerrainProvider gen)
|
||||
{
|
||||
height = Caffeine.newBuilder().maximumSize(getLimit()).build((c) -> gen.getNoiseHeight(c.getX(), c.getZ()) + gen.getFluidHeight());
|
||||
carvedHeight = Caffeine.newBuilder().maximumSize(getLimit()).build((c) ->
|
||||
|
||||
@@ -418,12 +418,20 @@ public class NMSChunkGenerator16_2_PAPER extends ChunkGenerator implements Provi
|
||||
{
|
||||
for(int zz = 0; zz < 16; zz++)
|
||||
{
|
||||
int y = gc.getHeight().getHeight(xx, zz);
|
||||
if(y < getSeaLevel())
|
||||
try
|
||||
{
|
||||
heightmap.a(xx, y, zz, Blocks.STONE.getBlockData());
|
||||
int y = gc.getHeight().getHeight(xx, zz);
|
||||
if(y < getSeaLevel())
|
||||
{
|
||||
heightmap.a(xx, y, zz, Blocks.STONE.getBlockData());
|
||||
}
|
||||
heightmap1.a(xx, Math.max(y, getSeaLevel()), zz, Blocks.STONE.getBlockData());
|
||||
}
|
||||
|
||||
catch(Throwable e)
|
||||
{
|
||||
|
||||
}
|
||||
heightmap1.a(xx, Math.max(y, getSeaLevel()), zz, Blocks.STONE.getBlockData());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user