mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-19 02:36:59 +00:00
Implement baseline caves
This commit is contained in:
parent
cfc8458841
commit
a9120edb70
30
.idea/workspace.xml
generated
30
.idea/workspace.xml
generated
@ -44,7 +44,7 @@
|
||||
<component name="PropertiesComponent">
|
||||
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
||||
<property name="dart.analysis.tool.window.visible" value="false" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/src/main/java/com/volmit/iris/v2/nms" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/src/main/java/com/volmit/iris/v2/generator/nms" />
|
||||
<property name="project.structure.last.edited" value="Modules" />
|
||||
<property name="project.structure.proportion" value="0.15" />
|
||||
<property name="project.structure.side.proportion" value="0.23643054" />
|
||||
@ -67,14 +67,14 @@
|
||||
<recent name="com.volmit.iris.v2.scaffold.stream.utility" />
|
||||
</key>
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="C:\Users\cyberpwn\Documents\development\workspace\Iris\src\main\java\com\volmit\iris\v2\generator\nms" />
|
||||
<recent name="C:\Users\cyberpwn\Documents\development\workspace\Iris\src\main\java\com\volmit\iris\v2\nms" />
|
||||
<recent name="C:\Users\cyberpwn\Documents\development\workspace\Iris\src\main\java\com\volmit\iris\v2\nms\mc16\r2" />
|
||||
<recent name="C:\Users\cyberpwn\Documents\development\workspace\Iris\src\main\java\com\volmit\iris\v2\nms\abstract" />
|
||||
<recent name="C:\Users\cyberpwn\Documents\development\workspace\Iris\src\main\java\com\volmit\iris\v2\nms\mc16" />
|
||||
<recent name="C:\Users\cyberpwn\Documents\development\workspace\Iris\src\main\java\com\volmit\iris\gen\v2\scaffold\hunk" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="Maven.Iris Release">
|
||||
<component name="RunManager" selected="Maven.Iris Build">
|
||||
<configuration default="true" type="MavenRunConfiguration" factoryName="Maven">
|
||||
<MavenSettings>
|
||||
<option name="myGeneralSettings" />
|
||||
@ -127,10 +127,10 @@
|
||||
<screen x="0" y="0" width="1920" height="1050" />
|
||||
</state>
|
||||
<state x="410" y="171" width="1234" height="708" key="#com.intellij.execution.impl.EditConfigurationsDialog/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1603947263834" />
|
||||
<state x="718" y="163" key="#com.intellij.ide.util.MemberChooser" timestamp="1604238671017">
|
||||
<state x="718" y="163" key="#com.intellij.ide.util.MemberChooser" timestamp="1604254453027">
|
||||
<screen x="0" y="0" width="1920" height="1050" />
|
||||
</state>
|
||||
<state x="718" y="163" key="#com.intellij.ide.util.MemberChooser/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1604238671017" />
|
||||
<state x="718" y="163" key="#com.intellij.ide.util.MemberChooser/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1604254453027" />
|
||||
<state x="675" y="394" key="#com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesDialog.classes" timestamp="1603943257126">
|
||||
<screen x="0" y="0" width="1920" height="1050" />
|
||||
</state>
|
||||
@ -147,22 +147,22 @@
|
||||
<screen x="0" y="0" width="1920" height="1050" />
|
||||
</state>
|
||||
<state x="485" y="234" key="#com.intellij.structuralsearch.plugin.ui.StructuralSearchDialog/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1603860057506" />
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.bottom" timestamp="1604243429163">
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.bottom" timestamp="1604254677423">
|
||||
<screen x="0" y="0" width="1920" height="1050" />
|
||||
</state>
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.bottom/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1604243429163" />
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.center" timestamp="1604243429163">
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.bottom/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1604254677423" />
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.center" timestamp="1604254677423">
|
||||
<screen x="0" y="0" width="1920" height="1050" />
|
||||
</state>
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.center/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1604243429163" />
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.left" timestamp="1604243429163">
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.center/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1604254677423" />
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.left" timestamp="1604254677423">
|
||||
<screen x="0" y="0" width="1920" height="1050" />
|
||||
</state>
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.left/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1604243429163" />
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.right" timestamp="1604243429163">
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.left/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1604254677423" />
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.right" timestamp="1604254677423">
|
||||
<screen x="0" y="0" width="1920" height="1050" />
|
||||
</state>
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.right/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1604243429163" />
|
||||
<state width="1921" height="983" key="GridCell.Tab.0.right/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1604254677423" />
|
||||
<state x="312" y="0" key="SettingsEditor" timestamp="1603947206451">
|
||||
<screen x="0" y="0" width="1920" height="1050" />
|
||||
</state>
|
||||
@ -175,9 +175,9 @@
|
||||
<screen x="0" y="0" width="1920" height="1050" />
|
||||
</state>
|
||||
<state x="532" y="239" key="run.anything.popup/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1603859771295" />
|
||||
<state x="539" y="15" width="840" height="1034" key="search.everywhere.popup" timestamp="1604241752782">
|
||||
<state x="539" y="15" width="840" height="1034" key="search.everywhere.popup" timestamp="1604253140774">
|
||||
<screen x="0" y="0" width="1920" height="1050" />
|
||||
</state>
|
||||
<state x="539" y="15" width="840" height="1034" key="search.everywhere.popup/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1604241752782" />
|
||||
<state x="539" y="15" width="840" height="1034" key="search.everywhere.popup/-1920.0.1920.1050/1920.0.1920.1050/0.0.1920.1050@0.0.1920.1050" timestamp="1604253140774" />
|
||||
</component>
|
||||
</project>
|
@ -1,6 +1,8 @@
|
||||
package com.volmit.iris.v2.generator;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.util.J;
|
||||
import com.volmit.iris.util.M;
|
||||
import com.volmit.iris.v2.scaffold.engine.Engine;
|
||||
import com.volmit.iris.v2.scaffold.engine.EngineFramework;
|
||||
import com.volmit.iris.v2.scaffold.engine.EngineTarget;
|
||||
@ -37,17 +39,24 @@ public class IrisEngine implements Engine
|
||||
public void generate(int x, int z, Hunk<BlockData> blocks, Hunk<Biome> biomes) {
|
||||
MultiBurst.burst.burst(
|
||||
() -> getFramework().getEngineParallax().generateParallaxArea(x, z),
|
||||
() -> blocks.compute2D(getParallelism(), (xx,yy,zz, b) -> {
|
||||
getFramework().getTerrainActuator().actuate(x+xx, z+zz, b);
|
||||
getFramework().getDecorantActuator().actuate(x+xx, z+zz, b);
|
||||
}),
|
||||
()->biomes.compute2D(getParallelism(), (xx,yy,zz,b) -> {
|
||||
getFramework().getBiomeActuator().actuate(x+xx, z+zz, b);
|
||||
() -> Hunk.computeDual2D(getParallelism(), blocks, biomes, (xx,yy,zz,ha,hb) -> {
|
||||
getFramework().getTerrainActuator().actuate(x+xx, z+zz, ha);
|
||||
getFramework().getCaveModifier().modify(x, z, ha);
|
||||
getFramework().getDecorantActuator().actuate(x+xx, z+zz, ha);
|
||||
getFramework().getBiomeActuator().actuate(x+xx, z+zz, hb);
|
||||
})
|
||||
);
|
||||
|
||||
// getFramework().getCaveModifier().modify(x, z, blocks, biomes);
|
||||
getFramework().getEngineParallax().insertParallax(x, z, blocks);
|
||||
blocks.compute2D(getParallelism(), (xx,yy,zz,ha) -> {
|
||||
getFramework().getEngineParallax().insertParallax(x, z, ha);
|
||||
});
|
||||
|
||||
if(M.r(0.1))
|
||||
{
|
||||
MultiBurst.burst.lazy(() -> {
|
||||
getParallax().cleanup();
|
||||
getData().getObjectLoader().clean();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ import org.bukkit.block.data.BlockData;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
public class IrisCaveModifier extends EngineAssignedBiModifier<BlockData, Biome>
|
||||
public class IrisCaveModifier extends EngineAssignedModifier<BlockData>
|
||||
{
|
||||
public static final BlockData CAVE_AIR = B.getBlockData("CAVE_AIR");
|
||||
public static final BlockData AIR = B.getBlockData("AIR");
|
||||
@ -31,16 +31,14 @@ public class IrisCaveModifier extends EngineAssignedBiModifier<BlockData, Biome>
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onModify(int x, int z, Hunk<BlockData> a, Hunk<Biome> b) {
|
||||
Hunk.computeDual2D(getParallelism(), a, b, (xx,yy,zz, ha, hb) -> {
|
||||
for(int i = 0; i < ha.getWidth(); i++)
|
||||
public void onModify(int x, int z, Hunk<BlockData> a) {
|
||||
for(int i = 0; i < a.getWidth(); i++)
|
||||
{
|
||||
for(int j = 0; j < ha.getDepth(); i++)
|
||||
for(int j = 0; j < a.getDepth(); j++)
|
||||
{
|
||||
|
||||
genCaves(x + i, z + j, i, j, a);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
public KList<CaveResult> genCaves(double wxx, double wzz, int x, int z, Hunk<BlockData> data)
|
||||
|
@ -5,8 +5,11 @@ import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import com.volmit.iris.gen.scaffold.TerrainChunk;
|
||||
import com.volmit.iris.v2.generator.nms.v1X.DummyWorld;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.WorldCreator;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
@ -39,6 +42,18 @@ public class EngineCompositeGenerator extends ChunkGenerator implements Hotloada
|
||||
initialized = new AtomicBoolean(false);
|
||||
}
|
||||
|
||||
public EngineCompositeGenerator initDummy(WorldCreator wc)
|
||||
{
|
||||
return initDummy(new DummyWorld(wc.name(), wc.seed()));
|
||||
}
|
||||
|
||||
public EngineCompositeGenerator initDummy(World world)
|
||||
{
|
||||
initialize(world);
|
||||
initialized.lazySet(false);
|
||||
return this;
|
||||
}
|
||||
|
||||
public void hotload()
|
||||
{
|
||||
Iris.globaldata.dump();
|
||||
@ -113,14 +128,19 @@ public class EngineCompositeGenerator extends ChunkGenerator implements Hotloada
|
||||
@NotNull
|
||||
@Override
|
||||
public ChunkData generateChunkData(@NotNull World world, @NotNull Random ignored, int x, int z, @NotNull BiomeGrid biome) {
|
||||
TerrainChunk tc = TerrainChunk.create(world, biome);
|
||||
generateChunkRawData(world, ignored, x, z, tc);
|
||||
return tc.getRaw();
|
||||
}
|
||||
|
||||
public void generateChunkRawData(World world, Random ignored, int x, int z, TerrainChunk tc)
|
||||
{
|
||||
initialize(world);
|
||||
ChunkData chunk = createChunkData(world);
|
||||
Hunk<BlockData> blocks = Hunk.view(chunk);
|
||||
Hunk<Biome> biomes = Hunk.view(biome);
|
||||
Hunk<BlockData> blocks = Hunk.view((ChunkData) tc);
|
||||
Hunk<Biome> biomes = Hunk.view((BiomeGrid) tc);
|
||||
long m = M.ms();
|
||||
compound.generate(x * 16, z * 16, blocks, biomes);
|
||||
System.out.println("Generated " + x + "," + z + " in " + Form.duration(M.ms() - m, 0));
|
||||
return chunk;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -80,38 +80,42 @@ public interface EngineParallax extends DataProvider, IObjectPlacer
|
||||
return;
|
||||
}
|
||||
|
||||
data.compute2DYRange(getEngine().getParallelism(), meta.getMinObject(), meta.getMaxObject(), (xx,yy,zz,h)->{
|
||||
for(int i = x+xx; i < x+xx+ h.getWidth(); i++)
|
||||
for(int i = x; i < x+ data.getWidth(); i++)
|
||||
{
|
||||
for(int j= z+zz; j < z+zz + h.getDepth(); j++)
|
||||
for(int j= z; j < z + data.getDepth(); j++)
|
||||
{
|
||||
for(int k = yy; k < yy+h.getHeight(); k++)
|
||||
for(int k = 0; k < data.getHeight(); k++)
|
||||
{
|
||||
BlockData d = getParallaxAccess().getBlock(i, k, j);
|
||||
|
||||
if(d != null)
|
||||
{
|
||||
h.set(i - (x-xx), k-yy, j - (z+zz), d);
|
||||
// DONT TRUST INTELIJ ^^^^
|
||||
// ITS A FUCKING LIE
|
||||
data.set(i - x, k, j - z, d);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
default void generateParallaxArea(int x, int z)
|
||||
{
|
||||
int s = (int) Math.ceil(getParallaxSize() / 2D);
|
||||
int j;
|
||||
BurstExecutor e = MultiBurst.burst.burst(getParallaxSize() * getParallaxSize());
|
||||
|
||||
for(int i = -s; i <= s; i++)
|
||||
{
|
||||
for(int j = -s; j <= s; j++)
|
||||
int ii = i;
|
||||
|
||||
for(j = -s; j <= s; j++)
|
||||
{
|
||||
generateParallaxLayer((i*16)+x, (j*16)+z);
|
||||
int jj = j;
|
||||
e.queue(() -> generateParallaxLayer((ii*16)+x, (jj*16)+z));
|
||||
}
|
||||
}
|
||||
|
||||
e.complete();
|
||||
|
||||
getParallaxAccess().setChunkGenerated(x>>4, z>>4);
|
||||
}
|
||||
|
||||
|
@ -27,4 +27,8 @@ public class MultiBurst
|
||||
{
|
||||
return burst(16);
|
||||
}
|
||||
|
||||
public void lazy(Runnable o) {
|
||||
service.execute(o);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user