Bob's Functions Library mod

Adds a series of useful functions used by Bob's Mods. These can easilly be used by other mods too.

4 months ago
0.13 - 1.1


Version: 1.2.0
Date: 22. 12. 2023
    - Added function bobmods.migration.ensure_unlocked(tech_name, recipe_name) #120
    - Added function bobmods.lib.recipe.set_category(recipe_name, category)
    - Added function bobmods.lib.module.exclude_productivity_module(module_name)
      - Modules supplied to this function will not be altered by function add_productivity_limitation #139
    - Added Russian locale (thanks Eldrinn-Elantey!) #149
Version: 1.1.6
Date: 01. 01. 2023
    - Fixing accidental global variables #50
    - Fixed extra gas bottles being added to unbarreling recipes by repeated calls to bobmods.lib.create_gas_bottle #75
    - Added function bobmods.lib.item.hide(item_name) #38
    - Added function bobmods.lib.item.hide_entity(type_name, entity_name) #38
    - Added function #60
    - Renamed function recipe.hide_recipe to recipe.hide #60
    - Added function, ignore) #62
    - Added function bobmods.lib.item.set_subgroup(item_name, subgroup) #96
    - Added function bobmods.lib.recipe.set_subgroup(recipe_name, subgroup) #96
Version: 1.1.5
Date: 06. 06. 2022
    - Fixed error in
    - Added function bobmods.lib.module.remove_productivity_limitations(recipes) #2
    - Added function bobmods.lib.recipe.hide_recipe(recipe) #12
    - Added function bobmods.lib.create_fluid_canister(fluid, color) #12
    - Added function, count) #18
Version: 1.1.4
Date: 09. 05. 2021
    - Put the duplicate ingredient checking on an option.
    - Put the Technology prerequisite checking on an option too.
    - Added new item types to the valid item checklist (to fix the error of it removing "rail" from production science pack)
Version: 1.1.3
Date: 09. 04. 2021
    - Added a duplicate prerequsites check to the Technology prerequisites cleanup. (Handles split difficulty too)
    - Added a duplicate ingredient checking to library final fixes. (Handles split difficulty too)
    - Added icon_mipmaps to item/resource icon in ore-functions
    - Added icon embedded locale entry for created autoplace-controls
Version: 1.1.2
Date: 06. 12. 2020
    - Added function bobmods.lib.recipe.set_energy_required(recipe, time) and set_difficulty_energy_required(recipe, difficulty, time)
    - Added function, recipe) which returns true if any difficulty on the technology unlocks that recipe.
    - Added function, difficulty, recipe) which returns true if that difficult unlocks that recipe (doesn't split the technology by difficulty if it isn't already, just returns the standard result instead)
Version: 1.1.0
Date: 25. 11. 2020
    - Updated to work with Factorio 1.1
    - Included resource_autoplace global (it was removed as a global from base game, it was easier to just re-add a global than add it locally in every instance I used it)
Version: 1.0.0
Date: 15. 08. 2020
    - Added function bobmods.lib.recipe.clear_ingredients(recipe) that deletes all incredients from a recipe
    - Added function bobmods.lib.recipe.add_ingredients(recipe, ingredients) that adds multiple ingredients to a recipe with a single instruction
    - Added function bobmods.lib.recipe.set_ingredients(recipe, ingredients), which calls the clear then add to change the recipe to the specified array of ingredients.
    - Streamlined function bobmods.lib.recipe.replace_ingredient(recipe, old, new) a bit to remove some of the duplicated code.
    - Added function which deletes all science packs from a technology
    - Added function, science_packs) which adds multiple science packs to a technology with a single instruction
    - Added function, science_packs), which calls the clear then add to change the science packs to the specified array.
Version: 0.18.10
Date: 16. 07. 2020
    - Added a few more safety checks to Technology prerequisites.
    - Technology functions now take difficulty into account.
    - Added function versions for editing a specific difficulty.
Version: 0.18.9
Date: 20. 04. 2020
    - Added more checks for prerequisite validity to function
    - Added more checks for prerequisite validity to function get_prerequisites_in_tree_cached(technology)
