Skip to content

Releases: redruin1/factorio-draftsman

1.1.1

24 Jan 18:18
Compare
Choose a tag to compare
  • Updated factorio-data to version 1.1.103
  • Merged RosieBaish's pull request:
    • Added an extend() function to EntityList along with notes about it's performance
  • Fixed issue #101 (finally)

1.1.0

19 Sep 12:20
Compare
Choose a tag to compare

1.1.0

  • Added a number of missing prototype objects that are blueprintable:
    • SimpleEntityWithOwner
    • SimpleEntityWithForce
    • PlayerPort
  • Fixed an issue where color settings were not recognized in the settings stage (#103)
  • Fixed issue loading IndustrialRevolution modpack (regression) (#98)

1.0.6

23 Jul 21:59
Compare
Choose a tag to compare
  • Updated factorio-data to version 1.1.88
  • Updated compatibility/defines.lua to 1.1.88
  • Merged arpheno's pull request:
    • Fixed Pump so that it now correctly exports it's direction
  • Merged SIGSTACKFAULT's pull requests:
    • Fix type annotation of Tile.__init__()
    • Fix type annotation of BlueprintBook.insert()
  • draftsman-update is now (finally) able to load mods from folder directories instead of just zip archives
  • draftsman-update will now prefer mods in folders instead of zip archives if one of each type present and they have the exact same ID and version (I think this matches Factorio, create an issue if it's not)
  • Added --report command to draftsman-update that prints out a list of currently active mods and their versions (to aid in bug reports)
  • Fixed Lua defines table not being defined by the time factorio-data/core runs (#85)
  • Fixed UTF-8 BOM tokens not being properly stripped from all mod Lua files, resulting in issues when sending to Lupa (#84)
  • Changed the Lua load process a whole lot for draftsman-update, hopefully behaving more predictably and causing no regressions

1.0.5

12 Jun 17:32
Compare
Choose a tag to compare
  • Added get_blueprintable_from_JSON() and patched get_blueprintable_from_string() so that it no longer converts the string twice (accidentally)
  • Fixed issue where integer playback_volume values on programmable speakers wasn't getting coerced to a float and failing validation (#72)
  • Fixed Blueprintable objects not being correctly initialized from their constructor when JSON dicts were passed as an argument (#75)
  • Fixed OverlappingObjectsWarning being incorrectly emitted when Gates overlap StraightRails (they now are only emitted if they're not perpendicular to each other) (#76)
  • Fixed ConstantCombinator not recognizing the is_on member (#77)

1.0.4

17 May 20:35
Compare
Choose a tag to compare
  • Updated factorio-data to version 1.1.80
  • Updated compatibility/defines.lua to 1.1.80
  • Merged louga31's pull request:
    • Fix recipes so that they correctly read either internal format
  • Fixed an issue where not all entities were being assigned to entities.flippable (#61)
  • Fixed mod dependency loading (hopefully) so that it should actually handle recursive requires across an arbitrary number of different mods (#70)
  • Fixed an issue where required Lua files with a single prepended dot or slash would break the path resolution (#70)

1.0.3

13 Mar 01:33
Compare
Choose a tag to compare
  • Updated factorio-data to version 1.1.76 (latest stable)
  • Updated compatibility/defines.lua to 1.1.76 (latest stable)
  • Merged penguincounter's pull request:
    • Fixed logistics requester and buffer chest signatures not having the correct circuit_mode_of_operation key
  • Added a dump_format() method to entities that outputs a user friendly description of all of the possible key/value entries in the exported blueprint dict
    • Still needs to be done for Blueprintable; ideally there would be a Exportable parent class that would implement the madness
    • Also need to investigate faster validation options since schema is pretty slow; maybe we can unify and improve speed at the same time
  • Added a get_format() method intended to get a readable formatted string (that can easily be autogenerated at the top of each entity in the documentation! Not yet but soon)
  • Changed _exports dict to be both more user readable and only defined on a per class basis instead of a per instance basis (so memory usage should be down)
  • Prepped env.py for when Lupa version 2.0 goes live (which will resolve #50)
  • Fixed "Mining_Drones_Harder" mod not loading because of stray "__MACOSX" folder defined alongside (#55)
  • Fixed "FactorioExtended-Plus-Logistics" not loading due to internal file titled __init__.lua (#56)
  • Fixed env.extract_entities().categorize_entities() to get flags instead of assuming they exist ("flags" set is common but optional)

1.0.2

24 Aug 08:38
Compare
Choose a tag to compare
  • Added UpgradePlanner and DeconstructionPlanner (#40)
  • Created an abstract class Blueprintable which now implements Blueprint, BlueprintBook, UpgradePlanner, and DeconstructionPlanner to increase code reuse
  • Added description attribute to Blueprint and BlueprintBook (#41)
  • Changed the behavior of draftsman-update to normalize all mod names to have no spaces (probably not perfect, but should work for now) (#49)
  • Added a --path argument to draftsman-update so you can specify exactly where to load mods from instead of only the installation directory (#49)
  • Draftsman now distributes with a vanilla set of pickle data files, so you no longer need to run draftsman-update on first install (suggestion from rpdelaney)
  • Rolling Stock (Locomotives and Wagons) should now have proper collisions that are based on their orientation and issue correct warnings (#47)
  • Updated the documentation around draftsman-update to make it more clear and reflect recent changes
  • Updated all Blueprintable documentation files such that they now include a plaintext representation of their JSON structure

1.0.1

10 Aug 01:46
Compare
Choose a tag to compare
  • Updated factorio-data to version 1.1.65
  • Fixed #38 and #39

1.0.0

06 Aug 03:45
Compare
Choose a tag to compare

1.0.0

This ones' a doozy; for a more verbose explanation see here.

  • Updated factorio-data to version 1.1.61
  • Added a Vector class to represent 2d positions, and changed most of the code to reflect this change
    • This is a breaking change, but it should be much more natural to access positions by attribute x and y instead of ["x"] and ["y"]
    • By specifying a class like this, custom operators are allowed such as vector math, which means that offsetting positions and other operations have become much easier as a result
    • Vector has a static member function from_other() that constructs a Vector object from all valid formats accepted in the past (tuple, dict, list, etc.) which is used in all standard functions, so you shouldn't have to change any of their signatures
    • Vector also has a to_dict() method to turn it back into it's dictionary format for exporting ({"x": ..., "y": ...})
    • The Vector class is only used on the "outermost" layer due to performance reasons, internally the most common representation is still list[float, float]
  • Added an abstract Shape class, along with two implementations: AABB and Rectangle
    • AABB and Rectangle are now used for issuing OverlappingObjectWarning
  • All functions that used to use Sequences or list[list[float], list[float]] have been changed to Vector and AABB respectively for user clarity
  • Added another class: CollisionSet, which is a list of Shapes used for checking if two Entitys intersect one another
    • This was needed because curved rails have 2 collision boxes instead of a single one
    • Collision sets also support rotations, which means that rotations are automatically generated or specified manually for edge cases like rails
    • In essence, CollisionSets provide more flexibility for entity footprints on a per-entity-type (or even per-entity) level
  • Added find_entity_at_position() so you can simply check for any entity in particular at a position instead of having to use fully-blown find_entities_filtered or the more-specific find_entity() function
  • Abstracted SpatialHashMap to be an implementation of abstract class SpatialDataStructure, which will allow for different implementations such as quadtrees or other algorithms if they happen to be more performant than hash-mapping (For now all Collections still use SpatialHashMap though)
  • Renamed entity_hashmap and tile_hashmap to more generic entity_map and tile_map to reflect the above change
  • Move almost all entity insert/set/remove logic to EntityCollection.on_entity_insert, on_entity_set, and on_entity_remove, which gets called from EntityList.insert and related
  • Added on_tile_insert, on_tile_set, and on_tile_remove to TileCollection to mirror the changes to EntityCollection
  • Added copy keyword to TileList.insert and TileList.append to mirror EntityList.insert and EntityList.append
  • Added Entity/Tile merging
    • Added merge keyword to both EntityList.insert/append and TileList.insert/append
    • Attempting to use merge=True keywords and copy=False will result in a ValueError, as this behavior is loosely defined (for now at least)
  • Rails now properly issue OverlappingObjectsWarnings; Rails can overlap each other provided they don't have the exact same position + direction + type
  • Another big documentation pass
  • Split the signatures.CONTROL_BEHAVIOR into many sub implementations, which should improve both safety and (hopefully) performance
  • Fixed #24, #25, #27, #32, #33, and #34

0.9.6

14 Jun 02:49
Compare
Choose a tag to compare
  • Merged sposker's pull request
    • Fixed an bug where IndexError would be triggered on setting the final item filter slot
    • Updated signatures.CONTROL_BEHAVIOR to include the send_to_train key
  • Merged elswindle's pull request
    • Dictionary Blueprints and BlueprintBook's are now properly converted to Blueprint and BlueprintBook objects when added to a BlueprintableList
  • Fixed documentation for FilterMixin.set_item_filters that labeled "name" key as "signal"
  • Made docs for FilterMixin.set_item_filters and FilterMixin.set_item_filter more clear
  • Changed signals.raw to actually be the extraction from data.raw so people can query the order strings and other information (#17)
  • Sorted signals.raw according to signal-processing order (virtual -> fluid -> item) instead of item sort order (#17)
  • Added signals.type_of as a more specific structure to fulfill the old functionality of signals.raw (#17)
  • Changed the functionality of ConstantCombinator so that attempting to set one of it's signals to a pure virtual signal results in a DraftsmanWarning (because for some grotesque reason Factorio actually allows this)
  • Renamed InvalidConnectionError to more general InvalidAssociationError and updated documentation
  • Removed requirement for Groups to have an ID associated with it (this was required in the past, but is no longer necessary)
  • Fixed unable to find connectable entities when calling Blueprint.generate_power_connections() on blueprint that contained Groups (#19)
  • Added the capability to specify connections based on entity reference as well instead of just ID or index ([add/remove]_power_connection, [add/remove]_circuit_connection) (#19)
    • Made these functions issue InvalidAssociationError when attempting to connect two entities that lie outside of the EntityCollection
    • Added recursive __contains__ function to EntityList to facilitate the above
  • Fixed copying of entities between Blueprints and Groups (#20)
  • Added capability to deepcopy Entities, Groups, and Blueprints, with appropriate errors
  • Added capability to set the entities of a Blueprint or Group to another Blueprints or Groups entities (#16)
  • Added optional string keyword for the constructor of Group so you can import a blueprint string directly into a group instead of having to create a "scratch" Blueprint