diff --git a/src/main/java/com/volmit/iris/command/CommandIris.java b/src/main/java/com/volmit/iris/command/CommandIris.java index 2351f7505..c68d04f5e 100644 --- a/src/main/java/com/volmit/iris/command/CommandIris.java +++ b/src/main/java/com/volmit/iris/command/CommandIris.java @@ -1,6 +1,7 @@ package com.volmit.iris.command; import com.volmit.iris.Iris; +import com.volmit.iris.gen.v2.TestGen; import com.volmit.iris.util.Command; import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarSender; @@ -58,11 +59,11 @@ public class CommandIris extends MortarCommand @Override public boolean handle(MortarSender sender, String[] args) { - // if(args.length == 1 && args[0].equalsIgnoreCase("test!")) - // { - // TestGen.gen(sender.player()); - // return true; - // } + if(args.length == 1 && args[0].equalsIgnoreCase("test!")) + { + TestGen.gen(sender.player()); + return true; + } sender.sendMessage("Iris v" + Iris.instance.getDescription().getVersion() + " by Volmit Software"); printHelp(sender); diff --git a/src/main/java/com/volmit/iris/gen/TopographicTerrainProvider.java b/src/main/java/com/volmit/iris/gen/TopographicTerrainProvider.java index b6a9e2220..cf5555863 100644 --- a/src/main/java/com/volmit/iris/gen/TopographicTerrainProvider.java +++ b/src/main/java/com/volmit/iris/gen/TopographicTerrainProvider.java @@ -19,7 +19,7 @@ import com.volmit.iris.noise.CNG; import com.volmit.iris.object.DecorationPart; import com.volmit.iris.object.InferredType; import com.volmit.iris.object.IrisBiome; -import com.volmit.iris.object.IrisBiomeDecorator; +import com.volmit.iris.object.IrisDecorator; import com.volmit.iris.object.IrisCaveFluid; import com.volmit.iris.object.IrisDepositGenerator; import com.volmit.iris.object.IrisDimension; @@ -378,7 +378,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider int j = 0; - for(IrisBiomeDecorator i : biome.getDecorators()) + for(IrisDecorator i : biome.getDecorators()) { if(i.getPartOf().equals(DecorationPart.SHORE_LINE) && (!touchesSea(rx, rz) || k != getFluidHeight())) { @@ -461,7 +461,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider int j = 0; - for(IrisBiomeDecorator i : biome.getDecorators()) + for(IrisDecorator i : biome.getDecorators()) { FastBlockData d = i.getBlockData(biome, rng.nextParallelRNG(2333877 + biome.getRarity() + biome.getName().length() + +j++), rx, rz, getData()); @@ -528,7 +528,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider int j = 0; - for(IrisBiomeDecorator i : biome.getDecorators()) + for(IrisDecorator i : biome.getDecorators()) { if(biome.getInferredType().equals(InferredType.SHORE)) { diff --git a/src/main/java/com/volmit/iris/manager/IrisDataManager.java b/src/main/java/com/volmit/iris/manager/IrisDataManager.java index 3d7829b3e..2c377f24d 100644 --- a/src/main/java/com/volmit/iris/manager/IrisDataManager.java +++ b/src/main/java/com/volmit/iris/manager/IrisDataManager.java @@ -7,7 +7,7 @@ import org.bukkit.block.Biome; import com.google.gson.Gson; import com.volmit.iris.object.IrisBiome; -import com.volmit.iris.object.IrisBiomeDecorator; +import com.volmit.iris.object.IrisDecorator; import com.volmit.iris.object.IrisBlockData; import com.volmit.iris.object.IrisDimension; import com.volmit.iris.object.IrisEntity; @@ -154,7 +154,7 @@ public class IrisDataManager IrisBiome biome = new IrisBiome(); biome.getChildren().add("another_biome"); - biome.getDecorators().add(new IrisBiomeDecorator()); + biome.getDecorators().add(new IrisDecorator()); biome.getObjects().add(o); IO.writeAll(new File(examples, "example-pack/biomes/example-biome.json"), new JSONObject(new Gson().toJson(biome)).toString(4)); diff --git a/src/main/java/com/volmit/iris/object/DecorationPart.java b/src/main/java/com/volmit/iris/object/DecorationPart.java index 11f1ba1d7..ea261c788 100644 --- a/src/main/java/com/volmit/iris/object/DecorationPart.java +++ b/src/main/java/com/volmit/iris/object/DecorationPart.java @@ -16,5 +16,9 @@ public enum DecorationPart @Desc("Target sea surfaces (typically for lilypads)") @DontObfuscate - SEA_SURFACE + SEA_SURFACE, + + @Desc("Decorates on cave & carving ceilings or underside of overhangs") + @DontObfuscate + CEILING, } diff --git a/src/main/java/com/volmit/iris/object/IrisBiome.java b/src/main/java/com/volmit/iris/object/IrisBiome.java index b618decfe..71681b1f6 100644 --- a/src/main/java/com/volmit/iris/object/IrisBiome.java +++ b/src/main/java/com/volmit/iris/object/IrisBiome.java @@ -164,10 +164,10 @@ public class IrisBiome extends IrisRegistrant implements IRare @Desc("This defines the layers of materials in this biome. Each layer has a palette and min/max height and some other properties. Usually a grassy/sandy layer then a dirt layer then a stone layer. Iris will fill in the remaining blocks below your layers with stone.") private KList seaLayers = new KList(); - @ArrayType(min = 1, type = IrisBiomeDecorator.class) + @ArrayType(min = 1, type = IrisDecorator.class) @DontObfuscate @Desc("Decorators are used for things like tall grass, bisected flowers, and even kelp or cactus (random heights)") - private KList decorators = new KList(); + private KList decorators = new KList(); @ArrayType(min = 1, type = IrisObjectPlacement.class) @DontObfuscate diff --git a/src/main/java/com/volmit/iris/object/IrisDecorator.java b/src/main/java/com/volmit/iris/object/IrisDecorator.java index a0cf816fc..afa6b3823 100644 --- a/src/main/java/com/volmit/iris/object/IrisDecorator.java +++ b/src/main/java/com/volmit/iris/object/IrisDecorator.java @@ -25,7 +25,7 @@ import lombok.experimental.Accessors; @AllArgsConstructor @Desc("A biome decorator is used for placing flowers, grass, cacti and so on") @Data -public class IrisBiomeDecorator +public class IrisDecorator { @DontObfuscate @Desc("The varience dispersion is used when multiple blocks are put in the palette. Scatter scrambles them, Wispy shows streak-looking varience") @@ -233,4 +233,9 @@ public class IrisBiomeDecorator return blockDataTops; }); } + + public boolean isStacking() + { + return getStackMax() > 1; + } } diff --git a/src/main/java/com/volmit/iris/util/Consumer6.java b/src/main/java/com/volmit/iris/util/Consumer6.java new file mode 100644 index 000000000..4404f8f54 --- /dev/null +++ b/src/main/java/com/volmit/iris/util/Consumer6.java @@ -0,0 +1,8 @@ +package com.volmit.iris.util; + +@SuppressWarnings("hiding") +@FunctionalInterface +public interface Consumer6 +{ + public void accept(A a, B b, C c, D d, E e, F f); +} diff --git a/src/main/java/com/volmit/iris/util/KList.java b/src/main/java/com/volmit/iris/util/KList.java index 674c5b6f9..157df5da0 100644 --- a/src/main/java/com/volmit/iris/util/KList.java +++ b/src/main/java/com/volmit/iris/util/KList.java @@ -41,6 +41,12 @@ public class KList extends ArrayList implements List add(e); } + public int indexOfAddIfNeeded(T v) + { + addIfMissing(v); + return indexOf(v); + } + /** * Remove the last element */ diff --git a/src/main/java/com/volmit/iris/util/RNG.java b/src/main/java/com/volmit/iris/util/RNG.java index b935e4de3..cb3c2164d 100644 --- a/src/main/java/com/volmit/iris/util/RNG.java +++ b/src/main/java/com/volmit/iris/util/RNG.java @@ -38,6 +38,11 @@ public class RNG extends Random { return new RNG(sx + signature); } + + public RNG nextParallelRNG(long signature) + { + return new RNG(sx + signature); + } public RNG nextRNG() {