Version: 0.18.8
Date: 19. 04. 2020
    - Added validity check to get_prerequisites_in_tree_cached to make sure a technology actually exists.
Version: 0.18.7
Date: 18. 04. 2020
    - function now uses a buffered version of the functions to save a lot of loading time going through all the technologies.
    - Added function, which returns a copy of the prerequisites table on a technology.
    - Added function, which returns a table of technology names including it's prerequisites table, and the prerequisites of those prerequisites, recursively.
Version: 0.18.6
Date: 16. 04. 2020
    - Added function, prerequisite), returns true if technology has prerequisite on it's prerequisites list
    - Added function, prerequisite), same as above, but recursively checks all prerequisites of prerequisites
    - Added function, prerequisite), same as above, but doesn't check for the prerequisite on that technology
    - Added function, which returns a table of prerequisites that exist in the prerequisites tree of other prerequisites on the technology
    - Added function, Same as above, but doesn't include derivatives of it's own name. (performs a filter on the name for letters, meaning it drops numbers and dashes from a typical technology name, then compares) EG: automation 2 won't return automation in the list.
    - Added function, which scans all technologies and deletes prerequisites as found by the above function.
    - function is called in the data-final-fixes phase of loading.
Version: 0.18.5
Date: 08. 04. 2020
    - Added the 0.18.4 changes to the change log file.
    - Added (even more) robustness to bobmods.lib.item.ingredient and bobmods.lib.item.result (and derivative) functions.
Version: 0.18.4
Date: 07. 04. 2020
    - Minor crashproof change to bobmods.lib.resource.generate_updates_stage
    - Added bobmods.lib.icons_from_item(item) function, which takes an item/fluid/entity(maybe even recipe) and returns a complete icons array. (if it has no icons= tag, it builds one from icon, icon_size and icon_mipmaps). Example use bobmods.lib.icons_from_item(data.raw.item.wood)
    - Added support for fluidbox_index on ingredients/results
Version: 0.18.3
Date: 26. 03. 2020
    - Added support for catalyst_amount in bobmods.lib.item.ingredient/result/combine functions. (used by bobmods.lib.recipe.add_ingredient/recipe and similar functions)
    - bobmods.lib.recipe.set_ingredient/recipe will now add an ingredient/result if it doesn't already exist.
