Starbound

Starbound

26 ratings
Tools what I use for Starbound modding
By FUS
An assortment of programs and web pages what I use to make Starbound mods with.
   
Award
Favorite
Favorited
Unfavorite
The List:
    General Software

  1. 7-Zip: https://www.7-zip.org/ - used to open .zip and .7z archive files;

  2. PaintNET: https://www.getpaint.net/ - for pixel art, while Windows 11's Paint finally has layers implemented decades later, this is the one what I personally use (and I'm not switching to 11);

  3. Pixelorama: https://orama-interactive.itch.io/pixelorama - Also and specifically for pixel art, free on Itch, paid on Steam. Tried this editor out recently, and would honestly recommend you use it instead. Look and feel is closer to that of Photoshop (without eating all your RAM in the process thinking it's Chrome or something), and generally feels much better to work with than PaintNET (eye drop tool and pencil bound to separate mouse buttons by default? How did I managed without this for so long??);

  4. Unpack-Assets script by HyperHamster: https://github.com/HyperHamster/unpack-assets - a bulk mod unpacker script what I wished for years and searched... hours for. Scroll down to the "Options & Switches -A & /A" section to see how to use it as such.

    JSON and .Patch editing

  5. Notepad++: https://notepad-plus-plus.org/ - for JSON editing, invaluable, has many great features such as word highlighting; independent selection, copy-paste and editing on multiple lines at once using Ctrl; batch text replacement, code colour-coding and more;

  6. JsonToolsNppPlugin: https://github.com/molsonkiko/JsonToolsNppPlugin - actually for JSON editing, an add-on for Notepad++ that allows you to "prettyprint" JSONs, compress them, as well as fix various issues (it even corrects wrong/missing commas for you when you do the prettyprint formatting!);
    - The buttons that make the magic happen!

  7. Quick Color Picker Plugin: https://github.com/vinsworldcom/nppQCP/releases - found this one recently, after installing it will open up a pallette window whenever you double-click any eligible hex colour value inside your text file, which is quite convinient when dealing with something like a .species file. Has automatic highlighting as well but unfortunately only for certain programming languages (i.e. not JSON) and with a specific syntax (i.e. "123456" won't work, has to be "#123456", which afaik Starbound itself won't recognise, double-click still works though). Maybe someone smarter than me can fix all of that, but I wouldn't be holding my breath;

  8. Kawa's Starbound JSON Lab: https://helmet.kafuka.org/sbmods/json/ - has a lot of info in regards to Starbound's JSON files, also Tools like a JSON Linter, Validator, but most importantly;
    Kawa's Starbound Patcher: https://helmet.kafuka.org/sbmods/json/patch.html - which allows you to get a modified JSON file out of an original + a patch for it and then pressing "Patch", or generate a patch automatically using the original file as an input, and a modified file as the expected output and then pressing "Diff";

  9. RFC 6902 Patch Generator: https://chbrown.github.io/rfc6902/ - linked on the Lab page as well, it can generate a patch automatically using the original file as an input, and a modified file as the expected output, technically redundant due to the previous point, but some might prefer how it writes patches differently compared to Kawa's (you can copy the entire result easily by first selecting/highlighting the top square bracket, and then the bottom one while holding Shift).

  10. Dungeon Patch Cheat Sheet for Every Planet on the Workshop (with .biome files): https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=3468061577
_Metadata File Copy&Paste
Taken from the Starbound Wiki[starbounder.org]and added in 2 versions for ease of access.
First one is for common use case - a basic mod what works on it's own and doesn't need any dependencies or priority changes.
And the second one is with all options listed, but probably shouldn't be used just like that, unless you really know what you're doing with the load order.

//Basic version, "Link" and "Steam Content ID" fields are filled out by Steam automatically.
//Note: While you can write-in the tags manually, you can also add them (and see all of the available options) through the Mod Uploader Tool!
{ "name" : "PlaceHolderSystemName", "friendlyName" : "Place Holder Public-Facing Name", "description" : "Placeholder", "author" : "John P.LaceHolder", "version" : "1.0", "link" : "", "steamContentId" : "", "tags" : "" } //All Parameters Version.
//Note: "Requires" parameter will crash the game with no survivors if it's demands are not fully met, and will not accept if one of the mods (required or the one requiring) is installed locally, while the other is through the Steam Workshop.
{ "name" : "PlaceHolderSystemName", "friendlyName" : "Place Holder Public-Facing Name", "description" : "PlaceHolder", "author" : "John P.LaceHolder", "version" : "1.0", "link" : "", "steamContentId" : "", "tags" : "", "includes" : ["ModSystemName"], "requires" : ["ModSystemName1", "ModSystemName2"], "priority" : 0 }
ProTip: Adding Your Dungeons to Lush/Garden Planets
While technically considered off-limits due to story dungeons being there. This actually doesn't stop you from adding-in more dungeons, for example in cases where story content was disabled entirely, or the dungeon limit was simply removed by other mods.

Just add another patch as shown below into your terrestrial_worlds.config.patch, separated by square brakets from the rest of the planetary spawnpools, and your dungeon will appear on Lush planets whenever the limit on them is no longer detected.

[ [ { "op": "test", "path": "/planetTypes/garden/layers/surface/dungeonCountRange", "inverse" : true }, { "op" : "add", "path" : "/planetTypes/garden/layers/surface/dungeons/-", "value" : [1.0, "dungeon name here"] } ], [ { "The rest of the patches start here" } ] ]
On the ("Test",) Parameter:
Often overlooked, but it allows you to probe the target JSON for certain values or paths before applying changes to it, preventing possible crashes or errors in the log to occur needlessly.
Goes without saying that if the test fails, remaining operations what are sharing the same square brackets with it will be aborted.

Here's the 4 basic examples of how you can use it:

[ // An example patch for universe_server.config; // Example 1: Check if the target Path exists, if yes, then remove it. [
{
"op": "test",
"path": "/findStarterWorldParameters/starterWorld/terrestrialSize"
},
{
"op": "remove",
"path": "/findStarterWorldParameters/starterWorld/terrestrialSize"
}
],
// Example 2: Check if the target Value in a certain Path exists, if yes, then replace it with another value. // Sidenote: "Replace" works the same way as doing "Remove" and then "Add" would work, just combined into a single operation. [
{
"op": "test",
"path": "/findStarterWorldParameters/starterWorld/terrestrialBiome",
"value": "garden"
},
{
"op": "replace",
"path": "/findStarterWorldParameters/starterWorld/terrestrialBiome",
"value": "barren"
}
],
// Example 3: Check if the target Path doesn't exist, if so, then add it in, can also be populated in one operation by adding a ("value":) parameter. // Note: While "requiredSystemWorlds" does exist already in the universe_server.config by default, for the sake of this example it is assumed that another patch has removed it. [
{
"op": "test",
"path": "/findStarterWorldParameters/requiredSystemWorlds",
"inverse": true
},
{
"op": "add",
"path": "/findStarterWorldParameters/requiredSystemWorlds",
"value": {
"Forest",
"Desert",
"Snow"
}
}
],
// Example 4: Check if the target Value exists in a certain position (always counting from zero) on the list of values, if yes, then replace it with another value. [
{
"op": "test",
"path": "/findStarterWorldParameters/requiredSystemWorlds/1",
"value": "Desert"
},
{
"op": "replace",
"path": "/findStarterWorldParameters/requiredSystemWorlds/1",
"value": "Savannah"
}
]
]