Things


Things provides advanced entity management capabilities to other Factorio mods. (This mod makes no gameplay changes. WARNING: disabling Things while other mods are using it may break your save!)

Internal
2 days ago
2.0 - 2.1
1.53K
Blueprints

Changelog

Version: 0.5.0
Date: 2026-07-10
  Changes:
    - Parent-child groups now update their relative positions in response to `script_raised_teleported` events. This should enable automatic support for mods like Picker Dollies. (Experimental)
    - Added `movable` option to `ThingRegistration` to control whether Things can be moved by external forces. (Experimental)
    - Added debug setting to force blueprints to be rewritten on extraction.
    - Removed `no_destroy_children_on_destroy` and `no_void_children_on_void` options from `ThingRegistration`.
    - Children of Things can now be non-Thing entities. (Experimental)
    - Types of child indices normalized to `string`. Child indices that were previously numbers will now be converted to strings.
    - The types of the following events have changed significantly: `on_children_changed`, `on_children_normalized`, `on_immediate_voided`.
    - The types of the following API endpoints have changed significantly: `things.get_children`, `things.add_child`
    - The types of most events that provided `things.ThingSummary` have been changed to provide `things.ThingShortSummary` instead.
Version: 0.4.2
Date: 2026-07-06
  Bugfixes:
    - Fixed a geometry miscalculation that happened when the unit-cell of an absolutely snapped blueprint was non-square.
Version: 0.4.1
Date: 2026-07-06
  Bugfixes:
    - Fixed a crash involving tile-only blueprints.
Version: 0.4.0
Date: 2026-07-06
  Changes:
    - Removed deprecated `ThingRegistration.custom_blueprint_geometry` field.
    - Removed `ThingRegistration.no_garbage_collection` field. It is no longer possible to opt out of garbage collection.
    - Added Things Client infrastructure.
    - Moved to EmmyLuaLS typings. Devs wanting type checking in IDE should add `0-things/client` directory to their `library` config path.
    - Added `client/combinators-v1` API.
    - Things is now a Cooperative Blueprinting Host. See https://github.com/project-cybersyn/cooperative-blueprinting/blob/main/cooperative-blueprinting.md for details.
  Bugfixes:
    - Fixed a blueprint rail snapping issue.
    - Blueprint snapping now correctly forces `space-platform-hub` to 0,0 in worldspace.
    - Fixed blueprint snapping issues with `cargo-bay` and `cargo-landing-pad`.
Version: 0.3.1
Date: 2026-06-30
  Changes:
    - Added `/things-doctor` console command to help diagnose issues with Things in the current save. `/things-doctor fix` can be used to automatically fix certain issues.
    - `on_initialized` event now includes a `from_blueprint` field indicating whether the Thing was initialized from a blueprint.
    - Removed some restrictions on possible virtual orientations that could be assigned to Things.
    - Updated some internal orientation handling to be more consistent with Factorio 2.1.
    - Added `undo_refcount` to `ThingSummary`.
    - Added `registration.lua` data-phase helper library for registering Things.
    - Added API `things-metadata-v1.get_things`
    - Added API `things-metadata-v1.get_by_unit_number`
    - API `things.get_transient_data` now accepts an optional `key` parameter to retrieve a single key from the transient data instead of the entire table.
    - Loosened typing of transient data to `any`. Note that you must still only pass data allowed over remote interfaces.
  Bugfixes:
    - Fixed a rare crash in an error handler for invalid blueprint tags.
    - Fixed a bug where Things were not being garbage collected in some situations even when their `undo_refcount` was zero. Use `/things-doctor fix` to eliminate any unreachable Things in your save.
Version: 0.3.0
Date: 2026-06-25
  Changes:
    - Updated to Factorio 2.1
