Code, graphics and conventions to help modders creating planets, moons and other systems. This is a community project.
Lua libraries for use by other mods and submods that are parts of a larger mod.
Version: 1.13.1 Date: 2025-09-14 Features: - Added a mod-data prototype("Planetslib-planet-lock-rocket-silos") that defines if vanilla-style rocket silos have their recipes locked on being placed. Intended to allow mods with alternative rocket part recipes to selectively unlock rocket silos when placed on all or on particular surfaces.
Version: 1.13.0 Date: 2025-09-13 Features: - Added user-facing setting(enabled by default) that adds new tooltips to the game that expose previously-hidden information relevant to the user. - New tooltip: Heat dissipation - New tooltip: Resets freshness on beginning craft - New tooltip: Resets freshness on completing craft Locale: - Updated Korean locale(By PolarZero)
Version: 1.12.1 Date: 2025-09-08 Changes: - Added PlanetsLib.check_global_variables, a function run at the beginning of every data cycle that checks if key global variables are not fully deleted by other mods.
Version: 1.12.0 Date: 2025-08-23 Features: - Added a script to generate "Visit [planet]" achievement graphics. - Added PlanetsLib.visit_planet_achievement, a function that returns an achievement for visiting a given planet.
Version: 1.11.1 Date: 2025-08-23 Changes: - PlanetsLib_recipe_productivity_effects technology field will no longer add recipes with allow_productivity disabled unless PlanetsLib_recipe_productivity_effects.allow_recipes_without_productivity == true.
Version: 1.11.0 Date: 2025-08-18 Features: - Added new helper function: PlanetsLib.crushing_recipe_icons. - Added new helper function: PlanetsLib.asteroid_crushing_recipe_icons. - Added new helper function: PlanetsLib.advanced_crushing_recipe_icon. - Migrated Cerys' centrifuge fluid box and graphical effects to PlanetsLib. Changes: - Added new library graphics: asteroid-crushing.png and generic-crushing.png
Version: 1.10.7 Date: 2025-08-16 Changes: - Added new optional shadow_scale(number) parameter to technology_icon_moon and technology_icon_planet that adds a shadow layer to the returned icon when defined. - Added new library graphic: reprocessing-arrow.png
Version: 1.10.6 Date: 2025-08-14 Changes: - Added new optional parameters to PlanetsLib.borrow_music: track_types(table) and modifier_function(function), both optional. New syntax: PlanetsLib.borrow_music(source_planet, target_planet, (optional) options{track_types,modifier_function})
Version: 1.10.5 Date: 2025-08-09 Bugfixes: - Fixed a very rare crash in the cargo pod scripts.
Version: 1.10.4 Date: 2025-08-09 Changes: - Added a new API to control the cargo drops whitelist using mod-data prototypes. The old remote interface API is still supported to avoid breaking changes.
Version: 1.10.3 Date: ??? Changes: - Orbit generator script now can run as a standalone program that handles its own dependencies.
Version: 1.10.2 Date: 2025-08-02 Bugfixes: - Fixed crash when another mod deletes effects from a vanilla recipe productivity technology before PlanetsLib loads its data stage.
Version: 1.10.1 Date: 2025-08-02 Bugfixes: - Eliminated requirement to have an "effects" field when using "PlanetsLib_recipe_productivity_effects" in a technology.
Version: 1.10.0 Date: 2025-08-02 Features: - Added TechnologyPrototype field "PlanetsLib_recipe_productivity_effects" field, must be added before data-final-fixes. Simplifies the maintenance of recipe productivity technologies by automatically adding every recipe that produces a particular item/fluid. Changes: - Added user-facing option to set PlanetsLib_recipe_productivity_effects field for relevant vanilla technologies. Enabled by default, but can be disabled when incompatibility issues are noted. - Added initial support for LDoc to prepare PlanetsLib for more proper documentation.
Version: 1.9.0 Date: 2025-08-02 Bugfixes: - Fixed a bug in PlanetsLib:update() in which the positions of the given planet's children were not appropriately updated. Changes: - PlanetsLib:update() no longer supports taking an array of configs, unless the array has length 1.
Version: 1.8.3 Date: 2025-07-28 Bugfixes: - Rocket silos locked after being set to a PlanetsLib-designated rocket part recipe.
Version: 1.8.2 Date: 2025-07-20 Changes: - Removed debug code that made 'Logistic science pack' a hidden technology. Ecksdee.
Version: 1.8.1 Date: 2025-07-20 Changes: - 'Unlinked prerequisites' text moved to locale file.
Version: 1.8.0 Date: 2025-07-20 Changes: - Our first player-facing settings: 'Warn on hidden prerequisites' and 'Unlink hidden prerequisites'. These prevent unresearchable technologies from arising due to compatibility issues.
Version: 1.7.1-1.7.3 Date: 2025-07-20 Changes: - In order for players to hold their tiers fixed and still be able to update PlanetsLib, the tiers have moved to a new mod: PlanetsLib: Tiers - You can now access their values using `local tier = data.raw["mod-data"]["PlanetsLib-tierlist"].data[type][name] or data.raw["mod-data"]["PlanetsLib-tierlist"].data.default`. (The APIs get_planet_tier and get_space_location_tier are now undocumented but still exist for backwards compatibility.) Info: - Changelog update.
Version: 1.7.0 Date: 2025-07-15 Changes: - Added unified interface allowing planets to define rocket silo recipes on a per-surface basis.
Version: 1.6.4 Date: 2025-07-10 Bugfixes: - Fixed a possible crash in the cargo pod remote interface. Locale: - Added German translation. Changes: - Update to the orbit generator script to support valid sprites for larger orbit radii.
Version: 1.6.3 Date: 2025-06-29 Changes: - Tiers: Stargate from Metal and Stars to tier 4
Version: 1.6.2 Date: 2025-06-16 Changes: - Fixed a crash when adding an item to the cargo drops whitelist for a specific planet.
Version: 1.6.1 Date: 2025-06-12 Changes: - Tiers for Jahtra and Paracelsin added.
Version: 1.6.0 Date: 2025-06-11 Changes: - Moved the 'tier' property to PlanetsLib from Organized Solar System, allowing other authors to make use of it. The tier is a number assigned to each planet to indicate where it likely appears in Space Age gameplay progression. - Rubia tier set to 4.5.
Version: 1.5.2 Date: 2025-06-02 Changes: - Russian translation updated.
Version: 1.5.1 Date: 2025-05-25 Changes: - Corrected the locale entries for cargo drops to remove the reference to construction robots.
Version: 1.5.0 Date: 2025-05-21 Changes: - Deprecated the implicit APIs planetslib_sort_sciences and planetslib_ensure_all_packs_from_vanilla_lab in favor of PlanetsLib.sort_science_pack_names and PlanetsLib.add_science_packs_from_vanilla_lab_to_technology. - PlanetsLib no longer modifies the promethium-science-pack and research-productivity technologies to add packs from vanilla labs to them.
Version: 1.4.3 Date: 2025-05-15 Changes: - Renamed the surface conditions Oxygen, Nitrogen, Carbon Dioxide and Argon to Atmospheric Oxygen, Atmospheric Nitrogen, Atmospheric Carbon Dioxide and Atmospheric Argon.
Version: 1.4.2 Date: 2025-05-13 Changes: - Added a safety assertion in get_child_technologies.
Version: 1.4.1 Date: 2025-05-12 Changes: - Construction robots are no longer whitelisted for cargo drops by default. - Remote interface provided for mods to whitelist cargo drop items.
Version: 1.4.0 Date: 2025-05-12 Changes: - PlanetsLib no longer has Space Age as a mandatory dependency.
Version: 1.3.8 Date: 2025-05-11 Changes: - New API: get_child_technologies.
Version: 1.3.7 Date: 2025-05-04 Changes: - Fixed a crash caused presumably by another mod shadowing the 'util' namespace.
Version: 1.3.6 Date: 2025-05-02 Changes: - Fixed a crash in excise_tech_from_tech_tree.
Version: 1.3.5 Date: 2025-05-02 Changes: - Fixed a crash in remove_surface_condition.
Version: 1.3.4 Date: 2025-04-26 Changes: - Fixed API export.
Version: 1.3.3 Date: 2025-04-26 Changes: - New API: remove_surface_condition
Version: 1.3.2 Date: 2025-04-25 Changes: - New API: excise_effect_from_tech_tree
Version: 1.3.1 Date: 2025-04-21 Changes: - Renamed all the 'magic' fields supported on prototypes to start with 'planetslib_' to make them less cryptic. (The previous names are still supported.) - Removed unique planet surface conditions from the documentation for now as their error message is suboptimal.
Version: 1.3.0 Date: 2025-04-21 Changes: - Added two new APIs: excise_tech_from_tech_tree and excise_recipe_from_tech_tree.
Version: 1.2.20 Date: 2025-04-15 Changes: - The Cargo drop technology effect icon now matches the icon of the planet.
Version: 1.2.19 Date: 2025-04-14 Changes: - Updated Ukrainian localization.
Version: 1.2.18 Date: 2025-04-10 Changes: - Modified PlanetsLib.borrow_music() to allow the copying of music to/from "space-platform."
Version: 1.2.17 Date: 2025-04-03 Info: - Added Space Age tag.
Version: 1.2.16 Date: 2025-03-18 Changes: - Incompatility mark added for MT-lib.
Version: 1.2.15 Date: 2025-03-16 Changes: - Performance improvement to the cargo pod restriction technology feature.
Version: 1.2.14 Date: 2025-03-16 Changes: - If the 'type = "nothing"' effect is removed from a given cargo drops technology, PlanetsLib will no longer enforce that this technology must be researched to perform cargo drops.
Version: 1.2.13 Date: 2025-03-12 Changes: - Compatibility fix to handle the case where the vanilla lab has duplicate science packs listed in its inputs.
Version: 1.2.12 Date: 2025-03-03 Graphics: - Fixed positioning of corner icons in discovery technologies. Locale: - Russian locale update.
Version: 1.2.11 Date: 2025-02-26 Changes: - Fixed a crash on missing 'deepcopy' field.
Version: 1.2.9 Date: 2025-02-24 Changes: - Added an icon intended to represent item and recipes used only in ResearchProgressProducts.
Version: 1.2.8 Date: 2025-02-18 Locale: - French localization added.
Version: 1.2.7 Date: 2025-02-18 Changes: - Hidden optional dependency added for Cosmic Social Distancing.
Version: 1.2.6 Date: 2025-02-07 Changes: - No longer write 'Space Locations' in the remote view planet GUI. Space locations isn't technically correct here.
Version: 1.2.5 Date: 2025-02-05 Changes: - Fixed the API technology_icon_constant_planet.
Version: 1.2.4 Date: 2025-02-05 Changes: - New thumbnail. - Image size compression.
Version: 1.2.3 Date: 2025-02-04 Changes: - Fixed bug in which promethium science tech required promethium to research it.
Version: 1.2.2 Date: 2025-02-03 Changes: - New API: technology_icon_planet
Version: 1.2.1 Date: 2025-02-03 Changes: - Readme update.
Version: 1.2.0 Date: 2025-02-02 Changes: - Mods are now able to move child locations simply by updating the position of the parent location. In data-final-fixes PlanetsLib now detects whether a location prototype's orbit object no longer matches the prototype's position and orientation fields, and if so, it applies the same positional shift to all that location's orbit children.
Version: 1.1.42 Date: 2025-02-02 Changes: - Moved the nonfunctional orbit-setting code from data-final-fixes to data-updates.
Version: 1.1.41 Date: 2025-01-31 Changes: - Rename give_all_packs_in_vanilla_lab to ensure_all_packs_from_vanilla_lab.
Version: 1.1.40 Date: 2025-01-31 Changes: - New API: give_all_packs_in_vanilla_lab.
Version: 1.1.39 Date: 2025-01-31 Changes: - Improve error message for specifying an orbit with a parent that doesn't exist.
Version: 1.1.38 Date: 2025-01-31 Changes: - New helper: PlanetsLib.technology_icon_constant_planet.
Version: 1.1.37 Date: 2025-01-30 Changes: - Updated the orbit image Python script to better center satellites on their orbit line.
Version: 1.1.36 Date: 2025-01-29 Changes: - New APIs for management of science inputs in labs.
Version: 1.1.35 Date: 2025-01-27 Changes: - borrow_music no longer copies hero tracks unless the `planet` field matches the source planet, matching the same behavior as other tracks.
Version: 1.1.34 Date: 2025-01-25 Changes: - Fixed the size of the sun being slightly increased whilst PlanetsLib is installed. Locale: - Chinese update.
Version: 1.1.33 Date: 2025-01-24 Locale: - Japanese added.
Version: 1.1.32 Date: 2025-01-23 Changes: - New APIs: restrict_surface_conditions, relax_surface_conditions and restrict_to_planet.
Version: 1.1.31 Date: 2025-01-22 Changes: - (Missing.)
Version: 1.1.30 Date: 2025-01-22 Bugfixes: - Bugfix new API.
Version: 1.1.29 Date: 2025-01-22 Changes: - Properly export new API.
Version: 1.1.28 Date: 2025-01-22 Modding: - Simpler API for cargo drops technologies.
Version: 1.1.27 Date: 2025-01-19 Changes: - Updated the orbit image generation script. Locale: - Description update.
Version: 1.1.26 Date: 2025-01-15 Changes: - Readded PlanetsLib.borrow_music.
Version: 1.1.25 Date: 2025-01-15 Changes: - Removed PlanetsLib.borrow_music for now until issues can be resolved.
Version: 1.1.24 Date: 2025-01-14 Locale: - Fixed locale key.
Version: 1.1.23 Date: 2025-01-14 Bugfixes: - Fixed crash when a planet has no surface properties.
Version: 1.1.22 Date: 2025-01-14 Features: - PlanetsLib.exact_value(property,value): Returns a surface condition locking the acceptable range of values to one. - PlanetsLib.restrict_to_surface(planet): Returns a surface condition restricting a prototype to the provided planet. - Added hidden surface conditions "planet-str" and "parent-body". Each planet-str is by default based on the planet's internal name, and is expected to be unique. Moons have their parent body value set to their parent body's planet-str. - Added functions to set and get planet-str values. Info: - Added documentation for enabling optional surface conditions, in addition to everything else in this update. - Fixed incorrect API documentation for borrow_music and set_default_import_location. Locale: - Added set of description templates to standardize how the relationships between planets are moons are described.
Version: 1.1.21 Date: 2025-01-13 Bugfixes: - Support for mods that delete all space locations.
Version: 1.1.20 Date: 2025-01-13 Features: - The drawn starmap is now layered by a topological sort on the orbit structure. - Support for missing 'orientation' fields when the 'distance' is 0.
Version: 1.1.19 Date: 2025-01-12 Changes: - Update Python script examples
Version: 1.1.18 Date: 2025-01-12 Features: - Python script added to generate orbit images. This is a variation of MeteorSwarm's script.
Version: 1.1.17 Date: 2025-01-12 Changes: - Better error handling for `PlanetsLib:update`.
Version: 1.1.16 Date: 2025-01-12 Changes: - New API PlanetsLib:update to update existing planets or space location prototypes. Passing an `orbit` field will also update the `distance` and `orientation` fields of the prototype.
Version: 1.1.15 Date: 2025-01-12 Info: - Changelog fix.
Version: 1.1.14 Date: 2025-01-12 Features: - Support for all combinations of `starmap_icon`, `starmap_icons` and `sprite_only`. Previously, if `sprite_only` was true, `starmap_icons` was never read and it was impossible to hide the sprite by setting both to nil.
Version: 1.1.13 Date: 2025-01-10 Graphics: - Reinstated orbit images files in case people find them helpful. - Compressed the image files.
Version: 1.1.12 Date: 2025-01-03 Locale: - Czech localization added.
Version: 1.1.11 Date: 2025-01-03 Changes: - Switched API from PlanetsLib:planet_extend to PlanetsLib:extend.
Version: 1.1.10 Date: 2025-01-02 Locale: - Adds translation into Russian.
Version: 1.1.9 Date: 2025-01-02 Changes: - Compatibility with mods that update the positions of planets of other mods.
Version: 1.1.8 Date: 2025-01-02 Locale: - Added Chinese localization. Bugfixes: - Fixed solar system edge not having an orbit sprite.
Version: 1.1.7 Date: 2025-01-02 Bugfixes: - Fixed crash for planets without surface properties.
Version: 1.1.6 Date: 2025-01-02 Changes: - Surface conditions for gas composition. - New surface conditions are now off by default, unless requested by a mod.
Version: 1.1.5 Date: 2025-01-02 Bugfixes: - Bail when updating the starmap for a planet without an 'orbit' field.
Version: 1.1.4 Date: 2025-01-02 Bugfixes: - Fixed crash when space locations are added later than data.lua.
Version: 1.1.3 Date: 2025-01-02 Changes: - Compatibility with mods that set the 'orbit' field of planets and space locations to other objects.
Version: 1.1.2 Date: 2025-01-01 Changes: - is_space_location check enforced in planet_extend. - Readme note added about breaking changes will bump the major version. Special thanks added to MidnightTigger.
Version: 1.1.1 Date: 2025-01-01 Info: - Readme fixes.
Version: 1.1.0 Date: 2025-01-01 Changes: - API for planets switched from 'planet_type' to 'sprite_only'. This is now simply a boolean that determines whether the prototype should be removed in data-final-fixes and replaced by a sprite on the starmap. With this change, PlanetsLib now supports extra solar systems, binary systems, etc. - Form of 'parent' within 'orbit' changed to an object with 'type' and 'name' fields, rather than just a name. - Core locale overrides changes to use 'space location' terminology instead of planets and moons.
Version: 1.0.8 Date: 2025-01-01 Bugfixes: - Fixed items in cargo pod drops being allowed if they were not associated to an entity in Factorio.
Version: 1.0.7 Date: 2024-12-31 Info: - README.md update
Version: 1.0.6 Date: 2024-12-31 Info: - README.md update
Version: 1.0.5 Date: 2024-12-31 Changes: - Extract the unified API into 'api.lua' for clarity. Info: - Syncing of README.md to the mod portal.
Version: 1.0.4 Date: 2024-12-30 Changes: - Organized exports into a single API file for readability.
Version: 1.0.3 Date: 2024-12-30 Modding: - Compatibility with Organized Solar System.
Version: 1.0.2 Date: 2024-12-30 Bugfixes: - Fixed a crash.
Version: 1.0.1 Date: 2024-12-30 Modding: - Dependencies updated.
Version: 1.0.0 Date: 2024-12-30 Modding: - APIs: PlanetsLib:planet_extend, PlanetsLib.technology_icons_moon, PlanetsLib.cargo_drops_tech_effect, PlanetsLib.technology_icons_planet_cargo_drops - When a technology with name '[planet_name]-cargo-drops' is created, cargo drops to that planet (excepting those with only players or construction robots) will be prevented until that technology is researched.