Biome generator error [SOLVED]

im having an error with a generation_data.json i modified, adding Sweet potatoe, violet, wintermoss, and replaced taiga dark pines with vanilla pines and removing ancient ones, now i have an error

release-869 (x64)[M]
c++ exception: Error reading file taiga_biome/data/biome/taiga_generation_data.json:

Unknown JSON literal: -20}

Source:
{
“type”: “biome_generation_data”,
“__comment”: “parameters for generating forest, flora, and water”,
“ring_tesselation”: {
“dirt”: [
{
“__comment”: “This is the thickness of the color swatch around the edge of the area… Def 8”,
“width”: 6,
“name”: “dirt_edge_1”
}
],
“grass”: [
{
“__comment”: “This is the thickness of the color swatch around the edge of the area… Def 4”,
“width”: 5,
“name”: “grass_edge_1”
},
{
“__comment”: “This is the thickness of the color swatch around the edge of the area… Def 6”,
“width”: 6,
“name”: “grass_edge_2”
}
],
“grass_hills”: [
{
“__comment”: “This is the thickness of the color swatch around the edge of the area… Def 3”,
“width”: 3,
“name”: “grass_hills_edge_1”
},
{
“__comment”: “This is the thickness of the color swatch around the edge of the area… Def 5”,
“width”: 5,
“name”: “grass_hills_edge_2”
}
]
},
“season”: “spring”,
“palettes”: {
“spring”: {
“null” : “#FF00FF”,
“unknown” : “#25221A”,
“bedrock” : “#A89B8C”,
“rock_layer_1” : “#6B6860”,
“rock_layer_2” : “#6B6860”,
“rock_layer_3” : “#6B6860”,
“rock_layer_4” : “#6B6860”,
“rock_layer_5” : “#76726b”,
“rock_layer_6” : “#76726b”,
“rock_layer_7” : “#76726b”,
“rock_layer_8” : “#76726b”,
“rock_layer_9” : “#82807b”,
“rock_layer_10” : “#82807b”,
“rock_layer_11” : “#82807b”,
“rock_layer_12” : “#82807b”,
“rock_layer_13” : “#918d86”,
“rock_layer_14” : “#918d86”,
“rock_layer_15” : “#918d86”,
“rock_layer_16” : “#918d86”,
“rock_layer_17” : “#b3b0aa”,
“rock_layer_18” : “#b3b0aa”,
“rock_layer_19” : “#b3b0aa”,
“rock_layer_20” : “#c1c0bb”,
“rock_layer_21” : “#c1c0bb”,
“rock_layer_22” : “#c1c0bb”,
“rock_layer_23” : “#c1c0bb”,
“rock_layer_24” : “#c1c0bb”,
“rock_layer_25” : “#c1c0bb”,
“rock_layer_26” : “#c1c0bb”,
“rock_layer_27” : “#c1c0bb”,
“rock_layer_28” : “#c1c0bb”,
“rock_layer_29” : “#c1c0bb”,
“rock_layer_30” : “#c1c0bb”,
“soil_light”: “#757F8E”,
“soil_dark”: “#656F7E”,
“dirt”: “#DDDCD9”,
“dirt_edge_1”: “#CFCCC3”,
“grass”: “#FEFEFE”,
“grass_edge_1”: “#E2E8ED”,
“grass_edge_2”: “#F0F3F5”,
“grass_hills”: “#A6B3CB”,
“grass_hills_edge_1”: “#909DB6”,
“grass_hills_edge_2”: “#9BA8C2”,
“copper_ore”: “#C87533”,
“tin_ore”: “#B0A080”,
“iron_ore”: “#90B0D0”,
“silver_ore”: “#CCCCCC”,
“gold_ore”: “#FFD700”,
“coal”: “#021C24

   "__comment": "other colors",
     "marble"              : "#DEDEDE"

  }

},
“terrain”: {
“__comment”: “minimum height for surface of terrain”,
“noise_map_settings”: {
“__comment”: “The lower this number: the more noise there is, the higher: the less. Def: 4”,
“octaves”: 3.0,
“__comment”: “The higher this number: the more intricate terrain shapes created, the lower: the more simple. Def: 0.015, Max 1, Min 0”,
“persistence_ratio”: 0.5,
“__comment”: “The higher this number: the larger the scale of the noise, the lower: the smaller the scale. Def: 3.5”,
“bandlimit”: 4.0,
“__comment”: “can stretch the terrain vertically to allow for long mountain ridges. Above 1 stretches the terrain vertically, below 1 stretches the terrain horizontally. Def: 1”,
“aspect_ratio”: 1.0
},
“__comment”: “Literal percentage of terrain which is plains. Def 40”,
“plains_percentage”: 55,
“__comment”: “This is an offset in regards to where the layers line up. Def 36, must be 1 plus a multiple of five.”,
“height_base”: 36,
“__comments”: {
“valley_count”: “offset of layers from base”,
“step_count”: “number of layers”,
“step_size”: “size of layer, for foothills and mountains this has to be multiple of 5”
},
“plains”: {
“__comment”: “Generally don’t mess with plains.”,
“__comment”: “This is a value of how high the plains are. Def 2, must be 2 plus a multiple of 5”,
“step_size”: 2,
“__comment”: “Unsure what this does… causes crashes. Def 1”,
“valley_count”: 1,
“__comment”: “Unsure what this does… causes crashes. Def 2”,
“step_count”: 2
},
“foothills”: {
“__comment”: “This is the height of the layers. Def 10, multiple of 5”,
“step_size”: 5,
“__comment”: “Number of steps of foothills. Def 2”,
“step_count”: 4
},
“mountains”: {
“__comment”: “Unsure what this does… causes crashes. Def 15”,
“step_size”: 10,
“__comment”: “This is the number of steps (minus 1) that is a mountain height. Def 7”,
“step_count”: 21
}
},
“terrain_detailer”: {
“__comment”: “These values adjust the outcroppings - things sticking off the sides of the 'step’s.”,
“mountains”: {
“__comment”: “determines the height of the first layer”,
“depth_function”: {
“__comment”: “The smaller this number, the more noise is displayed in the outcroppings. Think of this as the number of voxels before noise change. Def 4”,
“octaves”: 2,
“__comment”: “This decreases each octave by this % - it causes more noise the higher it is. Towards 0 is more smooth. Def 0.2”,
“persistence_ratio”: 0.4,
“__comment”: “Unsure what this does… Def 2.5”,
“amplitude”: 2.5,
“__comment”: “This controls the thickness of the little things that stick out the sides of the flat mountain faces. Def 3”,
“layer_thickness”: 3,
“__comment”: “This controls the number of layers coming out for the ‘depth’ of the outcropping… Def 2”,
“layer_count”: 4,
“__comment”: “determines how many adjacent blocks have the same depth - which means, how thick the outcroppings are. Low values (esp below 1) cause lots of separation and single brick wide outcropings, but still represent the original shape (from when the number is high). Def 12”,
“unit_length”: 12
},
“height_function”: {
“__comment”: “Seems to control whether or not the outcropping noise is visible, but value doesn’t seem to matter as long as it isn’t below 1. Def 4”,
“octaves”: 4,
“__comment”: “Unsure what this does… larger values seem to have more and more connected outcroppings, lower values seem to have less and less connected ones. Def 0.1”,
“persistence_ratio”: 0.1,
“__comment”: “This controls the complexity of the outcroppings… Def 2.5”,
“amplitude”: 2.5,
“__comment”: “This modifies the complexity of the top of the outcroppings. Smaller numbers are more complex, larger numbers are more simple… Def 5”,
“layer_thickness”: 3,
“__comment”: “determines how many adjacent blocks have the same depth. I believe this is controlling how ‘wide’ the noise is - so a value of 16 is 16 blocks with the same height value. Def 16”,
“unit_length”: 6
}
},
“foothills”: {
“depth_function”: {
“octaves”: 4,
“persistence_ratio”: 0.2,
“amplitude”: 2.5,
“layer_thickness”: 3,
“layer_count”: 6,
“unit_length”: 6
},
“height_function”: {
“octaves”: 4,
“persistence_ratio”: 0.1,
“amplitude”: 2.5,
“layer_thickness”: 1,
“unit_length”: 24
}
},
“plains”: {
“depth_function”: {
“layer_thickness”: 1,
“layer_count”: 1,
“unit_length”: 8
},
“height_function”: {
“layer_thickness”: 1,
“unit_length”: 8
}
}
},
“landscape”: {
“placement_table”: {
“stonehearth:trees:pine:small”: {
“placement_type”: “dense”,
“parameters”: {
“__comment”: “This is a grid within the 16x16 feature tile. increases the number of trees placed next to each other… Def 2”,
“grid_multiple”: 2,
“__comment”: “This controls how many trees are within a 16x16 feature tile… Def 0.5”,
“item_density”: 0.5,
“__comment”: “How close can two trees get to each other… Def 2”,
“exclusion_radius”: 2
},
“mountains”: {
“__comment”: “Unsure what this does - doesn’t appear to be any small dark pine trees on mountains, so why is this here?”,
“placement_type”: “single”,
“parameters”: {
“__comment”: “How close to the edge of the 16x16 feature tile. Think of this as the radius of a tree’s footprint. Def 2”,
“ground_radius”: 2,
“__comment”: “Unsure why we have 2… Def 3”,
“exclusion_radius”: 3
}
}
},
“stonehearth:trees:pine:medium”: {
“placement_type”: “single”,
“parameters”: {
“__comment”: “Makes sure that the footprint of the tree is on flat ground (not hanging over a cliff). Def 2”,
“ground_radius”: 2,
“__comment”: “Makes sure that trees don’t get placed inside of this area. Def 4”,
“exclusion_radius”: 4
}
},
“stonehearth:trees:pine:large”: {
“placement_type”: “single”,
“parameters”: {
“grid_multiple”: 0.5,
“item_density”: 0.1,
“ground_radius”: 3,
“exclusion_radius”: 4
}
},
“stonehearth:trees:juniper:small”: {
“placement_type”: “dense”,
“parameters”: {
“__comment”: “This spawns trees in clumps on top of each other… Def 2”,
“grid_multiple”: 2,
“__comment”: “Not sure what this is doing… Def 0.5”,
“item_density”: 0.5,
“__comment”: “Not sure what this is doing… Def 2”,
“exclusion_radius”: 2
},
“mountains”: {
“placement_type”: “single”,
“parameters”: {
“__comment”: “Not sure what this is doing… Def 0”,
“ground_radius”: 0,
“__comment”: “Not sure what this is doing… Def 3”,
“exclusion_radius”: 3
}
}
},
“stonehearth:trees:juniper:medium”: {
“placement_type”: “single”,
“parameters”: {
“ground_radius”: 0,
“exclusion_radius”: 4
}
},
“stonehearth:trees:juniper:large”: {
“placement_type”: “single”,
“parameters”: {
“__comment”: “Not sure what this is doing… Def 1”,
“ground_radius”: 1,
“exclusion_radius”: 4
}
},
“stonehearth:trees:juniper:ancient”: {
“placement_type”: “single”,
“parameters”: {
“ground_radius”: 1,
“exclusion_radius”: 5
}
},
“stonehearth:trees:pine:small”: {
“placement_type”: “dense”,
“parameters”: {
“grid_multiple”: 2,
“item_density”: 0.5,
“exclusion_radius”: 2
},
“mountains”: {
“placement_type”: “single”,
“parameters”: {
“ground_radius”: 0,
“exclusion_radius”: 3
}
}
},
“stonehearth:trees:pine:medium”: {
“placement_type”: “single”,
“parameters”: {
“ground_radius”: 1,
“exclusion_radius”: 4
}
},
“stonehearth:trees:pine:large”: {
“placement_type”: “single”,
“parameters”: {
“ground_radius”: 2,
“exclusion_radius”: 6
}
},
“stonehearth:plants:brightbell”: {
“placement_type”: “dense”,
“parameters”: {
“grid_multiple”: 4,
“item_density”: 0.1,
“exclusion_radius”: 1
}
},
“stonehearth:plants:frostsnap”: {
“placement_type”: “dense”,
“parameters”: {
“grid_multiple”: 4,
“item_density”: 0.2,
“exclusion_radius”: 1
}
},
“stonehearth:plants:violet”: {
“placement_type”: “dense”,
“parameters”: {
“grid_multiple”: 2,
“item_density”: 0.1,
“exclusion_radius”: 1
}
},
“stonehearth:plants:wintermoss”: {
“placement_type”: “dense”,
“parameters”: {
“grid_multiple”: 4,
“item_density”: 0.1,
“exclusion_radius”: 1
}
},
“stonehearth:plants:silkweed”: {
“placement_type”: “dense”,
“parameters”: {
“grid_multiple”: 4,
“item_density”: 0.1,
“exclusion_radius”: 1
}
},
“stonehearth:plants:sweet_potato”: {
“placement_type”: “dense”,
“parameters”: {
“grid_multiple”: 4,
“item_density”: 0.1,
“exclusion_radius”: 0
}
},
“stonehearth:plants:berry_bush”: {
“placement_type”: “pattern”,
“parameters”: {
“__comment”: “Minimum Rows. Def 2, Values 0 to 2.”,
“min_rows”: 2,
“__comment”: “Maximum Rows. Def 2, Values 1 to 5.”,
“max_rows”: 2,
“__comment”: “Minimum Columns. Def 2”,
“min_cols”: 2,
“__comment”: “Maximum Columns. Def 3”,
“max_cols”: 3,
“__comment”: “This is the space between the items placed; actually is one less than the value. Def 5”,
“item_spacing”: 5,
“__comment”: “This value is a percentage of the rows and columns above. Def 0.9, Values 0 to 1”,
“item_density”: 0.9
}
},
“taiga_biome:terrain:cloud_maker”: {
“placement_type”: “dense”,
“parameters”: {
“__comment”: “This appears to be the number of items which are placed across a 10x10 grid. Def 4, value 0 to 9.”,
“grid_multiple”: 2,
“__comment”: “This appears to be a percentage chance of placing an item somewhere along a single line of that grid above. Def 0.1, value 0 to 1.”,
“item_density”: 0.2,
“__comment”: “Unsure what this does… Def 1”,
“exclusion_radius”: 1
}
},
“stonehearth:boulder:small”: {
“placement_type”: “dense”,
“parameters”: {
“__comment”: “This appears to be the number of items which are placed across a 10x10 grid. Def 4, value 0 to 9.”,
“grid_multiple”: 3,
“__comment”: “This appears to be a percentage chance of placing an item somewhere along a single line of that grid above. Def 0.1, value 0 to 1.”,
“item_density”: 0.1,
“__comment”: “Unsure what this does… Def 1”,
“exclusion_radius”: 1
}
},
“stonehearth:boulder:medium_1”: {
“placement_type”: “single”,
“parameters”: {
“__comment”: “This appears to be the distance around the entities (maybe?). Going away from 1 in either direction seems to reduce the number of spawns. Def 1”,
“ground_radius”: 1,
“__comment”: “Unsure what this does… Def 2”,
“exclusion_radius”: 2
}
},
“stonehearth:boulder:medium_2”: {
“placement_type”: “single”,
“parameters”: {
“ground_radius”: 1,
“exclusion_radius”: 2
}
},
“stonehearth:boulder:medium_3”: {
“placement_type”: “single”,
“parameters”: {
“ground_radius”: 1,
“exclusion_radius”: 2
}
},
“stonehearth:boulder:large_1”: {
“placement_type”: “single”,
“parameters”: {
“ground_radius”: 2,
“exclusion_radius”: 3
}
},
“stonehearth:boulder:large_2”: {
“placement_type”: “single”,
“parameters”: {
“ground_radius”: 2,
“exclusion_radius”: 3
}
}
},
“trees”: {
“__comment”: “tree size variance. anything above 0 will be considered as tree placement, and the size of the tree is determined within the sizes node declared above”,
“sizes”: {
“stonehearth:trees:pine”: {
“small”: 0,
“medium”: 4,
“large”: 13,
}
}
},
“weights”: {
“plains”: {
“1”: {
“stonehearth:trees:pine”: 1

           }
        },
        "foothills": {
           "1": {
              "stonehearth:trees:pine": 1
           },
           "2": {
              "stonehearth:trees:pine": 1
           }
        },
        "mountains": {
           "1": {
              "stonehearth:trees:pine": 1
           },
           "2": {
              "stonehearth:trees:pine": 1
           }
        }
     },
     "noise_map_parameters": {
        "__comment": "gaussian function",
        "mean_offset": {
           "__comment": "boundary of terrain type",
           "__comment": "This keeps trees from spawning near the border. Def -5.  Negative is detractor, positive is attractor",
           "boundary": -5,
           "__comment": "Appears to be the percentage of water which is surrounded by trees... Def 50",
           "water": 50
        },
        "terrain_based": {
           "plains": {
              "1": {
                 "__comment": "This is a value which slides up and down the amount and size of trees. Def 1, Values 0 to 1",
                 "density": 1,
                 "__comment": "This value pushes tree spawns out with 0 being in the middle, positive numbers allowed. Def -40",
                 "mean": -20,
                 "__comment": "Standard Deviation: This value appears to be another similar adjustment to control the same as the two points above. Def 50",
                 "std_dev": 50
              },
              "2": {
                 "density": 2,
                 "mean": -1,
                 "std_dev": 70
              }
           },
           "foothills": {
              "1": {
                 "density": 0.9,
                 "mean": 15,
                 "std_dev": 15
              },
              "2": {
                 "density": 0.7,
                 "mean": 8,
                 "std_dev": 20
              }
           },
           "mountains": {
              "1": {
                 "density": 0.8,
                 "mean": 10,
                 "std_dev": 20
              },
              "2": {
                 "density": 0.5,
                 "mean": 0,
                 "std_dev": 30
              },
              "3": {
                 "density": 0.3,
                 "mean": -8,
                 "std_dev": 40
              }
           }
        }
     }
  },
  "berries": {
     "placement": {
        "uri": "stonehearth:plants:berry_bush",
        "function": "gaussian",
        "mean": -50,
        "std_dev": 30,
        "__comment": "offset of mean near different terrain/landscape - this creates a noise map based on the terrain feature chosen below",
        "mean_offset": {
           "tree": 90,
           "water": 10,
           "boundary": 5
        },
        "density": {
           "plains": 0.6,
           "foothills": 1,
           "mountains": 0
        }
     }
  },
  "scattered": {
     "plants": {
        "__comment": "for example, a small probability with a large density would be more clustered than a large probability with small density.",
        "weights": {
           "plains": {
              "1": {
                 "stonehearth:plants:brightbell": 2,
                 "stonehearth:plants:frostsnap": 2,
                 "stonehearth:plants:silkweed": 3,
                 "stonehearth:plants:wintermoss": 1,
                 "stonehearth:plants:sweet_potato": 1
              }
           },
           "foothills": {
              "1": {
                 "stonehearth:plants:frostsnap": 1,
                 "stonehearth:plants:brightbell": 7,
                 "stonehearth:plants:silkweed": 1,
                 "stonehearth:plants:sugarbell": 2,
                 "stonehearth:plants:carrot": 1,
                 "stonehearth:plants:violet": 2
              },
              "2": {
                 "stonehearth:plants:frostsnap": 2,
                 "stonehearth:plants:brightbell": 2,
                 "stonehearth:plants:sugarbell": 4,
                 "stonehearth:plants:silkweed": 0.5
              }
           },
           "mountains": {
              "1": {
                 "stonehearth:plants:frostsnap": 1,
                 "stonehearth:plants:sugarbell": 2
              },
              "3": {
                 "stonehearth:plants:frostsnap": 1,
                 "taiga_biome:terrain:cloud_maker": 5
              }
           }
        },
        "noise_map_parameters": {
           "terrain_based": {
              "plains": {
                 "1": {
                    "__comment": "Def 0.",
                    "probability": 0.0,
                    "__comment": "Def 0.6.",
                    "density": 0.6
                 },
                 "2": {
                    "__comment": "Def 0.35.",
                    "probability": 0.35,
                    "__comment": "Def 0.8.",
                    "density": 0.8
                 }
              },
              "foothills": {
                 "1": {
                    "probability": 0.35,
                    "density": 0.7
                 }
              },
              "mountains": {
                 "1": {
                    "probability": 0.3,
                    "density": 0.5
                 }
              }
           }
        }
     },
     "boulders": {
        "namespace": "stonehearth:boulder",
        "noise_map_parameters": {
           "__comment": "Same as noise map parameters of plants. this is after trees, water, berries and plants are generated",
           "terrain_based": {
              "plains": {
                 "1": {
                    "probability": 0,
                    "density": 0.6
                 },
                 "2": {
                    "probability": 0.35,
                    "density": 0.9
                 }
              },
              "foothills": {
                 "1": {
                    "probability": 0.15,
                    "density": 0.8
                 }
              },
              "mountains": {
                 "1": {
                    "probability": 0,
                    "density": 0.8
                 }
              }
           }
        },
        "__comments": "approximation of percentage thresholds of boulder sizes",
        "cutoffs": {
           "__comment": "Def 0.2.",
           "small": 0.2,
           "medium": 0.4
        }
     }
  },
  "water": {
     "color": "#48aad1C0",
     "__comment": "placement of water bodies occur at positive samples, parameters are for a standard simplex noise generator",
     "depth": {
        "__comment": "This is the exact depth of the 'shallows' sections of water.  Def 5.",
        "shallow": 10,
        "__comment": "This is the exact depth of the 'deep' sections of water.  Def 10.",
        "deep": 25
     },
     "noise_map_settings": {
        "__comment": "simplex noise function",
        "__comment": "This generally creates more noisy patterns of water, below 0 removes water.  Def 0.01.",
        "persistence_ratio": 0.01,
        "__comment": "This value seems to be a scale where the lower it is, the more and more separate water bodies there are; the larger it is, the less and larger more connected water bodies there are.  Def 4.  Value 0 removes water.",
        "bandlimit": 6,
        "__comment": "The smaller the number, the more small sparse water bodies there are; the larger the less large bodies there are.  Def 4.",
        "octaves": 5,
        "__comment": "This is the overall value of water bodies on the map.  The higher the number, the more water bodies; the lower the number less water bodies.  Def 80.",
        "range": 97,
        "__comment": "Unsure what this does.  Def 1.2.",
        "aspect_ratio": 1.5,
        "mean": {
           "__comment": "The larger this number, the larger the body of water in comparison to the land it is on.  Def -5.",
           "plains": -20,
           "__comment": "The larger this number, the larger the body of water in comparison to the land it is on.  Def -20.",
           "foothills": -60,
           "__comment": "The larger this number, the larger the body of water in comparison to the land it is on.  Def -18.",
           "mountains": -20
        }
     }
  }

}
}
stack traceback:
[C]: in function ‘load_json’
radiant/modules/resources.lua:40: in function ‘load_json’
…onehearth/services/server/world_generation/biome.lua:25: in function ‘__user_init’
radiant/lib/unclasslib.lua:270: in function ‘__init’
radiant/lib/unclasslib.lua:201: in function ‘Biome’
…server/world_generation/world_generation_service.lua:98: in function ‘_setup_biome_data’
…server/world_generation/world_generation_service.lua:58: in function ‘create_new_game’
…vices/server/game_creation/game_creation_service.lua:143: in function ‘create_new_world’
…vices/server/game_creation/game_creation_service.lua:178: in function <…vices/server/game_creation/game_creation_service.lua:162>

Have you validated your json in jsonlint.com?
There seems to be some missing comma or some bad character.

1 Like

oh no i didnt know that tool

now that i fixed all " } }," errors it flags every ‘__comment’
SyntaxError: Duplicate key ‘__comment’ on line 97

Is that error message from jsonlint?
Or does it appear in the game too?

All good i did a again on a clean version of the mod and now its seems fixed

1 Like

@Relyss can i ask you a couple of questions ?

Of course.

well i made a new topic for the first Question
but id like to know, is this wonderful moustache only Art style ? or will i see some norseling with em ?

It doesn’t exist in the game files afaik. So no, you won’t see any northmen with it. (Unless @Allie / @malley wanted / had spare time to implement it).

It’s just concept renders from the Kickstarter times, and the image in game (when you select NA in the first screen) is based on that one, I think.