Version: 0.2.6
Date: 2026-06-18
  Features:
    - Added API `things.remove_tag`
    - Added API `things.get_num_children`
    - Added API `things.script_create_blueprint`
    - Added API `things.script_prebuild_blueprint`
    - Added API `things-metadata-v1.decode_blueprint_tags`
    - Added API `things-metadata-v1.get`
    - Added API `things-metadata-v1.get_thing_id`
    - Added API `things-metadata-v1.get_status`
    - Added API `things-tags-v1.get_tag`
    - Added API `things-tags-v1.get_tags`
    - Added API `things-tags-v1.set_tag`
    - Added API `things-tags-v1.set_tags`
    - Added API `things-render-object-v1.attach_render_object`
    - Added API `things-render-object-v1.get_render_object`
    - Added API `things-render-object-v1.destroy_render_object`
  Optimizations:
    - Various optimizations in build events for blueprints and items not involving Things.
  Bugfixes:
    - Fixed an issue where mods registering for the `on_initialized` event would not be able to decode Thing names due to Factorio overwriting the `name` field. `name` is now available as `thing_name` in the event data.
    - Fixed some issues involving orphaned Things in parent-child setups.
    - Fixed a crash caused by a rare circumstance in which an undo/redo stack item could have zero actions.
Version: 0.2.5
Date: 2026-01-20
  Bugfixes:
    - Fixed an issue where mods that immediately revive ghosts inline with on_build (e.g. Blueprint Sandboxes) would cause Thing IDs to be lost.
    - Fixed further issues in relative blueprint snapping.
Version: 0.2.4
Date: 2025-12-25
  Bugfixes:
    - Fixed an issue involving the orientation of Things in rotated/flipped blueprints.
    - Fixed further issues in relative blueprint snapping.
Version: 0.2.3
Date: 2025-12-05
  Features:
    - Added `ThingRegistration.custom_blueprint_geometry` option to specify custom blueprint geometry for Things.
  Changes:
    - Added "Debug: render blueprint bounding boxes" flag to settings.
    - Added "Debug: calculate geometry for blueprints with no Things" flag to settings.
  Bugfixes:
    - Fixed a rare rounding issue in blueprint bbox computation.
    - Fixed several issues in blueprint relative snapping computation.
Version: 0.2.2
Date: 2025-11-23
  Bugfixes:
    - Fixed crash in undo/redo relating to missing surface indexes.
Version: 0.2.1
Date: 2025-10-30
  Bugfixes:
    - Fixed a performance issue involving degenerately large undo/redo items causing lag spikes on construction events.
    - Fixed an issue where `on_orientation_changed` wasn't firing properly.
Version: 0.2.0
Date: 2025-10-28
  Features:
    - Added preliminary support for entity settings copy/paste. Copy/paste will now correctly move tags between Things of the same name.
    - Added new concept of transient children, children that aren't themselves Things, but are associated with a Thing and destroyed alongside it.
    - Added API `things.add_transient_child`
    - Added API `things.remove_transient_child`
    - Added API `things.get_transient_child`
    - Added API `things.get_transient_children`
    - Added `cause` field to `things.EventData.on_tags_changed` to indicate whether the tag change was triggered by the API or the engine.
    - Added API `things.merge_tags`
    - Added API `things.set_tag`
    - API `things.create_thing` now accepts an optional `tags` parameter to set initial tags on the created Thing.
    - Added API `things.get_thing_id`
    - Implemented `things.ThingRegistration.migrate_tags_callback` which allows migration of entities that already have stored blueprint tags into Things.
    - Implemented `things.ThingRegistration.initial_tags_callback` which allows setting initial tags on Things with intercepted construction.
Version: 0.1.3
Date: 2025-10-27
  Features:
    - Added `things.ThingRegistration.Child.lifecycle_type` option for automatic children.
  Bugfixes:
    - Fixed an issue where automatic children of ghost parents would always be created as real.
    - Fixed an issue where automatic children of ghost parents could destroy parents because of collision.
    - Fixed an issue where automatic children would not match the quality of their parents.
    - Added an intentional Lua error at startup when a child registration has no matching Thing registration.
Version: 0.1.2
Date: 2025-10-25
  Bugfixes:
    - Fixed an issue with rounding that broke blueprint position computations.
Version: 0.1.1
Date: 2025-10-25
  Features:
    - Added `things.ThingRegistration.allow_in_cursor`
    - Added `things.get_edge` remote interface call.
  Bugfixes:
    - Automatically-oriented children are now correctly reoriented before the parent reorientation event is broadcast.
  Changes:
    - Breaking: Orientation class names have changed.
Version: 0.1.0
Date: 2025-10-25
  Features:
    - Initial release.
    - Thing registration and construction interception.
    - Lifecycle management and associated APIs and events.
    - Automatic parent-child and associated APIs.
    - Thing graphs and associated APIs and events.
    - See online documentation for full details.