The main entry-point to the Artisanal Reskin asset mods. Provides convenience methods for creating Factorio data structures to support reskinning items, technologies, and entities.
Lua libraries for use by other mods and submods that are parts of a larger mod.
Version: 0.2.1
Date: 2026-11-09
Features:
- Added sprite sets for most remaining entities and equipment, as well as the corresponding applicators.
- Added `defines.get_belt_sprites` to select a BeltSprites enum value based on the specified `speed`.
- Added fluid box and heat buffer graphics to sprite sets
- Added modules `api.fluid-boxes`, `api.heat-buffers`, `api.connection-matching`, and `api.assignment` to facilitate working with fluid boxes and heat buffers dynamically.
- Added `api.energy-sources`, with methods for zeroing light flickers emitted by energy sources.
- Added `use_mirroring` to crafting machine sprite sets.
- Added a conversion from valve to storage tank sprite sets.
- Added the dying explosions, particles, and corpse fields of the base game to `assets.base`.
- Added `defines.generic_remnants` to resolve the generic remnants of the base game that fit an entity.
- Added `apply_corpse_and_explosion` to update the corpse and explosion assigned to an entity without adjusting its configured sprites.
- Added item and technology icon modules corresponding to artwork in the asset mods.
- Added the GUI sprites of the circuits and the bulk inserter effect to `assets.bobs.ui-sprites`.
- Added ore stages and fluid resources to `assets.bobs.entities.ores`.
- Added `IconBuilderFactory:collection` alongside picture variations, glow, and mipmap counts to the icon builders, with a default of 4 mipmaps.
- Added `IconBuilderFactory.dispatch_composition`, and a `get_*icon_composition` creator beside each `get_*icon` creator.
- Added methods to `icons` for retrieving technology constants, equipment overlays and backgrounds, and the overlays of minified machines.
- Added `icons.classify_symbol_layers`, which places symbol and letter layers in the symbol group of an icon composition.
Changes:
- Applying a sprite set now automatically creates and associates a correctly configured corpse, dying explosion, and particles.
- This now correctly sets up the death spiral for flying robots.
- Sprite sets now include water reflections, circuit connectors, frozen sprites, integration patches, heat pictures and pipe covers, drawing box extensions, and light flickers as appropriate.
- Sprite sets with the artwork of an earlier Factorio release now use the circuit connectors, frozen sprites, and water reflections of that release.
- `apply_sprite_set` now applies the `fluid_boxes`, `heat_buffers`, and `pipe_material` of every sprite set.
- Any existing pipe pictures are removed from fluid boxes when not provided by the sprite set.
- The `corpse` and `dying_explosion` of a sprite set now accept a definition or a prototype name.
- Added additional fields to `CorpseSpriteSet`, such as its flags and lifetime.
- The transport belt, underground belt, and splitter sprite sets now include the belt reader sprites and frozen patches.
- The pump, boiler, lab, heat exchanger, distillery, and Angel's sprite sets now validate their parameters.
- Changed the blend_mode of all highlights layers from `"additive-soft"` to `"additive"`.
Bugfixes:
- Fixed that the electric mining drill sprite sets were not correctly configured with animation waypoints.
- Fixed the Angel's filtration unit and hydro plant pipe pictures.
- Fixed the positioning of the lab sprites and frozen patch.
- Fixed that pumps did not include a shadow due to changes to the base sprites in Factorio 2.1.
- Fixed that remnant variations in several instances were not correctly configured, resulting in entities having only a single remnant variation instead of 2, 3, and 4 variations as intended.
- Fixed that the boiler applicator did not set the fire flicker.
- Fixed that the Angel's gas refinery, advanced gas refinery, and steam cracker sprite sets referenced a fire sprite that Factorio 2.1 removed.
- Fixed that the Angel's ore leaching plant had smoke.
- Fixed that the tall electric mining drill sprite set draw order for the north wet window was incorrect.
Breaking Changes:
- Renamed `defines.sprite_set_type.flying_robot_sprite_set` to `combat_robot_sprite_set`.
- Renamed `assets.angels.entities.assorted.loader` to `loader-1x2`, and `assets.assorted.entities.vanilla-loader` to `vanilla-loader-1x2`.
- Removed `apply_to_explosion` from `SpriteSetApplicator`, and the `include_frozen_pictures` parameter and `fluid_box` field from the pipe sprite sets.
- Removed the radius visualisation from the beacon and mining drill sprite sets.
- Removed `assets.base.items.icons`, and `research_speed` from `assets.base.technologies.icons`; use the sprite set modules and the catalog modules instead.
- `transport_belt_sprite_set` now applies only to transport belts.
- The transport belt, underground belt, and splitter applicators now set the `belt_animation_set` of the given prototype.
- `apply_sprite_set` no longer scales `belt_animation_set` automatically.
Version: 0.2.0
Date: 2026-11-01
Features:
- Updated for Factorio 2.1.
- Added the applicator framework: `api.applicators` applies a sprite set to a prototype in one call, handling routing, sprite set type conversion, and scaling on the caller's behalf.
- `applicators.apply_sprite_set(prototype, definition, params)` routes on `prototype.type` to the applicator that applies it; a `corpse` prototype instead applies the fields of `definition.set.corpse` directly.
- `defines.sprite_set_type` names the sprite set types, each recording the prototype types that consume it.
- Sprite data is scaled to the target prototype automatically, comparing the set's `nominal_width` and `nominal_height` against the prototype's inferred scale; `params.scale` and `params.scale_factor` override that directly, the latter relative to the nominal dimensions.
- `definition` is never modified, so one sprite set may be applied to an entity and to its corpse.
- Applicators ship for accumulators, beacons, boilers, crafting machines, electric poles, generators, inserters, and many others.
- Added the entity asset modules under `assets`: one flat module per entity family, each exporting `get_sprite_set` and `get_icon`.
- Modules are filed by the asset mod that adds the entity, under `assets.base.entities`, `assets.angels.entities`, `assets.bobs.entities`, and `assets.hurricane.entities`.
- A `nil` tint omits the tintable layers from a sprite set or icon rather than drawing them untinted.
- Added `api.converters`, the registry of conversions between sprite set types, so a sprite set need not already be of the type the applicator applying it consumes.
- `converters.resolve(definition, to_sprite_set)` returns the set of the target sprite set type, preferring a conversion defined on `definition.converters` over the registered ones.
- Conversions compose: registering `A` to `B` and `B` to `C` is enough to get `A` to `C`, along the shortest chain of conversions connecting them.
- Ships a conversion from `BoilerSpriteSet` to `CraftingMachineSpriteSet`.
- Added `api.applicator-registry` and `api.converter-registry`, whose `new` mints an empty registry of its kind.
- Added `api.validation`, a catalog of ready-made validators for the values this API works with: symbols, letters, pipe materials, prototypes, bounding boxes, sprite set types, sprite sets, and sprite set definitions.
- Entries are validator implementations extending the Artisanal Reskins: Sprite Utils `validation` module.
- Added `icons.get_tinted_icon`, returning a two-layer icon for a given file: an untinted base, and a copy of it tinted at 75% opacity over the top. Both layers come back with `icon_size` and `scale` filled in, from the optional `icon_size` and `defaults_type` given.
- This is the effect `icons.get_symbol` and `icons.get_letter` are built from.
- Added two new symbols: aperture-closed and aperture-open, denoting an open and closed iris.
- Added `api.icon-catalog`, the `IconCatalog` class, for building the functions that draw icons from a folder of artwork.
- `IconCatalog:create` creates a catalog with a folder, icon defaults type, and icon size; `:flat`, `:layers`, and `:tinted` create a builder for an icon.
- `IconBuilder` methods `base`, `mask`, `highlights`, `layer`, `tinted_layer`, `tinted_part`, and `keyed` add layers and parameters; `build` returns a function that draws the icon for a table of parameters.
- `IconCatalog.dispatch` creates a function that selects an icon by one parameter.
- `build_composition` on every builder returns a function that draws the icon as an `IconComposition` from Artisanal Reskins: Sprite Utils
- Added `defines.light`, the names of the light artwork.
Changes:
- Icon and sprite methods now validate their arguments through the Artisanal Reskins: Sprite Utils `validation` module; a failure names the function, the parameter, and the path within it, and reports every bad argument at once.
- `icons.get_symbol` and `icons.get_letter` now throw when `tint` is not a `Color`, rather than building an icon around an invalid tint.
- `icons.is_icons_using_reskins_images`, `icons.remove_symbols_from_icons`, and `icons.remove_letters_from_icons` now throw when given something that is not a layered icon; `icons.is_icons_using_reskins_images` previously answered `false` for `nil`.
- `sprites.get_sprite_light_layer` now throws when `light_name` is not the name of a light sprite, rather than returning a sprite pointing at a file that does not exist.
Bugfixes:
- Fixed that the boiler sprite set did not include the structure patch, fire, or fire glow elements.
Breaking Changes:
- `defines.assets` has changed to `defines.assets_source`.
- The defines, icons, and sprites modules no longer automatically include the Artisanal Reskins: Sprite Utils equivalents. They must be required and used separately.
- The graphics pack framework and all implementations have been removed.
Version: 0.1.2
Date: 2026-06-08
Changes:
- Electric furnace fluid box sprites are now available if a fluid box requires them, rather than when a particular sprite set is requested.
Bugfixes:
- Fixed that fluid boxes were not properly isolated from entity to entity when reskinned.
- Fixed that solar panel sprite scaling did not handle small and large sprite variants correctly.
Version: 0.1.1
Date: 2026-06-07
Bugfixes:
- Fixed startup crash due to several files that were required with wrong-case, when loading mods from zipped files is case-sensitive.
Version: 0.1.0
Date: 2026-06-07
Features:
- Initial release.