From c418683b3d881075d399f2e70874348210fd1a56 Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Wed, 9 Sep 2020 22:45:55 -0400 Subject: [PATCH] Start the pain --- .../iris/gen/TopographicTerrainProvider.java | 4 +- .../volmit/iris/manager/ProjectManager.java | 15 +-- .../iris/object/IrisBiomeDecorator.java | 24 ++--- .../iris/object/IrisBiomePaletteLayer.java | 12 +-- .../com/volmit/iris/object/IrisBlockData.java | 5 + .../volmit/iris/object/IrisBlockDrops.java | 1 - .../com/volmit/iris/object/IrisCaveFluid.java | 4 +- .../com/volmit/iris/object/IrisCaveLayer.java | 1 - .../iris/object/IrisCompatabilityFilter.java | 1 - .../iris/object/IrisDepositGenerator.java | 12 +-- .../com/volmit/iris/object/IrisDimension.java | 99 +------------------ .../iris/object/IrisMaterialPalette.java | 21 ++-- .../volmit/iris/object/IrisObjectReplace.java | 15 +-- 13 files changed, 45 insertions(+), 169 deletions(-) diff --git a/src/main/java/com/volmit/iris/gen/TopographicTerrainProvider.java b/src/main/java/com/volmit/iris/gen/TopographicTerrainProvider.java index d3c129b88..c4fae9473 100644 --- a/src/main/java/com/volmit/iris/gen/TopographicTerrainProvider.java +++ b/src/main/java/com/volmit/iris/gen/TopographicTerrainProvider.java @@ -237,7 +237,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider // Set Sea Material (water/lava) if(underwater) { - block = seaLayers.hasIndex(fluidHeight - k) ? seaLayers.get(depth) : biomeFluid != null ? biomeFluid : getDimension().getFluid(rockRandom, wx, k, wz); + block = seaLayers.hasIndex(fluidHeight - k) ? seaLayers.get(depth) : biomeFluid != null ? biomeFluid : getDimension().getFluidPalette().get(rockRandom, wx, k, wz); } // Set Surface Material for cavern layer surfaces @@ -259,7 +259,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider // Set Surface Material for true surface else { - block = layers.hasIndex(depth) ? layers.get(depth) : getDimension().getRock(rockRandom, wx, k, wz); + block = layers.hasIndex(depth) ? layers.get(depth) : getDimension().getRockPalette().get(rockRandom, wx, k, wz); depth++; } diff --git a/src/main/java/com/volmit/iris/manager/ProjectManager.java b/src/main/java/com/volmit/iris/manager/ProjectManager.java index 6670b5d1d..b9f0a560b 100644 --- a/src/main/java/com/volmit/iris/manager/ProjectManager.java +++ b/src/main/java/com/volmit/iris/manager/ProjectManager.java @@ -374,13 +374,8 @@ public class ProjectManager } }); - //@NoArgsConstructor - World world = NMSCreator.createWorld(new WorldCreator(wfp) - .seed(1337) - .generator(gen) - .generateStructures(d.isVanillaStructures()) - .type(WorldType.NORMAL) - .environment(d.getEnvironment()), false); + // @NoArgsConstructor + World world = NMSCreator.createWorld(new WorldCreator(wfp).seed(1337).generator(gen).generateStructures(d.isVanillaStructures()).type(WorldType.NORMAL).environment(d.getEnvironment()), false); //@done gx.getTarget().setRealWorld(world); Iris.linkMultiverseCore.removeFromConfig(world); @@ -866,12 +861,6 @@ public class ProjectManager b4.setGenerator(gen.getLoadKey()); b4.setMin(-5); b4.setMax(-38); - exampleLand2.getLayers().get(0).getPalette().clear(); - exampleLand2.getLayers().get(0).getPalette().add("RED_SAND"); - exampleShore1.getLayers().get(0).getPalette().clear(); - exampleShore1.getLayers().get(0).getPalette().add("SAND"); - exampleOcean1.getLayers().get(0).getPalette().clear(); - exampleOcean1.getLayers().get(0).getPalette().add("SAND"); exampleLand1.getGenerators().clear(); exampleLand1.getGenerators().add(b1); exampleLand2.getGenerators().clear(); diff --git a/src/main/java/com/volmit/iris/object/IrisBiomeDecorator.java b/src/main/java/com/volmit/iris/object/IrisBiomeDecorator.java index 909ce422f..c799d55d8 100644 --- a/src/main/java/com/volmit/iris/object/IrisBiomeDecorator.java +++ b/src/main/java/com/volmit/iris/object/IrisBiomeDecorator.java @@ -6,7 +6,6 @@ import com.volmit.iris.Iris; import com.volmit.iris.gen.atomics.AtomicCache; import com.volmit.iris.noise.CNG; import com.volmit.iris.util.ArrayType; -import com.volmit.iris.util.B; import com.volmit.iris.util.DependsOn; import com.volmit.iris.util.Desc; import com.volmit.iris.util.DontObfuscate; @@ -29,30 +28,25 @@ import lombok.experimental.Accessors; public class IrisBiomeDecorator { @DontObfuscate - @Desc("The varience dispersion is used when multiple blocks are put in the palette. Scatter scrambles them, Wispy shows streak-looking varience") private IrisGeneratorStyle variance = NoiseStyle.STATIC.style(); @DontObfuscate - @Desc("Dispersion is used to pick places to spawn. Scatter randomly places them (vanilla) or Wispy for a streak like patch system.") private IrisGeneratorStyle style = NoiseStyle.STATIC.style(); @DependsOn({"stackMin", "stackMax"}) @DontObfuscate - @Desc("If this decorator has a height more than 1 this changes how it picks the height between your maxes. Scatter = random, Wispy = wavy heights") private IrisGeneratorStyle heightVariance = NoiseStyle.STATIC.style(); @DontObfuscate - @Desc("Tells iris where this decoration is a part of. I.e. SHORE_LINE or SEA_SURFACE") private DecorationPart partOf = DecorationPart.NONE; @DependsOn({"stackMin", "stackMax"}) @MinNumber(1) @MaxNumber(256) - @DontObfuscate @Desc("The minimum repeat stack height (setting to 3 would stack 3 of on top of each other") private int stackMin = 1; @@ -60,27 +54,23 @@ public class IrisBiomeDecorator @DependsOn({"stackMin", "stackMax"}) @MinNumber(1) @MaxNumber(256) - @DontObfuscate @Desc("The maximum repeat stack height") private int stackMax = 1; @MinNumber(0.0001) - @DontObfuscate @Desc("The zoom is for zooming in or out wispy dispersions. Makes patches bigger the higher this zoom value is") private double zoom = 1; @MinNumber(0.0001) @DontObfuscate - @Desc("The zoom is for zooming in or out variance. Makes patches have more or less of one type.") private double varianceZoom = 1; @DependsOn({"stackMin", "stackMax"}) @MinNumber(0.0001) @DontObfuscate - @Desc("The vertical zoom is for wispy stack heights. Zooming this in makes stack heights more slowly change over a distance") private double verticalZoom = 1; @@ -88,16 +78,14 @@ public class IrisBiomeDecorator @MinNumber(0) @MaxNumber(1) @DontObfuscate - @Desc("The chance for this decorator to decorate at a given X,Y coordinate. This is hit 256 times per chunk (per surface block)") private double chance = 0.1; @Required - @ArrayType(min = 1, type = String.class) + @ArrayType(min = 1, type = IrisBlockData.class) @DontObfuscate - @Desc("The palette of blocks to pick from when this decorator needs to place.") - private KList palette = new KList().qadd("GRASS"); + private KList palette = new KList().qadd(new IrisBlockData("grass")); private final transient AtomicCache layerGenerator = new AtomicCache<>(); private final transient AtomicCache varianceGenerator = new AtomicCache<>(); @@ -132,9 +120,9 @@ public class IrisBiomeDecorator return varianceGenerator.aquire(() -> variance.create(rng.nextParallelRNG((int) (getBlockData().size()))).scale(1D / varianceZoom)); } - public KList add(String b) + public KList add(String b) { - palette.add(b); + palette.add(new IrisBlockData(b)); return palette; } @@ -167,9 +155,9 @@ public class IrisBiomeDecorator return blockData.aquire(() -> { KList blockData = new KList<>(); - for(String i : palette) + for(IrisBlockData i : palette) { - BlockData bx = B.getBlockData(i); + BlockData bx = i.getBlockData(); if(bx != null) { blockData.add(bx); diff --git a/src/main/java/com/volmit/iris/object/IrisBiomePaletteLayer.java b/src/main/java/com/volmit/iris/object/IrisBiomePaletteLayer.java index afad5fe0d..8b389d847 100644 --- a/src/main/java/com/volmit/iris/object/IrisBiomePaletteLayer.java +++ b/src/main/java/com/volmit/iris/object/IrisBiomePaletteLayer.java @@ -5,7 +5,6 @@ import org.bukkit.block.data.BlockData; import com.volmit.iris.gen.atomics.AtomicCache; import com.volmit.iris.noise.CNG; import com.volmit.iris.util.ArrayType; -import com.volmit.iris.util.B; import com.volmit.iris.util.DependsOn; import com.volmit.iris.util.Desc; import com.volmit.iris.util.DontObfuscate; @@ -27,7 +26,6 @@ import lombok.experimental.Accessors; @Data public class IrisBiomePaletteLayer { - @DontObfuscate @Desc("The style of noise") private IrisGeneratorStyle style = NoiseStyle.STATIC.style(); @@ -55,7 +53,7 @@ public class IrisBiomePaletteLayer @ArrayType(min = 1, type = String.class) @DontObfuscate @Desc("The palette of blocks to be used in this layer") - private KList palette = new KList().qadd("GRASS_BLOCK"); + private KList palette = new KList().qadd(new IrisBlockData("GRASS_BLOCK")); private final transient AtomicCache> blockData = new AtomicCache<>(); private final transient AtomicCache layerGenerator = new AtomicCache<>(); @@ -90,9 +88,9 @@ public class IrisBiomePaletteLayer }); } - public KList add(String b) + public KList add(String b) { - palette.add(b); + palette.add(new IrisBlockData(b)); return palette; } @@ -102,9 +100,9 @@ public class IrisBiomePaletteLayer return blockData.aquire(() -> { KList blockData = new KList<>(); - for(String ix : palette) + for(IrisBlockData ix : palette) { - BlockData bx = B.getBlockData(ix); + BlockData bx = ix.getBlockData(); if(bx != null) { blockData.add(bx); diff --git a/src/main/java/com/volmit/iris/object/IrisBlockData.java b/src/main/java/com/volmit/iris/object/IrisBlockData.java index 60deb140a..19aefd368 100644 --- a/src/main/java/com/volmit/iris/object/IrisBlockData.java +++ b/src/main/java/com/volmit/iris/object/IrisBlockData.java @@ -41,6 +41,11 @@ public class IrisBlockData private final transient AtomicCache blockdata = new AtomicCache<>(); private final transient AtomicCache realProperties = new AtomicCache<>(); + public IrisBlockData(String b) + { + this.block = b; + } + public String computeProperties() { if(getData().isEmpty()) diff --git a/src/main/java/com/volmit/iris/object/IrisBlockDrops.java b/src/main/java/com/volmit/iris/object/IrisBlockDrops.java index b0fd7ea5c..712b5c485 100644 --- a/src/main/java/com/volmit/iris/object/IrisBlockDrops.java +++ b/src/main/java/com/volmit/iris/object/IrisBlockDrops.java @@ -23,7 +23,6 @@ import lombok.experimental.Accessors; @Data public class IrisBlockDrops { - @Required @ArrayType(min = 1, type = IrisBlockData.class) @Desc("The blocks that drop loot") diff --git a/src/main/java/com/volmit/iris/object/IrisCaveFluid.java b/src/main/java/com/volmit/iris/object/IrisCaveFluid.java index 3ef705582..a9d011073 100644 --- a/src/main/java/com/volmit/iris/object/IrisCaveFluid.java +++ b/src/main/java/com/volmit/iris/object/IrisCaveFluid.java @@ -37,7 +37,7 @@ public class IrisCaveFluid @Required @DontObfuscate @Desc("The fluid type that should spawn here") - private String fluidType = "CAVE_AIR"; + private IrisBlockData fluidType = new IrisBlockData("CAVE_AIR"); private final transient AtomicCache fluidData = new AtomicCache<>(); @@ -50,7 +50,7 @@ public class IrisCaveFluid { return fluidData.aquire(() -> { - BlockData b = B.get(getFluidType()); + BlockData b = getFluidType().getBlockData(); if(b != null) { diff --git a/src/main/java/com/volmit/iris/object/IrisCaveLayer.java b/src/main/java/com/volmit/iris/object/IrisCaveLayer.java index 0618c35ed..d99a18016 100644 --- a/src/main/java/com/volmit/iris/object/IrisCaveLayer.java +++ b/src/main/java/com/volmit/iris/object/IrisCaveLayer.java @@ -17,7 +17,6 @@ import lombok.experimental.Accessors; @Data public class IrisCaveLayer { - @Required @DontObfuscate @Desc("The vertical slope this cave layer follows") diff --git a/src/main/java/com/volmit/iris/object/IrisCompatabilityFilter.java b/src/main/java/com/volmit/iris/object/IrisCompatabilityFilter.java index e3c546bd9..04bbf3b3b 100644 --- a/src/main/java/com/volmit/iris/object/IrisCompatabilityFilter.java +++ b/src/main/java/com/volmit/iris/object/IrisCompatabilityFilter.java @@ -21,7 +21,6 @@ import lombok.experimental.Accessors; @Data public class IrisCompatabilityFilter { - @Required @DontObfuscate @Desc("When iris sees this block, and it's not reconized") diff --git a/src/main/java/com/volmit/iris/object/IrisDepositGenerator.java b/src/main/java/com/volmit/iris/object/IrisDepositGenerator.java index b4a79f5dd..cc6966e42 100644 --- a/src/main/java/com/volmit/iris/object/IrisDepositGenerator.java +++ b/src/main/java/com/volmit/iris/object/IrisDepositGenerator.java @@ -7,7 +7,6 @@ import org.bukkit.util.BlockVector; import com.volmit.iris.gen.TopographicTerrainProvider; import com.volmit.iris.gen.atomics.AtomicCache; import com.volmit.iris.util.ArrayType; -import com.volmit.iris.util.B; import com.volmit.iris.util.Desc; import com.volmit.iris.util.DontObfuscate; import com.volmit.iris.util.KList; @@ -28,7 +27,6 @@ import lombok.experimental.Accessors; @Data public class IrisDepositGenerator { - @Required @MinNumber(0) @MaxNumber(256) @@ -72,10 +70,10 @@ public class IrisDepositGenerator private int minPerChunk = 1; @Required - @ArrayType(min = 1, type = String.class) + @ArrayType(min = 1, type = IrisBlockData.class) @DontObfuscate @Desc("The palette of blocks to be used in this deposit generator") - private KList palette = new KList(); + private KList palette = new KList(); @MinNumber(1) @MaxNumber(64) @@ -145,9 +143,9 @@ public class IrisDepositGenerator { KList blockData = new KList<>(); - for(String ix : palette) + for(IrisBlockData ix : palette) { - BlockData bx = B.getBlockData(ix); + BlockData bx = ix.getBlockData(); if(bx != null) { @@ -211,7 +209,7 @@ public class IrisDepositGenerator boolean allow = false; BlockData b = data.getBlockData(nx, ny, nz); - for(BlockData f : g.getDimension().getRockData()) + for(BlockData f : g.getDimension().getRockPalette().getBlockData()) { if(f.getMaterial().equals(b.getMaterial())) { diff --git a/src/main/java/com/volmit/iris/object/IrisDimension.java b/src/main/java/com/volmit/iris/object/IrisDimension.java index 696609053..635581bb7 100644 --- a/src/main/java/com/volmit/iris/object/IrisDimension.java +++ b/src/main/java/com/volmit/iris/object/IrisDimension.java @@ -11,7 +11,6 @@ import com.volmit.iris.gen.ParallelTerrainProvider; import com.volmit.iris.gen.atomics.AtomicCache; import com.volmit.iris.noise.CNG; import com.volmit.iris.util.ArrayType; -import com.volmit.iris.util.B; import com.volmit.iris.util.ChunkPosition; import com.volmit.iris.util.Desc; import com.volmit.iris.util.DontObfuscate; @@ -277,10 +276,6 @@ public class IrisDimension extends IrisRegistrant @Desc("Overlay additional noise on top of the interoplated terrain.") private KList overlayNoise = new KList<>(); - @DontObfuscate - @Desc("The noise style for rock types") - private IrisGeneratorStyle rockStyle = NoiseStyle.STATIC.style(); - @ArrayType(min = 1, type = IrisCaveLayer.class) @DontObfuscate @Desc("Define cave layers") @@ -291,10 +286,6 @@ public class IrisDimension extends IrisRegistrant @Desc("Define carve layers") private KList carveLayers = new KList<>(); - @DontObfuscate - @Desc("The noise style for fluid types") - private IrisGeneratorStyle fluidStyle = NoiseStyle.STATIC.style(); - @MinNumber(0.0001) @MaxNumber(512) @DontObfuscate @@ -304,12 +295,12 @@ public class IrisDimension extends IrisRegistrant @ArrayType(min = 1, type = String.class) @DontObfuscate @Desc("The palette of blocks for 'stone'") - private KList rockPalette = new KList().qadd("STONE"); + private IrisMaterialPalette rockPalette = new IrisMaterialPalette().qadd("STONE"); @ArrayType(min = 1, type = String.class) @DontObfuscate @Desc("The palette of blocks for 'water'") - private KList fluidPalette = new KList().qadd("WATER"); + private IrisMaterialPalette fluidPalette = new IrisMaterialPalette().qadd("WATER"); @ArrayType(min = 1, type = IrisBiomeMutation.class) @DontObfuscate @@ -317,8 +308,6 @@ public class IrisDimension extends IrisRegistrant private KList mutations = new KList<>(); private final transient AtomicCache parallaxSize = new AtomicCache<>(); - private final transient AtomicCache> rockData = new AtomicCache<>(); - private final transient AtomicCache> fluidData = new AtomicCache<>(); private final transient AtomicCache> cacheFilters = new AtomicCache<>(); private final transient AtomicCache rockLayerGenerator = new AtomicCache<>(); private final transient AtomicCache fluidLayerGenerator = new AtomicCache<>(); @@ -477,90 +466,6 @@ public class IrisDimension extends IrisRegistrant }); } - public BlockData getRock(RNG rng, double x, double y, double z) - { - if(getRockData().isEmpty()) - { - return STONE; - } - - if(getRockData().size() == 1) - { - return getRockData().get(0); - } - - return getRockGenerator(rng).fit(getRockData(), x, y, z); - } - - public CNG getRockGenerator(RNG rng) - { - return rockLayerGenerator.aquire(() -> - { - RNG rngx = rng.nextParallelRNG((int) (getRockData().size() * getRegions().size() * getLandZoom() * 10357)); - return rockStyle.create(rngx); - }); - } - - public KList getRockData() - { - return rockData.aquire(() -> - { - KList rockData = new KList<>(); - for(String ix : rockPalette) - { - BlockData bx = B.getBlockData(ix); - if(bx != null) - { - rockData.add(bx); - } - } - - return rockData; - }); - } - - public BlockData getFluid(RNG rng, double x, double y, double z) - { - if(getFluidData().isEmpty()) - { - return WATER; - } - - if(getFluidData().size() == 1) - { - return getFluidData().get(0); - } - - return getFluidGenerator(rng).fit(getFluidData(), x, y, z); - } - - public CNG getFluidGenerator(RNG rng) - { - return fluidLayerGenerator.aquire(() -> - { - RNG rngx = rng.nextParallelRNG(getFluidData().size() * (int) (getRockData().size() * getRegions().size() * getLandZoom() * 10357)); - return fluidStyle.create(rngx); - }); - } - - public KList getFluidData() - { - return fluidData.aquire(() -> - { - KList fluidData = new KList<>(); - for(String ix : fluidPalette) - { - BlockData bx = B.getBlockData(ix); - if(bx != null) - { - fluidData.add(bx); - } - } - - return fluidData; - }); - } - public double getDimensionAngle() { return rad.aquire(() -> Math.toRadians(dimensionAngleDeg)); diff --git a/src/main/java/com/volmit/iris/object/IrisMaterialPalette.java b/src/main/java/com/volmit/iris/object/IrisMaterialPalette.java index 3f9f61257..e6b9bcec4 100644 --- a/src/main/java/com/volmit/iris/object/IrisMaterialPalette.java +++ b/src/main/java/com/volmit/iris/object/IrisMaterialPalette.java @@ -5,7 +5,6 @@ import org.bukkit.block.data.BlockData; import com.volmit.iris.gen.atomics.AtomicCache; import com.volmit.iris.noise.CNG; import com.volmit.iris.util.ArrayType; -import com.volmit.iris.util.B; import com.volmit.iris.util.Desc; import com.volmit.iris.util.DontObfuscate; import com.volmit.iris.util.KList; @@ -25,7 +24,6 @@ import lombok.experimental.Accessors; @Data public class IrisMaterialPalette { - @DontObfuscate @Desc("The style of noise") private IrisGeneratorStyle style = NoiseStyle.STATIC.style(); @@ -36,10 +34,10 @@ public class IrisMaterialPalette private double zoom = 5; @Required - @ArrayType(min = 1, type = String.class) + @ArrayType(min = 1, type = IrisBlockData.class) @DontObfuscate @Desc("The palette of blocks to be used in this layer") - private KList palette = new KList().qadd("STONE"); + private KList palette = new KList().qadd(new IrisBlockData("STONE")); private final transient AtomicCache> blockData = new AtomicCache<>(); private final transient AtomicCache layerGenerator = new AtomicCache<>(); @@ -69,21 +67,28 @@ public class IrisMaterialPalette }); } - public KList add(String b) + public KList add(String b) { - palette.add(b); + palette.add(new IrisBlockData(b)); return palette; } + public IrisMaterialPalette qadd(String b) + { + palette.add(new IrisBlockData(b)); + + return this; + } + public KList getBlockData() { return blockData.aquire(() -> { KList blockData = new KList<>(); - for(String ix : palette) + for(IrisBlockData ix : palette) { - BlockData bx = B.getBlockData(ix); + BlockData bx = ix.getBlockData(); if(bx != null) { blockData.add(bx); diff --git a/src/main/java/com/volmit/iris/object/IrisObjectReplace.java b/src/main/java/com/volmit/iris/object/IrisObjectReplace.java index 172292b73..c4c3e8990 100644 --- a/src/main/java/com/volmit/iris/object/IrisObjectReplace.java +++ b/src/main/java/com/volmit/iris/object/IrisObjectReplace.java @@ -24,21 +24,17 @@ import lombok.experimental.Accessors; @Data public class IrisObjectReplace { - @ArrayType(min = 1, type = String.class) @Required @Desc("Find this block") @DontObfuscate private KList find = new KList<>(); - - @ArrayType(min = 1, type = String.class) @Required - @Desc("Replace it with this block") + @Desc("Replace it with this block palette") @DontObfuscate - private KList replace = new KList<>(); + private IrisMaterialPalette replace = new IrisMaterialPalette(); - @Desc("Exactly match the block data or not") @DontObfuscate private boolean exact = false; @@ -52,13 +48,8 @@ public class IrisObjectReplace return findData.aquire(() -> B.getBlockData(find)); } - public KList getReplace() - { - return replaceData.aquire(() -> B.getBlockData(replace)); - } - public BlockData getReplace(RNG seed, double x, double y, double z) { - return replaceGen.aquire(() -> NoiseStyle.STATIC.create(seed).bake()).fit(getReplace(), x, y, z); + return getReplace().get(seed, x, y, z); } }