Whatever the case, I cannot for the life of me figure out how exactly merging works. I'm trying to figure out what lines to remove, what lines to keep, and if I should be writing other code somewhere else. I've looked for a tutorial on merging, but I can't seem to find any, other than the 6 sentence one Bartwe posted. If anyone could tell me what I'm doing wrong or even direct me to a good tutorial, that would be MUCH appreciated. Here's the code I had before merging: Code: { "name" : "desert", "hueShiftOptions" : [-56, -45, -16, -26, 0], "skyOptions" : [ { "mainColor" : [255, 255, 255], "morningColors" : [ [255, 224, 129], [252, 230, 164] ], "dayColors" : [ [255, 152, 107], [255, 183, 152] ], "eveningColors" : [ [254, 121, 69], [254, 165, 129] ], "nightColors" : [ [60, 0, 0], [20, 0, 0] ], "morningLightColor" : [202, 177, 100], "dayLightColor" : [202, 138, 100], "eveningLightColor" : [202, 100, 100], "nightLightColor" : [40, 17, 17] }, { "mainColor" : [255, 255, 255], "morningColors" : [ [255, 151, 153], [255, 196, 197] ], "dayColors" : [ [233, 179, 255], [245, 221, 225] ], "eveningColors" : [ [195, 151, 255], [233, 217, 255] ], "nightColors" : [ [60, 0, 0], [20, 0, 0] ], "morningLightColor" : [176, 81, 83], "dayLightColor" : [182, 137, 200], "eveningLightColor" : [150, 115, 199], "nightLightColor" : [56, 17, 17] }, { "mainColor" : [255, 255, 255], "morningColors" : [ [203, 167, 56], [203, 108, 56] ], "dayColors" : [ [179, 255, 188], [215, 255, 220] ], "eveningColors" : [ [59, 129, 201], [14, 97, 181] ], "nightColors" : [ [40, 0, 60], [10, 0, 20] ], "morningLightColor" : [158, 121, 42], "dayLightColor" : [151, 207, 191], "eveningLightColor" : [71, 159, 172], "nightLightColor" : [17, 19, 56] }, { "mainColor" : [255, 255, 255], "morningColors" : [ [203, 167, 56], [203, 108, 56] ], "dayColors" : [ [179, 223, 251], [190, 190, 210] ], "eveningColors" : [ [201, 169, 59], [195, 47, 44] ], "nightColors" : [ [40, 0, 60], [10, 0, 20] ], "morningLightColor" : [158, 121, 42], "dayLightColor" : [190, 190, 210], "eveningLightColor" : [124, 50, 38], "nightLightColor" : [17, 19, 56] }, { "mainColor" : [255, 255, 255], "morningColors" : [ [140, 140, 180], [120, 120, 180] ], "dayColors" : [ [190, 190, 210], [170, 170, 210] ], "eveningColors" : [ [160, 120, 180], [140, 100, 180] ], "nightColors" : [ [40, 0, 60], [10, 0, 20] ], "morningLightColor" : [140, 140, 180], "dayLightColor" : [190, 190, 210], "eveningLightColor" : [160, 120, 180], "nightLightColor" : [26, 26, 31] }, { "mainColor" : [255, 255, 255], "morningColors" : [ [227, 209, 123], [244, 196, 66] ], "dayColors" : [ [197, 236, 246], [133, 185, 235] ], "eveningColors" : [ [246, 220, 186], [246, 177, 88] ], "nightColors" : [ [40, 0, 60], [10, 0, 20] ], "morningLightColor" : [192, 174, 126], "dayLightColor" : [190, 202, 204], "eveningLightColor" : [192, 125, 80], "nightLightColor" : [26, 26, 31] }, { "mainColor" : [255, 255, 255], "morningColors" : [ [219, 119, 184], [246, 153, 177] ], "dayColors" : [ [197, 236, 246], [133, 185, 235] ], "eveningColors" : [ [189, 143, 172], [255, 194, 192] ], "nightColors" : [ [40, 0, 60], [10, 0, 20] ], "morningLightColor" : [200, 158, 169], "dayLightColor" : [190, 202, 204], "eveningLightColor" : [163, 134, 134], "nightLightColor" : [29, 26, 31] }, { "mainColor" : [255, 255, 255], "morningColors" : [ [255, 167, 152], [255, 163, 208] ], "dayColors" : [ [228, 152, 169], [243, 205, 193] ], "eveningColors" : [ [221, 186, 235], [247, 73, 121] ], "nightColors" : [ [40, 0, 60], [10, 0, 20] ], "morningLightColor" : [195, 156, 149], "dayLightColor" : [197, 184, 182], "eveningLightColor" : [197, 98, 126], "nightLightColor" : [28, 14, 14] }, { "mainColor" : [255, 255, 255], "morningColors" : [ [167, 255, 152], [163, 255, 208] ], "dayColors" : [ [152, 228, 169], [205, 243, 193] ], "eveningColors" : [ [186, 221, 235], [73, 247, 121] ], "nightColors" : [ [0, 40, 60], [0, 10, 20] ], "morningLightColor" : [156, 195, 149], "dayLightColor" : [184, 197, 182], "eveningLightColor" : [126, 166, 138], "nightLightColor" : [24, 28, 24] } ], "surfaceParameters" : { "mainBlock" : "sand2", "subBlocks" : [ "sand", "sandstone01", "rock17" ], "ores" : "surfaceOres", "statusParameters" : { "temperatureBounds" : [3, 10], "dayNightTemperatureVariability" : -13, "temperatureVariability" : 3 }, "weather" : [ [ [0.1, "glowingrain"], [0.9, "clear"] ], [ [0.05, "acidrain"], [0.95, "clear"] ], [ [0.03, "meteorshower"], [0.97, "clear"] ], [ [0.01, "largemeteor"], [0.99, "clear"] ], [ [1.0, "clear"] ], [ [1.0, "clear"] ], [ [1.0, "clear"] ], [ [1.0, "clear"] ], [ [1.0, "clear"] ], [ [1.0, "clear"] ] ], "parallax" : "desert.parallax", "undergroundParallax" : "desert.undergroundparallax", "ambientNoises" : { "day" : { "tracks" : [ "/sfx/environmental/desert_day.ogg" ] }, "night" : { "tracks" : [ "/sfx/environmental/desert_night.ogg" ] } }, "undergroundAmbientNoises" : { "day" : { "tracks" : [ "/sfx/environmental/desert_underground.ogg" ] }, "night" : { "tracks" : [ "/sfx/environmental/desert_underground.ogg" ] } }, "musicTrack" : { "day" : { "tracks" : [ "/music/epsilon-indi.ogg", "/music/hymn-to-the-stars.ogg", "/music/planetarium.ogg", "/music/procyon.ogg", "/music/stellarformation.ogg", "/music/vastimmortalsuns.ogg", "/music/atlas.ogg", "/music/blue-straggler.ogg", "/music/cygnus-x1.ogg", "/music/europa.ogg", "/music/haiku.ogg", "/music/M54.ogg", "/music/on-the-beach-at-night.ogg" ] }, "night" : { "tracks" : [ "/music/arctic-constellation1.ogg", "/music/arctic-constellation2.ogg", "/music/mercury.ogg", "/music/mira.ogg", "/music/procyon.ogg", "/music/tranquility-base.ogg", "/music/psyche.ogg", "/music/accretion-Disc.ogg", "/music/cygnus-x1.ogg", "/music/eridanus-supervoid.ogg", "/music/horsehead-nebula.ogg", "/music/large-magellanic-cloud.ogg", "/music/M54.ogg", "/music/Nomads.ogg", "/music/on-the-beach-at-night.ogg" ] } }, "undergroundMusicTrack" : { "day" : { "tracks" : [ "/music/epsilon-indi.ogg", "/music/hymn-to-the-stars.ogg", "/music/planetarium.ogg", "/music/procyon.ogg", "/music/stellarformation.ogg", "/music/vastimmortalsuns.ogg", "/music/atlas.ogg", "/music/blue-straggler.ogg", "/music/cygnus-x1.ogg", "/music/europa.ogg", "/music/haiku.ogg", "/music/M54.ogg", "/music/on-the-beach-at-night.ogg" ] }, "night" : { "tracks" : [ "/music/arctic-constellation1.ogg", "/music/arctic-constellation2.ogg", "/music/mercury.ogg", "/music/mira.ogg", "/music/procyon.ogg", "/music/tranquility-base.ogg", "/music/psyche.ogg", "/music/accretion-Disc.ogg", "/music/cygnus-x1.ogg", "/music/eridanus-supervoid.ogg", "/music/horsehead-nebula.ogg", "/music/large-magellanic-cloud.ogg", "/music/M54.ogg", "/music/Nomads.ogg", "/music/on-the-beach-at-night.ogg" ] } }, "surfacePlaceables" : { "grassMod" : [ "sand" ], "grassModDensity" : 0.9, "items" : [ { "mode" : "floor", "priority" : 3.0, "variants" : 1, "distribution" : "/biomes/distributions.config:tiyDist", "type" : "microdungeon", "microdungeons" : [ "block1platforms", "loops", "spiralspikes", "blocks", "stripeblocks", "blockpile", "reversepyramids", "flats", "spikes", "rods", "wiggles", "rockyshapes", "layeredspire", "blank", "none" ] }, { "mode" : "floor", "priority" : 1.0, "variants" : 1, "distribution" : "/biomes/distributions.config:potsRare", "type" : "object", "objectSets" : [ { "pool" : [ [0.35, "capsulesmall" ], [0.35, "capsulemed" ], [0.35, "capsulebig" ] ], "parameters" : { } } ] }, { "mode" : "floor", "priority" : 1.0, "variants" : 1, "distribution" : "/biomes/distributions.config:potsRare", "type" : "object", "objectSets" : [ { "pool" : [ [1, "wildautomatoseed" ] ], "parameters" : { "startingStage" : 2 } }, { "pool" : [ [1, "wildboltbulbseed" ] ], "parameters" : { "startingStage" : 2 } }, { "pool" : [ [1, "wildcurrentcornseed" ] ], "parameters" : { "startingStage" : 2 } }, { "pool" : [ [1, "wildkiwiseed" ] ], "parameters" : { "startingStage" : 2 } }, { "pool" : [ [1, "wildshockrootseed" ] ], "parameters" : { "startingStage" : 2 } }, { "pool" : [ [1, "wildduneshroomseed" ] ], "parameters" : { "startingStage" : 2 } }, { "pool" : [ [1, "wildcantappleseed" ] ], "parameters" : { "startingStage" : 2 } }, { "pool" : [ [1, "wildsugarcaneseed" ] ], "parameters" : { "startingStage" : 2 } } ] }, { "mode" : "floor", "priority" : 0.0, "variants" : 1, "distribution" : "/biomes/distributions.config:overgroundChests", "type" : "treasureBox", "treasureBoxSets" : [ "basicChest" ] }, { "mode" : "floor", "priority" : 0.0, "variants" : 1, "distribution" : "/biomes/distributions.config:overgroundChests", "type" : "treasureBox", "treasureBoxSets" : [ "weaponChest" ] }, { "mode" : "floor", "priority" : 1.0, "variants" : 1, "distribution" : "/biomes/distributions.config:overgroundChests", "type" : "object", "objectSets" : [ { "pool" : [ [1, "statuspod" ] ], "parameters" : { } } ] }, { "mode" : "floor", "priority" : 3.0, "variants" : 1, "distribution" : "/biomes/distributions.config:scatteredSmall", "type" : "grass", "grasses" : [ "pebbles" ] }, { "mode" : "floor", "priority" : 3.0, "variants" : 1, "distribution" : "/biomes/distributions.config:tiyDistTerrainfeatures", "type" : "microdungeon", "microdungeons" : [ "terrainfeatures" ] }, { "mode" : "floor", "priority" : 3.0, "variants" : 1, "distribution" : "/biomes/distributions.config:randomEncounter", "type" : "microdungeon", "microdungeons" : [ "randomencounter", "apexencounter", "avianencounter", "floranencounter", "glitchencounter", "humanencounter" ] }, { "mode" : "floor", "priority" : 3.0, "variants" : 1, "distribution" : "/biomes/distributions.config:minibossoverground", "type" : "microdungeon", "microdungeons" : [ "minibossoverground" ] }, { "mode" : "floor", "priority" : 3.0, "variants" : 1, "distribution" : "/biomes/distributions.config:tiyDistPlatform", "type" : "microdungeon", "microdungeons" : [ "aridplatforming" ] }, { "mode" : "floor", "priority" : 2.0, "variants" : 1, "distribution" : "/biomes/distributions.config:rareClumpyLarge", "type" : "bush", "bushes" : [ { "name" : "cactus1", "baseHueShiftMax" : 40, "modHueShiftMax" : 180 }, { "name" : "cactus2", "baseHueShiftMax" : 40, "modHueShiftMax" : 180 } ] }, { "mode" : "floor", "priority" : 1.0, "variants" : 1, "distribution" : "/biomes/distributions.config:rareClumpyLarge", "type" : "tree", "treeFoliageHueShiftMax" : 180, "treeStemHueShiftMax" : 15, "treeStemList" : [ "desertpalm", "alienpalm", "bark", "beach", "blank", "cactus", "cross", "palm", "plain", "twirl" ], "treeFoliageList" : [ "palmleaves", "palmy", "roseleaves", "lushleaves", "palmlush", "elegant" ] } ] }, "undergroundPlaceables" : { "grassMod" : [ "sand" ], "grassModDensity" : 0.9, "items" : [ { "mode" : "floor", "priority" : 1.0, "variants" : 1, "distribution" : "/biomes/distributions.config:scatteredPots", "type" : "object", "objectSets" : [ { "pool" : [ [0.35, "capsulesmall" ], [0.35, "capsulemed" ], [0.35, "capsulebig" ] ], "parameters" : { } } ] }, { "mode" : "floor", "priority" : 0.0, "variants" : 1, "distribution" : "/biomes/distributions.config:undergroundChests", "type" : "treasureBox", "treasureBoxSets" : [ "basicChest" ] }, { "mode" : "floor", "priority" : 0.0, "variants" : 1, "distribution" : "/biomes/distributions.config:undergroundtechChests", "type" : "treasureBox", "treasureBoxSets" : [ "techChest" ] }, { "mode" : "floor", "priority" : 1.0, "variants" : 1, "distribution" : "/biomes/distributions.config:undergroundChests", "type" : "object", "objectSets" : [ { "pool" : [ [1, "statuspod" ] ], "parameters" : { } } ] }, { "mode" : "floor", "priority" : 0.0, "variants" : 1, "distribution" : "/biomes/distributions.config:undergroundChests", "type" : "treasureBox", "treasureBoxSets" : [ "weaponChest" ] }, { "mode" : "floor", "priority" : 1.0, "variants" : 1, "distribution" : "/biomes/distributions.config:scatteredSmall", "type" : "grass", "grasses" : [ "pebbles" ] } ] } }, "subSurfaceParameters" : { "mainBlock" : "sandstone01", "subBlocks" : [ "gravel", "sand" ], "ores" : "deepsurfaceOres", "statusParameters" : { "temperatureBounds" : [4, 10], "dayNightTemperatureVariability" : -15, "temperatureVariability" : 3 }, "undergroundPlaceables" : { "grassMod" : [ "sand" ], "grassModDensity" : 0.2, "items" : [ { "mode" : "floor", "priority" : 0.0, "variants" : 1, "distribution" : "/biomes/distributions.config:undergroundChests", "type" : "treasureBox", "treasureBoxSets" : [ "basicChest" ] }, { "mode" : "floor", "priority" : 1.0, "variants" : 1, "distribution" : "/biomes/distributions.config:undergroundChests", "type" : "object", "objectSets" : [ { "pool" : [ [1, "statuspod" ] ], "parameters" : { } } ] }, { "mode" : "floor", "priority" : 0.0, "variants" : 1, "distribution" : "/biomes/distributions.config:undergroundChests", "type" : "treasureBox", "treasureBoxSets" : [ "weaponChest" ] }, { "mode" : "floor", "priority" : 0.0, "variants" : 1, "distribution" : "/biomes/distributions.config:undergroundtechChests", "type" : "treasureBox", "treasureBoxSets" : [ "techChest" ] }, { "mode" : "floor", "priority" : 1.0, "variants" : 1, "distribution" : "/biomes/distributions.config:scatteredSmall", "type" : "object", "objectSets" : [ { "pool" : [ [0.35, "capsulesmall" ], [0.35, "capsulemed" ], [0.35, "capsulebig" ] ], "parameters" : { } } ] }, { "mode" : "floor", "priority" : 1.0, "variants" : 1, "distribution" : "/biomes/distributions.config:scatteredSmall", "type" : "grass", "grasses" : [ "pebbles" ] } ] } }, "allowedDetachedBiomes" : [ "bones", "sandstone", "tar", "oasis", "colourful", "arctic", "arid", "desert", "forest", "grasslands", "jungle", "magma", "ocean", "savannah", "snow", "tentacles", "tundra", "volcanic" ] } Here's the code I ended up with, and didn't work: Code: { "__merge" : [], "surfacePlaceables" : { { "objectSets" : [ { "pool" : [ [1, "wildshockrootseed" ] ], "parameters" : { "startingStage" : 2 } }, { "pool" : [ [1, "wildduneshroomseed" ] ], "parameters" : { "startingStage" : 2 } }, { "pool" : [ [1, "wildcantappleseed" ] ], "parameters" : { "startingStage" : 2 } } ] }, }, } I'm trying to merge the desert.surfacebiome file so that crops included in my mod will spawn naturally on desert planets.
My previous post had a horrible mistake - so I edited it last second Code: { "__merge" : [], "surfacePlaceables" : { "__merge" : [], "items" : [{ "__merge" : [], "objectSets" : [ { "pool" : [ [1, "wildshockrootseed" ] ], "parameters" : { "startingStage" : 2 } }, { "pool" : [ [1, "wildduneshroomseed" ] ], "parameters" : { "startingStage" : 2 } }, { "pool" : [ [1, "wildcantappleseed" ] ], "parameters" : { "startingStage" : 2 } } ] } ] } } Even I am not a 100% sure about this. But the original mistakes were you skipped the items array. You added extra commas in the end. I am not 100% sure about the last merge. But give it a try and post the starbound.log
I get an error. "MapException: Key 'desert' not found in Map::get() 00A6657B" Starbound log, if I'm correct, says: Code: Info: Preparing Star::Root... Info: Loading Star::Configuration from '..\starbound.config' Info: Done preparing Star::Root. Info: Client version 'Beta v. Furious Koala' '636' Info: Running from : C:\Program Files (x86)\Steam\steamapps\common\Starbound\win32\starbound.exe Info: Starting from the title screen Info: Initialized SDL Info: Initialized SDL Video Info: Initialized SDL Joystick Info: Initialized SDL Sound Info: Opened default audio device with 44khz / 16 bit stereo audio, 2048 sample size buffer Info: Initializing SDL Window Info: Loading Star::Root... Info: Created initial window 1000x600 Info: Initializing SDL Window Info: Re-created window 1366x706 Info: Loading Star::Configuration from '..\starbound.config' Info: Not loading ImageMetadataDatabase from file '..\image.cache', digest mismatch or assets not digestable Error: Could not load /biomes/surface/desert/desert.surfacebiome asset, attempting to use default. AssetException: Could not read variant asset /biomes/surface/desert/desert.surfacebiome caused by: JsonParsingException: Cannot parse json file: /biomes/surface/desert/desert.surfacebiome caused by: JsonParsingException: Error parsing json: bad object, should be '}' or ',' at 22:11 009AE772 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/core/StarVariant.hpp:14) 00511B96 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarAssets.cpp:584) 00512B2C (/Users/builder/starbound-slave/releasebuilder-windows/build/source/core/StarVariant.hpp:41) 00508AFF (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarAssets.cpp:992) ... (3) 00514B51 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarAssets.cpp:712) 0098243C (/Users/builder/starbound-slave/releasebuilder-windows/build/source/core/StarThread_windows.cpp:74) 7729336A kernel32.dll 77DF9F72 ntdll.dll 77DF9F45 ntdll.dll Warn: Missing inventoryIcon for chestplant1, using default Warn: Missing inventoryIcon for barvent, using default Warn: Missing inventoryIcon for wreckvent, using default Error: Could not load /items/swords/cerpine/axe/cerpinettier2axe.png asset, attempting to use default. AssetException: No such asset '/items/swords/cerpine/axe/cerpinettier2axe.png' 0050D750 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarAssets.hpp:18) 00512D84 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarAssets.cpp:866) 00508AFF (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarAssets.cpp:992) ... (5) 005140FC (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarAssets.cpp:677) 00554816 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarImageMetadataDatabase.cpp:126) 00551CDE (/Users/builder/starbound-slave/releasebuilder-windows/build/source/core/StarArray.hpp:122) 005520D0 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarDrawable.cpp:453) 00552190 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarDrawable.cpp:460) 005898F0 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarItem.cpp:263) 006DD06E (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/items/StarSword.cpp:280) ... (4) 005D424D (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarRecipeDatabase.cpp:33) ... (2) 004FDAFE (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarRoot.cpp:209) 0040494C (/Users/builder/starbound-slave/releasebuilder-windows/build/source/client/StarClientApplication.cpp:305) 0098243C (/Users/builder/starbound-slave/releasebuilder-windows/build/source/core/StarThread_windows.cpp:74) 7729336A kernel32.dll 77DF9F72 ntdll.dll 77DF9F45 ntdll.dll Info: Done loading Star::Root. Info: Writing Star::Configuration to '..\starbound.config' Warn: Perf: ClientApplication::render millis: 1550 Warn: Perf: StarApplicationBase::run.innerLoop.render millis: 1550 Warn: Perf: StarApplicationBase::run.innerLoop millis: 1707 Info: Shutting down Star::Root Error: MapException: Key 'desert' not found in Map::get() 00A6657B (/Users/builder/starbound-slave/releasebuilder-windows/build/source/core/StarMap.hpp:13) 00696C4F (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarBiomeDatabase.cpp:78) 00563BEF (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarPlanetGenerator.cpp:93) 005649A0 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarPlanetGenerator.cpp:59) 00564AF4 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarPlanetGenerator.cpp:43) 004FC53E (/Users/builder/starbound-slave/releasebuilder-windows/build/source/game/StarCelestialCoordinate.hpp:16) 0040A6C4 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/application/StarApplicationBase.cpp:200) 00407E74 (/Users/builder/starbound-slave/releasebuilder-windows/build/source/client/main.cpp:38) 004EC0C1 (\SDL-1.2.15/./src/main/win32/SDL_win32_main.c:318)
heh you were a bit too quick and didn't let me edit in time. Recopy the one i gave. the bracket [ { were switched it was fixed now.
No problem glad it worked - it was a nice puzzle to figure out. Anyway if you need any more help with merges http://community.playstarbound.com/...ial-starbound-unoffical-modding-e-book.67821/ I broke down merges near the end of the pdf in the reference section