#include "OverworldDimension.h" #include "FastNoiseWrapper.h" #include "RandNoise.h" #include "WormCaveGenerator.h" OverworldDimensionFactory::OverworldDimensionFactory() : DimensionGeneratorFactory("Overworld", DimensionEnum::OVERWORLD) {} DimensionGenerator* OverworldDimensionFactory::createDimensionGenerator( int worldSeed, Framework::JSON::JSONValue* config) { return new BiomedCavedDimensionGenerator(config, worldSeed); } Framework::JSON::Validator::JSONValidator* OverworldDimensionFactory::getConfigValidator() { auto validator = Framework::JSON::Validator::JSONValidator::buildForObject() ->withRequiredString("dimension") ->withExactMatch("Overworld") ->finishString(); return BiomedCavedDimensionGenerator::addConfigAttributes(validator) ->finishObject(); } Framework::JSON::JSONValue* OverworldDimensionFactory::getDefaultConfig() { return Framework::JSON::Parser::getValue( "{" " \"bioms\": [" " {" " \"blocks\": [" " {" " \"blockType\": \"Grass\"," " \"condition\": {" " \"operator\": \"&&\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"operator\": \"==\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"z\"," " \"type\": \"variable\"" " }," " {" " \"name\": \"surfaceHeight\"," " \"type\": \"variable\"" " }" " ]" " }," " {" " \"blockType\": \"Dirt\"," " \"type\": \"blockType\"," " \"x\": {" " \"name\": \"x\"," " \"type\": \"variable\"" " }," " \"y\": {" " \"name\": \"y\"," " \"type\": \"variable\"" " }," " \"z\": {" " \"operator\": \"-\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"z\"," " \"type\": \"variable\"" " }," " {" " \"type\": \"constant\"," " \"value\": 1" " }" " ]" " }" " }" " ]" " }," " \"noise\": {" " \"seed\": {" " \"operator\": \"+\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"dimensionSeed\"," " \"type\": \"variable\"" " }," " {" " \"type\": \"constant\"," " \"value\": 3" " }" " ]" " }," " \"type\": \"random\"" " }," " \"threshold\": 0.25," " \"type\": \"blockType\"" " }," " {" " \"blockType\": \"Gravel\"," " \"condition\": {" " \"operator\": \"<\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"z\"," " \"type\": \"variable\"" " }," " {" " \"name\": \"surfaceHeight\"," " \"type\": \"variable\"" " }" " ]" " }," " \"noise\": {" " \"frequency\": 0.1," " \"seed\": {" " \"operator\": \"+\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"dimensionSeed\"," " \"type\": \"variable\"" " }," " {" " \"type\": \"constant\"," " \"value\": 2" " }" " ]" " }," " \"type\": \"ValueCubic\"" " }," " \"threshold\": 0.35," " \"type\": \"blockType\"" " }," " {" " \"blockType\": \"Dirt\"," " \"condition\": {" " \"operator\": \"<\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"z\"," " \"type\": \"variable\"" " }," " {" " \"name\": \"surfaceHeight\"," " \"type\": \"variable\"" " }" " ]" " }," " \"noise\": {" " \"frequency\": 0.125," " \"seed\": {" " \"operator\": \"+\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"dimensionSeed\"," " \"type\": \"variable\"" " }," " {" " \"type\": \"constant\"," " \"value\": 1" " }" " ]" " }," " \"type\": \"ValueCubic\"" " }," " \"threshold\": 0.35," " \"type\": \"blockType\"" " }," " {" " \"blockType\": \"Sand\"," " \"condition\": {" " \"operator\": \"&&\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"operator\": \"<\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"z\"," " \"type\": \"variable\"" " }," " {" " \"name\": \"surfaceHeight\"," " \"type\": \"variable\"" " }" " ]" " }," " {" " \"operator\": \">\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"z\"," " \"type\": \"variable\"" " }," " {" " \"name\": \"underground1\"," " \"type\": \"variable\"" " }" " ]" " }" " ]" " }," " \"noise\": {" " \"frequency\": 0.125," " \"seed\": {" " \"operator\": \"+\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"dimensionSeed\"," " \"type\": \"variable\"" " }," " {" " \"type\": \"constant\"," " \"value\": 2" " }" " ]" " }," " \"type\": \"ValueCubic\"" " }," " \"threshold\": 0.35," " \"type\": \"blockType\"" " }," " {" " \"blockType\": \"Dirt\"," " \"condition\": {" " \"operator\": \"&&\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"operator\": \"<\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"z\"," " \"type\": \"variable\"" " }," " {" " \"name\": \"surfaceHeight\"," " \"type\": \"variable\"" " }" " ]" " }," " {" " \"operator\": \">\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"z\"," " \"type\": \"variable\"" " }," " {" " \"name\": \"underground1\"," " \"type\": \"variable\"" " }" " ]" " }" " ]" " }," " \"type\": \"blockType\"" " }," " {" " \"blockType\": \"Stone\"," " \"condition\": {" " \"operator\": \"<\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"z\"," " \"type\": \"variable\"" " }," " {" " \"name\": \"underground1\"," " \"type\": \"variable\"" " }" " ]" " }," " \"type\": \"blockType\"" " }" " ]," " \"layerModifier\": [" " {" " \"multiplier\": 0.2," " \"name\": \"surfaceHeight\"" " }" " ]," " \"name\": \"Grassland\"," " \"structurCollections\": [" " {" " \"noise\": {" " \"seed\": {" " \"name\": \"dimensionSeed\"," " \"type\": \"variable\"" " }," " \"type\": \"random\"" " }," " \"structures\": [" " {" " \"leaves\": \"Birch Wood Leaves\"," " \"maxSize\": 15," " \"minSize\": 8," " \"propability\": 0.5," " \"type\": \"Tree\"," " \"wood\": \"Birch Wood\"" " }," " {" " \"leaves\": \"Beech Wood Leaves\"," " \"maxSize\": 13," " \"minSize\": 8," " \"propability\": 0.25," " \"type\": \"Tree\"," " \"wood\": \"Beech Wood\"" " }," " {" " \"leaves\": \"Oak Wood Leaves\"," " \"maxSize\": 15," " \"minSize\": 10," " \"propability\": 0.125," " \"type\": \"Tree\"," " \"wood\": \"Oak Wood\"" " }," " {" " \"leaves\": \"Pine Wood Leaves\"," " \"maxSize\": 24," " \"minSize\": 15," " \"propability\": 0.075," " \"type\": \"Tree\"," " \"wood\": \"Pine Wood\"" " }" " ]," " \"threshold\": 0.001" " }" " ]" " }" " ]," " \"dimension\": \"Overworld\"," " \"dimensionSeed\": {" " \"operator\": \"+\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"worldSeed\"," " \"type\": \"variable\"" " }," " {" " \"name\": \"dimensionId\"," " \"type\": \"variable\"" " }" " ]" " }," " \"heightLayers\": [" " {" " \"name\": \"surfaceHeight\"," " \"noise\": {" " \"seed\": {" " \"name\": \"dimensionSeed\"," " \"type\": \"variable\"" " }," " \"type\": \"ValueCubic\"" " }," " \"value\": {" " \"operator\": \"+\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"type\": \"constant\"," " \"value\": 50" " }," " {" " \"operator\": \"*\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"type\": \"noise\"," " \"x\": {" " \"name\": \"x\"," " \"type\": \"variable\"" " }," " \"y\": {" " \"name\": \"y\"," " \"type\": \"variable\"" " }," " \"z\": {" " \"type\": \"constant\"," " \"value\": 0" " }" " }," " {" " \"type\": \"constant\"," " \"value\": 400" " }" " ]" " }" " ]" " }" " }," " {" " \"name\": \"underground1\"," " \"noise\": {" " \"seed\": {" " \"name\": \"dimensionSeed\"," " \"type\": \"variable\"" " }," " \"type\": \"ValueCubic\"" " }," " \"value\": {" " \"operator\": \"-\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"name\": \"surfaceHeight\"," " \"type\": \"variable\"" " }," " {" " \"type\": \"constant\"," " \"value\": 5" " }," " {" " \"operator\": \"*\"," " \"type\": \"operator\"," " \"values\": [" " {" " \"type\": \"noise\"," " \"x\": {" " \"name\": \"x\"," " \"type\": \"variable\"" " }," " \"y\": {" " \"name\": \"y\"," " \"type\": \"variable\"" " }," " \"z\": {" " \"type\": \"constant\"," " \"value\": 0" " }" " }," " {" " \"type\": \"constant\"," " \"value\": 45" " }" " ]" " }" " ]" " }" " }" " ]," " \"noiseMaps\": [" " {" " \"name\": \"biomNoise\"," " \"noise\": {" " \"cellularDistanceFunction\": \"Hybrid\"," " \"cellularJitter\": 1," " \"cellularReturnType\": \"CellValue\"," " \"domainWarpAmp\": 30," " \"domainWarpType\": \"OpenSimplex2Reduced\"," " \"fractalType\": \"None\"," " \"frequency\": 0.015," " \"rotationType3D\": \"None\"," " \"seed\": {" " \"name\": \"dimensionSeed\"," " \"type\": \"variable\"" " }," " \"type\": \"Cellular\"" " }" " }" " ]" "}"); }