Maintaining Compatibility With Other Mods

Discussion in 'Starbound Modding' started by Iamgoofball, Dec 9, 2013.

Thread Status:
Not open for further replies.
  1. Maelkhor

    Maelkhor Intergalactic Tourist

    No, but you know it since you contradict yourself latter with your "Matter Manipulator MKII" exemple ;)

    It is also needed to to overwrite core files to introduce new recipes and so new "usefull" items into the game :
    overwrite doesn't necessarly mean modify the vanilla file, including one with the same name in your mod folder has the same effect

    - Edit player.config (this is the worst way)
    - Overwrite a vanilla item/object/material and use learnBlueprintsOnPickup
    - Use the stonefurnace workaround to introduce a custom object with learnBlueprintsOnPickup set on it
    - Edit a vanilla drop table and use learnBlueprintsOnPickup
    - Edit a quest reward , but this require a new character

    All of this are not a solution because it can create conflict between mods, i've done extensive test with overwriting :

    We can put in our mod folder a file with the same name as a vanilla item (and so not edit the vanilla item file itself) , it will replace it in game, the last file read by the game loader overwrite previous settings.

    I've done some suggestion to implement solution (hopefully easily) into the game in this thread :

    http://community.playstarbound.com/...ig-the-problem-with.42089/page-2#post-1495847
    http://community.playstarbound.com/index.php?threads/player-config-the-problem-with.42089/page-3#post-1497321

    Mirrored on reddit also :
    http://redd.it/1sq090

    Basically :
    - Add a property into a recipe telling the loader that this recipe is always available (with species/tier filter option if possible) , we know it's possible since stonefurnace recipe are.
    - Add a new class which goal is to "merge" array properties of object already loaded (would merge learnBlueprintsOnPickup values instead of overwriting them
    - Add a property into item/object (like "inherit=true, mergeArrays=true") telling the loader that we don't want to overwrite all the object but only replace some value, and that array should be merged instead of overwritten

    I think this is an non-urgent still important issue for the modding community that would make our live a lot easier without needing a lot of work in the game asset loader (pretty straitforward implementations)
     
  2. Createse

    Createse Big Damn Hero

    Editing the player.config file also requires a new character. I suspect PlayerID.player keeps a copy of the player.config internally at creation or something along those lines, much like starbound.config and default_configuration.config.

    Once a blueprint or whatever is learned however, I've found I can then proceed to make many changes to said blueprint [or whatever] and not have create a new character. This reinforces the caching theory above I believe.
     
    Last edited: Dec 13, 2013
  3. sweetcheeks

    sweetcheeks Aquatic Astronaut

    I was talking about having a modloader that uses a single point of entry for new items. If player.config isn't a good place for that single point of entry (because it only kicks in when a new character is created) Then make that single point of entry a learnBlueprintsOnPickup for a common item(copper ore, wood, whatever). Let the modloader deal with configuring that file (adding/removing entries when mods are enabled/disabled).

    There is of course much much better options as Chucklefish moves forward with a modding API, though I would imagine that won't happen for a while. I suppose we could just sit on our hands and just not really worry about it until Chucklefish releases a modding API.

    Regardless of coming up with a solution in the short term, it's going to end up better than the early minecraft modding era in the long run. :)
     
  4. Cayote

    Cayote Aquatic Astronaut

  5. sweetcheeks

    sweetcheeks Aquatic Astronaut

    So I noticed The Tabula Rasa mod the other day and thought I'd write back here. I think this adequately works for what the modloader would have been used for. http://community.playstarbound.com/index.php?resources/the-tabula-rasa.114/

    It's good enough for the entry point of any mod that deals with new recipes. i.e. If I'm making a mod that adds in electrical components, I would make the electrical workbench craftable with the tabula rasa, then all my electronic bits would be crafted at the electrical workbench.

    Excellent work from SnoopJedi and LowestFormOfWit .

    Also, this : http://community.playstarbound.com/...iding-and-merging-config-files-in-mods.53775/

    [edited for proper props :)]
     
    Last edited: Dec 17, 2013
  6. LowestFormOfWit

    LowestFormOfWit Pangalactic Porcupine

    Keep in mind I was only the graphical and quality assurance component of the mod. The actual dirty work goes to SnoopJedi who did all the actual codework and had the ambition to turn the concept into a mod. He also plans to update it to stay relevant and useful after the ___merge changes and .pak file format go through.

    Nonetheless: thank you. It's been catching on nicely.
     
  7. Ruban Crusade

    Ruban Crusade Pangalactic Porcupine

    Ok, so with the newest patch and new systems in place, I thought I'd like to do the "learnBlueprintOnPickup" trick and I thought I'd check with some of the blueprints I know you gain when you pick up a material. For example snowballs. But neither in the item file (.thrownitem) or in the recipe (.recipe) file did I find this (or similar) variable. Does anyone know if it has changed or how this is handled now?
     
Thread Status:
Not open for further replies.

Share This Page