Starbound

Starbound

Ship Yard - Race Patch #2
 This topic has been pinned, so it's probably important
bk3000  [developer] 18 Jun, 2019 @ 3:27pm
Easy how-to patch your favorite races into the shipyard (or other ships).
Obviously I haven't put out a race support patch in some time. Downloading every race (there are so many!) and extracting the data from them is a really big job that I'm not overly eager to do. These patches where made from all the races that existed at a much earlier point in time, and tons have been added since. Even then I had help getting all the important data.

Still periodically I see people wishing this and that race where supported. That's understandable of course. If you aren't trying to support EVERY race, then it is actually quite easy to build your own patches for one of a select few races. You can download this mod for an example if you want - easier to do from the official SB forums - https://community.playstarbound.com/resources/ship-yard-rebuilt-race-support-patch-2.4342/

WHAT YOU NEED
You'll notice this folder contains only 3 files
_metadata
_previewimage (doesn't matter/unnecessary)
universe_servier.config.patch

So all you really need are 2 tiny files in a folder.

_metadata
{ "author" : "Your_name_here", "description" : "Example patch that no one needs.", "friendlyName" : "Example patch", "includes" : ["Felins"], "name" : "shipyard_examplePatch", "requires" : ["bk3k_blocks_and_objects", "Ship Yard Rebuilt"] }
I cleaned up my own info. Put your own name/handle as the author.
Put whatever description - you can edit this later including directly from Steam but it isn't necessary to make it work anyhow. So that only matters if you decide to publish it - yes you have my permission as my mods are free use.

Set a "name" and "friendlyName" too. Such as "Bob_shipyardPatch" or whatever. Do not reuse a name someone else (such as myself) is using.

"includes" is a bit more important - you list the mod races that you'll support - and use the same strings as the mod's own "name" as found in their _metadata file.

Don't waste your time on "Felins" since this mod already supports them. I am just using them as an example. The point of "includes" is to ensure your patch loads AFTER the mods listed. Load order is important so that you over-write their data instead of having your own data over-written.

universe_servier.config.patch
Again this example only covers the "Felins" but you can swap their race for the one you are trying to patch into the shipyard.
[ [ { "op" : "test", "path" : "/speciesShips/felin", "inverse" : true }, { "op" : "add", "path" : "/speciesShips/felin", "value" : {} } ], [ { "op" : "replace", "path" : "/speciesShips/felin", "value" : [ "/ships/human/sr_T0.structure", "/ships/human/sr_T1.structure", "/ships/human/sr_T2.structure", "/ships/human/sr_T3.structure", "/ships/human/sr_T4.structure", "/ships/human/sr_T5.structure", "/ships/human/sr_T6.structure", "/ships/human/sr_T7.structure", "/ships/human/sr_T8.structure", "/ships/human/sr_T9.structure", "/ships/human/sr_T9.structure" ] } ] ]
That would put the "Felin" into the shipyard - specifically starting on the human ship. If you wanted to start them on the apex ship instead, you'd swap human for apex just like so -

[ [ { "op" : "test", "path" : "/speciesShips/felin", "inverse" : true }, { "op" : "add", "path" : "/speciesShips/felin", "value" : {} } ], [ { "op" : "replace", "path" : "/speciesShips/felin", "value" : [ "/ships/apex/sr_T0.structure", "/ships/apex/sr_T1.structure", "/ships/apex/sr_T2.structure", "/ships/apex/sr_T3.structure", "/ships/apex/sr_T4.structure", "/ships/apex/sr_T5.structure", "/ships/apex/sr_T6.structure", "/ships/apex/sr_T7.structure", "/ships/apex/sr_T8.structure", "/ships/apex/sr_T9.structure", "/ships/apex/sr_T9.structure" ] } ] ]

GETTING THE INFO YOU NEED

Now since your real target isn't likely the Felin (again because this mod already has them covered), you'll need to find the species info from that mod itself - aka either from that mod's own universe_server.config.patch file. Although you may be able to just ask their author, and you may be able to successfully guess it anyhow - but the string must be correct in any case or the patch won't work. Unpacking and checking their files is the most reliable method.

The same is true for the mod's internal "name". You need that string exactly as it is in the mod you are patching.

How to unpack? Other guides already exist, as well as tools that do it for you (found on the official SB forums). It isn't that hard though - and the author would probably provide the info if asked anyhow.

WHAT ABOUT OTHER SHIPS?
So you hate my Shipyard, eh? No problem. The same method works fine to make patches to other ships besides the shipyard. For example lets put the "Felin" on the stand-alone Vepr ship for example. And this example is more useful since I haven't put out any patches for the Vepr ship.

_metadata
{ "author" : "Your_name_here", "description" : "Example patch that maybe someone needs.", "friendlyName" : "Example patch", "includes" : ["Felins"], "name" : "Vepr_examplePatch", "requires" : ["bk3k_blocks_and_objects", "Vepr Ship(revived)"] }
As you can see, I changed the target of "requires" since this is targetting the Vepr ship aka another mod. The Vepr ship mod is obviously required for this - aka the user must download or subscribe to it - where as the Shipyard is not required.

universe_server.config.patch
[ [ { "op" : "test", "path" : "/speciesShips/felin", "inverse" : true }, { "op" : "add", "path" : "/speciesShips/felin", "value" : {} } ], [ { "op" : "replace", "path" : "/speciesShips/felin", "value" : [ "/ships/vepr/vepr_T0.structure", "/ships/vepr/vepr_T1.structure", "/ships/vepr/vepr_T2.structure", "/ships/vepr/vepr_T3.structure", "/ships/vepr/vepr_T3.structure", "/ships/vepr/vepr_T3.structure", "/ships/vepr/vepr_T3.structure", "/ships/vepr/vepr_T3.structure", "/ships/vepr/vepr_T3.structure", "/ships/vepr/vepr_T3.structure", "/ships/vepr/vepr_T3.structure" ] } ] ]

If you downloaded the Vepr ship mod, You might note that the .structure files for the Vepr ship are located in /ships/vepr/ rather than any racial specific folder path. As long as you point to the correct .structure files, all is well.

By all means go out there and patch your favorite races into your favorite ships. And publish your patches if you like so others can enjoy the same combinations of race and ship.

How to publish
Well other guides should exist, but this isn't hard. You can directly upload the files on the official SB forums for non-Steam users easily enough just go to that site and Click the "Add mod" button relatively on the top right.

As for Steam - when opening Starbound you get that menu option on bottom "Launch Mod Uploader Tool". It opens a simple program - you browse to your folder, Make sure your description data says what you want it to say etc, and hit "Upload to Steam!" As long as you don't get an error, it is done and you can close the program.

There is one more step so people can SEE your mod. Open Starbound's workshop page.
There is a link on the semi-top-right "Your files". Click on that.
"Files you've posted". Click on that.
Click on your mod from there, and you'll see your workshop page. You've seen others, but this one is YOUR page. There are some controls you haven't seen before - since this is your page.
You'll see "owner controls" on the right. Change visibility to "public" and in a few minutes everone will be able to see your mod. Granted if you really want, you can set it to "friends only" but you might as well let everyone use it. Your choice.
Last edited by bk3000; 7 Apr, 2020 @ 11:22am
< >
Showing 1-1 of 1 comments
bk3000  [developer] 18 Jun, 2019 @ 3:35pm 
Hopefully I haven't made it sound more complicated that it really is - because it really isn't complicated.
< >
Showing 1-1 of 1 comments
Per page: 1530 50