Releases: redruin1/factorio-draftsman
Releases · redruin1/factorio-draftsman
1.1.1
1.1.0
1.0.6
- Updated
factorio-data
to version1.1.88
- Updated
compatibility/defines.lua
to1.1.88
- Merged arpheno's pull request:
- Fixed
Pump
so that it now correctly exports it'sdirection
- Fixed
- Merged SIGSTACKFAULT's pull requests:
- Fix type annotation of
Tile.__init__()
- Fix type annotation of
BlueprintBook.insert()
- Fix type annotation of
draftsman-update
is now (finally) able to load mods from folder directories instead of just zip archivesdraftsman-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 todraftsman-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 timefactorio-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
- Added
get_blueprintable_from_JSON()
and patchedget_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 whenGates
overlapStraightRails
(they now are only emitted if they're not perpendicular to each other) (#76) - Fixed
ConstantCombinator
not recognizing theis_on
member (#77)
1.0.4
- Updated
factorio-data
to version1.1.80
- Updated
compatibility/defines.lua
to1.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
- Updated
factorio-data
to version1.1.76
(latest stable) - Updated
compatibility/defines.lua
to1.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
- Fixed logistics requester and buffer chest signatures not having the correct
- 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
- Still needs to be done for Blueprintable; ideally there would be a
- 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()
toget
flags instead of assuming they exist ("flags"
set is common but optional)
1.0.2
- Added
UpgradePlanner
andDeconstructionPlanner
(#40) - Created an abstract class
Blueprintable
which now implementsBlueprint
,BlueprintBook
,UpgradePlanner
, andDeconstructionPlanner
to increase code reuse - Added
description
attribute toBlueprint
andBlueprintBook
(#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 todraftsman-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
1.0.0
1.0.0
This ones' a doozy; for a more verbose explanation see here.
- Updated
factorio-data
to version1.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
andy
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 functionfrom_other()
that constructs aVector
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 signaturesVector
also has ato_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 stilllist[float, float]
- This is a breaking change, but it should be much more natural to access positions by attribute
- Added an abstract
Shape
class, along with two implementations:AABB
andRectangle
AABB
andRectangle
are now used for issuingOverlappingObjectWarning
- All functions that used to use
Sequences
orlist[list[float], list[float]]
have been changed toVector
andAABB
respectively for user clarity - Added another class:
CollisionSet
, which is a list ofShapes
used for checking if twoEntity
s 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-blownfind_entities_filtered
or the more-specificfind_entity()
function - Abstracted
SpatialHashMap
to be an implementation of abstract classSpatialDataStructure
, which will allow for different implementations such as quadtrees or other algorithms if they happen to be more performant than hash-mapping (For now allCollections
still useSpatialHashMap
though) - Renamed
entity_hashmap
andtile_hashmap
to more genericentity_map
andtile_map
to reflect the above change - Move almost all entity insert/set/remove logic to
EntityCollection.on_entity_insert
,on_entity_set
, andon_entity_remove
, which gets called fromEntityList.insert
and related - Added
on_tile_insert
,on_tile_set
, andon_tile_remove
toTileCollection
to mirror the changes toEntityCollection
- Added
copy
keyword toTileList.insert
andTileList.append
to mirrorEntityList.insert
andEntityList.append
- Added Entity/Tile merging
- Added
merge
keyword to bothEntityList.insert/append
andTileList.insert/append
- Attempting to use
merge=True
keywords andcopy=False
will result in aValueError
, as this behavior is loosely defined (for now at least)
- Added
- 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
- 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 thesend_to_train
key
- Fixed an bug where
- Merged elswindle's pull request
- Dictionary Blueprints and BlueprintBook's are now properly converted to
Blueprint
andBlueprintBook
objects when added to aBlueprintableList
- Dictionary Blueprints and BlueprintBook's are now properly converted to
- Fixed documentation for
FilterMixin.set_item_filters
that labeled"name"
key as"signal"
- Made docs for
FilterMixin.set_item_filters
andFilterMixin.set_item_filter
more clear - Changed
signals.raw
to actually be the extraction fromdata.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 ofsignals.raw
(#17) - Changed the functionality of
ConstantCombinator
so that attempting to set one of it's signals to a pure virtual signal results in aDraftsmanWarning
(because for some grotesque reason Factorio actually allows this) - Renamed
InvalidConnectionError
to more generalInvalidAssociationError
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 containedGroups
(#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 theEntityCollection
- Added recursive
__contains__
function toEntityList
to facilitate the above
- Made these functions issue
- Fixed copying of entities between
Blueprints
andGroups
(#20) - Added capability to deepcopy
Entities
,Groups
, andBlueprints
, with appropriate errors - Added capability to set the
entities
of aBlueprint
orGroup
to anotherBlueprints
orGroups
entities
(#16) - Added optional
string
keyword for the constructor ofGroup
so you can import a blueprint string directly into a group instead of having to create a "scratch"Blueprint