Version: 0.18.2
Date: 22. 03. 2020
    - Wasn't removing a prerequisite or recipe unlock from a technology if the entry didn't exist (it should only need a name and remove it anyway, it not existing could be why you're removing it.)
Version: 0.18.1
Date: 22. 03. 2020
    - Made add/remove/replace science pack functions more robust with better error logging.
    - Made add/remove/replace recipe unlock functions more robust with better error logging.
    - Made add/remove/replace prerequisite functions more robust with better error logging.
    - Made add/remove/replace ingredient functions more robust with better error logging.
    - Made add productivity limitation functions more robust with better error logging.
    - Made item functions more robust with better error logging.
    - Added item.ingredient and item.result functions, which are copies of item.basic_item and item.item functions. This better reflects what they're supposed to be used for.
Version: 0.18.0
Date: 23. 01. 2020
    - Updated to work with Factorio 0.18
    - Removed my custom ore generation system from the library (It's not needed anymore as all my functions actually use the 0.17 ore generator)
    - Changed bobmods.lib.recipe.enabled to actually use bool (Bool isn't actually a string of "true" or "false" anymore (it was in older versions of factorio)) 
    - Changed particle to optimized-particle on ore-particle generator
Version: 0.17.5
Date: 24. 06. 2019
    - Added bobmods.lib.safe_insert function. Adds a string to the specified table only if it doesn't already exist.
    - Added bobmods.lib.recipe.enabled(recipe, bool) and bobmods.lib.recipe.difficulty_enabled(recipe, difficulty, bool) (Bool is actually a string of "true" or "false") to make adding enabled = "false" to recipes easier. (enabled needs to be on the difficulty)
Version: 0.17.4
Date: 17. 06. 2019
    - Added compatabillity for fluids that have an icons table instead of icon tag.
    - Adjusted the resource automatic icon generation slightly.
    - Fix ore 5 HR glow effect.
    - Added an icon randomiser for resource generation.
Version: 0.17.3
Date: 31. 05. 2019
    - Added to try prevent loading errors.
Version: 0.17.2
Date: 30. 05. 2019
    - Added resource-generation, based on the 0.17 resource autoplace system.
    - Also added bobmods.lib.resource.generate_autoplace_control(control) function. it creates an autoplace-control with the given name, and adds it to the list of map-gen-presets.
Version: 0.17.1
Date: 21. 05. 2019
    - Added many missing entries to bobmods.lib.recipe.difficulty_split
    - Added ingredient/result entry check for table on add and set functions.
    - Auto-bottle functions will now account for fluids with an icon size not set to 32.
Version: 0.17.0
Date: 26. 02. 2019
    - Updated to work with Factorio 0.17
    - Updated bobmods.lib.belt_speed_ips(ips) for new belt speed items per second.
Version: 0.16.6
Date: 10. 06. 2018
    - Added bobmods.lib.recipe.set_ingredient(recipe, item). use case is the same as add, but instead of adding an item, it edits the count of an existing item.
    - Added bobmods.lib.recipe.set_result(recipe, item). Use case same as above, but also allows for complex counts with min, max and probability.
    - Fixed error reporting error that caused an error in add_new_science_pack and add_science_pack
Version: 0.16.5
Date: 23. 03. 2018
    - Added bobmods.lib.belt_speed_ips(). Send it desired Items per second and it will return the tiles per tick value used by the game LUA.
    - EG: speed = bobmods.lib.belt_speed_ips(60) will create a tiles per tick belt speed that can transport 60 items per second.
Version: 0.16.4
Date: 20. 02. 2018
    - Tablemerge now functions as intended
Version: 0.16.3
Date: 19. 01. 2018
    - Changes to autoplace broke infinite ores.
    - Changed gas bottle stack size to 10
Version: 0.16.2
Date: 19. 01. 2018
    - updating ore autoplace settings
    - changed default of state_mult from 1 to 100
Version: 0.16.1
Date: 22. 12. 2017
Version: 0.16.0
Date: 17. 12. 2017
    - Added icon_size tags to ore-functions.
    - Added category resource to autoplace functions
Version: 0.15.10
Date: 08. 12. 2017
    - Fixed bobmods.lib.machine.type_if_add_resource_category function
Version: 0.15.9
Date: 06. 11. 2017
    - Fixed liquid_required lines for ores.
Version: 0.15.8
Date: 31. 05. 2017
    - Fixed recipe difficulty split function's enable tag copy
    - ore create function can now accept stage_counts as an array variable.
Version: 0.15.7
Date: 21. 05. 2017
    - added function bobmods.lib.recipe.difficulty_split(recipe)
Version: 0.15.6
Date: 11. 05. 2017
    - Added a function for barrel item/recipes
Version: 0.15.5
Date: 10. 05. 2017
    - Changed infinite_depletion_amount default when infinite ores is turned on from 10 to 1.
Version: 0.15.4
Date: 07. 05. 2017
    - Added dynamic icon generation to resource generation!
    - Added effect(glow) compatibility to resource generation
Version: 0.15.3
Date: 06. 05. 2017
    - Updated ore graphics to the new style, added HD versions too
    - Updated ore functions to handle this
Version: 0.15.2
Date: 01. 05. 2017
    - Edited replace ingredient to handle expensive properly.
    - Added difficulty specific versions of remove, add and add new ingredient, remove and add recipe functions.
Version: 0.15.1
Date: 29. 04. 2017
    - Edit to make recipe manipulation functions handle expensive mode recipe variations. Fluids also divide by 10 when transforming into items and vica verca on recipe item replacement.
Version: 0.15.0
Date: 25. 04. 2017
    - Updated to work with Factorio 0.15 without any changes