Amator Phasma's Library

First of all: this is a resource and code library for my other mods. It self comes with extended functions for inserter: 1) make it possible that a inserter can handle the 'burnt result inventory' on all machines. 2) burner inserters can leech fuel from pickup and drop target. 3) burner inserters are capable to chain fuel through all burner type machines.

5 months ago
0.17 - 0.18


Version: 0.19.50
Date: 23. 05. 2020
    - unification of the version with the other mods
Version: 0.19.07
Date: 14. 02. 2020
  Minor Features:
    - Equipment manager for burner equipment:
      If a burner equipment is equipped in your armor, you can toggle the equipment manager on and off: default hotkey is ALT+W or use the icon shortcut in your quickbar
      If the equipment manager is enabled it will automatic fuel up any burner equipment using your personal inventory to a maximum of 10 items, as long as there is at least one fuel item left in it's slot. It will also transfer any residues to your personal inventory (like ash).
    - some script optimizations.
Version: 0.19.06
Date: 10. 02. 2020
    - ./lib/local/initial.lua: added 'bio-arboretum-3' to 'apm_power' section.
Version: 0.19.05
Date: 06. 02. 2020
    - removed: ./lib/utils/description.lua: function: apm.lib.utils.description.item.fuel.update(item)
      no longer needed, base game  added fuel burnt results to the item tooltip.
    - removed: ./lib/utils/description.lua: function: apm.lib.utils.description.item.nuclear_fuel.update(item)
      no longer needed, base game added fuel burnt results to the item tooltip.
Version: 0.19.04
Date: 01. 02. 2020
    - typo in ./lib/scripts/equipment.lua
Version: 0.19.03
Date: 01. 02. 2020
    - ./lib/scripts/equipment.lua: added support for multiple alert messages from different burner equipments.
    - ./lib/scripts/equipment.lua: added a simple check if the burnt fuel inventory is blocked with the wrong burnt result.
    - new: ./lib/definitions.lua: same as my other mods all icon declarations are now in here.
Version: 0.19.02
Date: 26. 01. 2020
    - fixed: ./lib/utils/recycling.lua: function: metal_generation(): dynamic recycler tech icons, one had the wrong size applied.
    - fixed: ./lib/scripts/starfall.lua: Meteorites will no longer land on water, I missed a chunk check.
    - changed: ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.metal.add(options): now uses a table with all arguments instead of positional arguments directly.
    - removed: ./lib/utils/lab.lua: function: apm.lib.utils.lab.set.inputs()
Version: 0.19.01
Date: 23. 01. 2020
    - fixed some icon related stuff in the code for better compatibillity with other mods.
    - implement hook to custom event form bobinserters and/or boblogistics. (fixes an issue if the position of an inserter was set facing away from a crafting machine (drop/pickup position), this could lead into a situation where my script desired to drop the inserter from the event table, because this position is invalid, and I had no clue if the inserter positions had changed again to a valid position.
Version: 0.19.00
Date: 21. 01. 2020
  Major Features:
    - Initial release for Factorio 0.18.0
Version: 0.18.19
Date: 19. 01. 2020
    - add a entity check to ./lib/utils/entity.lua: function: apm.lib.utils.entity.set.next_upgrade(entity, next_upgrade)
    - removed debug log output in ./lib/scripts/init.lua: check_technologies(force)
    - scripts: fixed some missing "local" declarations. (hopefully this will fix a very rare desync edge case)
    - optimized initial script.
    - ./lib/utils/builder.lua: function: apm.lib.utils.builder.recipe.item.alternatives.add() added new optional statement 'item_multi'.
      This statement is used if the alternative is type: "item", to multiply the amount of ingredients and results by this value.
      Only use at the moment for "APM_CLEANING_SOLUTION" in "Amator Phasma's Recycling", to balance ingredients and results between "stone" and "crushed stone".
    - new: ./lib/utils/storage_tank.lua
    - new: ./lib/utils/storage_tank.lua: function: apm.lib.utils.storage_tank.exist(storage_tank_name)
    - new: ./lib/utils/storage_tank.lua: function: apm.lib.utils.storage_tank.set.hidden(storage_tank_name)
    - new: ./lib/utils/technology.lua: function:, science_pack_name)
Version: 0.18.18
Date: 11. 07. 2020
    - new: ./lib/scripts/init.lua: function: add_technology_conditional(unlock_technology :: string, parent_technologies :: string or table)
    - new: ./lib/scripts/init.lua: local function: activate_technologies_conditional(force)
    - new: ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.ingredient.remove_all(recipe_name)
    - new: ./lib/utils/boiler.lua: function: apm.lib.utils.boiler.set.next_upgrade(boiler_name, next_upgrade)
    - new: ./lib/utils/boiler.lua: function: apm.lib.utils.boiler.set.hidden(boiler_name)
    - new: ./lib/utils/entity.lua: function: apm.lib.utils.entity.set.next_upgrade(entity, next_upgrade)
    - new: ./lib/utils/generator.lua: function: apm.lib.utils.generator.set.next_upgrade(generator_name, next_upgrade)
    - new: ./lib/utils/generator.lua: function: apm.lib.utils.generator.set.hidden(generator_name)
    - removed: redundant: ./lib/utils/technology.lua: function:
      use instead.
    - ./lib/scripts/init.lua: better support for loading into existing save files and loading other mods on top of it.
Version: 0.18.17
Date: 05. 01. 2020
    - new: ./lib/utils/equipment.lua
      add a function for dynamic fuel requirement description for the prototype: "generator-equipment".
Version: 0.18.16
Date: 04. 01. 2020
  Major Features:
    - added script support for equipment with burner property.
    - new: ./lib/utils/description.lua: function: apm.lib.utils.description.item.nuclear_fuel.update(item)
    - new: ./lib/utils/reactor.lua: function:  apm.lib.utils.reactor.overhaul_exceptions.add(reactor_name)
    - new: ./lib/utils/reactor.lua: function:  apm.lib.utils.reactor.overhaul_exceptions.remove(reactor_name)
    - ./lib/utils/item.lua: function: apm.lib.utils.item.add.radioactive_description(item_name, level) append result description if needed.
Version: 0.18.15
Date: 30. 12. 2019
    - moved [fuel-category-name] for "chemical" to the mod apm_power.
Version: 0.18.14
Date: 29. 12. 2019
    - inserters now leeching fuel from pickup and drop machines right after placing if possible.
    - all inserters can now leech up to 5 items, ignoring all stack size restrictions on this function.
Version: 0.18.13
Date: 28. 12. 2019
    - ./lib/utils/recycler.lua -> add support for "show always made in" setting.
    - ./lib/script/starfall.lua: code clean ups.
    - ./lib/script/inserter.lua: command: added: /inserter
    - new: ./lib/utils/description.lua: function:, category)
    - new: setting "Valid prototype targets" this exposes the valid prototyps for the inserter script to the user
Version: 0.18.12
Date: 26. 12. 2019
    - fix: ./lib/utils/assembler.lua: function: apm.lib.utils.assembler.get.fuel_categories() wrong log format.
    - fix: ./lib/scripts/inserter.lua: won't pickup ash from burnt_inventory if bobinserters changes the position to somthing that is not x*90°
    - optimizations: ./lib/scripts/inserter.lua
    - changed: ./lib/scripts/inserter.lua: add support for sound volume templates, sound enable/disable per player.
    - new: ./lib/utils/assembler.lua: function: apm.lib.utils.assembler.mod.module_specification(assembler_name, value, allowed_effects)
    - some more optimizations, bug fixes, removing of unnecessary code.
Version: 0.18.11
Date: 20. 12. 2019
    - implement a log level startup-setting to reduce the log-spam if not needed:
        - 0: Errors
        - 1: Warnings
        - 2: Info
Version: 0.18.10
Date: 19. 12. 2019
    - new: ./lib/utils/description.lua: function: apm.lib.utils.description.item.fuel.update(item)
    - ./lib/utils/description.lua: function: apm.lib.utils.fuel.overhaul() now uses apm.lib.utils.description.item.fuel.update()
Version: 0.18.09
Date: 18. 12. 2019
    - some optimizations, bug fixes, removing of unnecessary code.
    - ./lib/scripts/inserter.lua: added todo for next version of factorio, and removed an unnecessary condition.
Version: 0.18.08
Date: 16. 12. 2019
    - some optimizations, bug fixes, removing of unnecessary code.
Version: 0.18.07
Date: 15. 12. 2019
    - fix: ./lib/scripts/starfall.lua: remove_surface(index)
    - some optimizations, bug fixes, removing of unnecessary code.
    - new: ./lib/utils/technology.lua: function:
Version: 0.18.06
Date: 14. 12. 2019
    - some optimizations, bug fixes, removing of unnecessary code.
    - new: setting: "Radiation damage multiplier" for everyone who would like to die...
    - new: setting: "Maximum iterations over inventory slots per event"
Version: 0.18.05
Date: 12. 12. 2019
    - fix: ./lib/utils/entity.lua: function: apm.lib.utils.entity.has.fuel_category(entity, category): take default value into account if both fuel_category and fuel_categories are not specified.
    - fix: ./lib/utils/entity.lua: function: apm.lib.utils.entity.add.fuel_category(entity, category): take default value into account if both fuel_category and fuel_categories are not specified.
    - fix: ./lib/utils/fluid.lua: function: apm.lib.utils.fluid.remove(fluid_name): set hidden attribute to "true", remove wrong setter of flags attribute.
    - fix: ./lib/utils/item.lua: function: apm.lib.utils.item.remove(item_name): set additional flags 'hide-from-bonus-gui' and 'hide-from-fuel-tooltip'.
    - new: ./lib/utils/entity.lua: function: apm.lib.utils.entity.get.fuel_categories(entity)
    - ./lib/scripts/init.lua: now handels disabled recipes on init and update and remove them from crafting machines.
Version: 0.18.04
Date: 11. 12. 2019
    - fix: ./lib/utils/fuel.lua: function: apm.lib.utils.fuel.entities.add.category_with_conditional(): "nil" in logfile
    - fix: that the "Hidden fuel item" is shown as fuel at the fuel_inventory tooltip
    - new: ./lib/scripts/init.lua: script for on _init and on_update to handel technologies, items, entities.
    - new: ./lib/utils/entity.lua: function: apm.lib.utils.entity.has.flag(entity, flag)
    - new: ./lib/utils/entity.lua: function: apm.lib.utils.entity.add.flag(entity, flag)
    - new: ./lib/utils/entity.lua: function: apm.lib.utils.entity.has.crafting_category(entity, category)
    - new: ./lib/utils/entity.lua: function: apm.lib.utils.entity.add.crafting_category(entity, category)
    - new: ./lib/utils/entity.lua: function: apm.lib.utils.entity.has.fuel_category(entity, category)
    - new: ./lib/utils/entity.lua: function: apm.lib.utils.entity.add.fuel_category(entity, category) 
    - new: ./lib/utils/entities.lua: function: apm.lib.utils.entities.add.fuel_category_with_conditional(entity_type, conditional_category, category)
    - new: ./lib/utils/entities.lua: function: apm.lib.utils.entities.set.fuel_categoriy_to_all_with_condition(entity_type, conditional_category, categories)
    - new: ./lib/utils/entities.lua: function: apm.lib.utils.entities.set.fuel_categoriy_to_all(entity_type, categories)
    - new: ./lib/utils/car.lua: function:, categories)
    - new: ./lib/utils/assembler.lua: function: apm.lib.utils.assembler.set.hidden(assembler_name)
    - new: ./lib/utils/furnace.lua: function: apm.lib.utils.furnace.set.hidden(furnace_name)
    - new: ./lib/utils/mining_drill.lua: function: apm.lib.utils.mining_drill.set.hidden(mining_drill_name)
    - ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.add_mainproduct_if_needed() added argument force_mainproduct(bool)
    - ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.set.always_show_products() added argument category_condition(str)
    - ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.set.always_show_made_in() added argument category_condition(str)
Version: 0.18.03
Date: 08. 12. 2019
    - ./lib/utils/description.lua: function: renamed ...entities.setup() to  ...entities.initial()
    - new: ./lib/utils/description.lua: function: apm.lib.utils.description.entities.setup(entity, entry_list)
      - a merged ..entities.setup() and ...entities.add_fuel_types() function, with additional conditions. The custom description for the fuel types only is shown if there are more than one fuel type accepted.
    - new: ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.result.mod_temperature(recipe_name, result_name, condition_temperature, target_temperature)
Version: 0.18.02
Date: 08. 12. 2019
    - ./lib/scripts/inserter.lua: support for on_event(
    - ./lib/scripts/offshore_pump.lua: added forced: raise_built and raised_destroy
    - new: ./lib/scripts/radiation.lua: function: radiation.remote.list_items() 
      - returns a table with item names as key and radiation level as value
      - /c'apm_radiation', 'list_items')
      - example return: {'uranium-235'=2, 'uranium-fuel-cell'=2, 'used-up-uranium-fuel-cell'=3}
    - ./lib/scripts/starfall.lua: added basic support for the mod warptorio2
Version: 0.18.01
Date: 07. 12. 2019
    - items: remove radiation from uranium-ore and uranium-238
    - revamp: ./lib/scripts/starfall.lua: hardened and multi surface support added
    - new: ./lib/scripts/starfall.lua: function: starfall.remote.add_surface(index)
    - new: ./lib/scripts/starfall.lua: function: starfall.remote.remove_surface(index)
    - new: ./lib/scripts/starfall.lua: function: starfall.remote.add_event(surface_index, amount, time, range)
    - new: ./lib/scripts/starfall.lua: custom event: event_on_impact() -> event:
      - event.surface = Index of the LuaSurface
      - event.position = Types/Position of the impact center
Version: 0.18.00
Date: 04. 12. 2019
    - Revised scripts and functions.
Version: 0.17.98
Date: 09. 11. 2019
    - revamp: ./lib/utils/builder.lua: its now dynamic and I can remove all the third party dependencies from my mods.
Version: 0.17.97
Date: 08. 11. 2019
    - More adjustments to the new tooltip UI (
    - added new default icon definition: apm.lib.utils.icon.chunk_bg_w (White border / halo background)
    - added new default icon definition: apm.lib.utils.icon.crushed_bg_w (White border / halo background)
    - added new default icon definition: apm.lib.utils.icon.briquette_bg_w (White border / halo background)
Version: 0.17.96
Date: 04. 11. 2019
    - Adjustments to the new tooltip UI (
Version: 0.17.95
Date: 04. 11. 2019
    - fix wrong behavior with containers in certain cases for inserter fuel chains.
Version: 0.17.94
Date: 04. 11. 2019
    - Burner inserter can now chain and leech fuel from "Burner pumps". (implemented a workaround for posibel bug -> Sorry but you need to replace inserters on "Burner Pumps" after this patch.
    - changed radiation damge by type: Low 2-4 dmg/4s; Medium 4-16 dmg/4s; High: 8-48 dmg/4s.
Version: 0.17.93
Date: 29. 10. 2019
    - Scripts adapted for "Amator Phasma's Recycling" and "Amator Phasma's Coal & Steam".
    - new: ./lib/util/technology.lua: function:, recipe_name)
    - new: ./prototypes/character_final_fixes.lua (for compatibillity with bob's classes) inject my crafting_category: 'apm_handcrafting_only' to 'bob-character-miner'. ->
Version: 0.17.92
Date: 26. 10. 2019
    - fix: missing file change: ./lib/util/description.lua
Version: 0.17.91
Date: 26. 10. 2019
    - fix: ./lib/util/description.lua: function: apm.lib.utils.description.entities.setup() add a check if the localised_description propperty is a table.
Version: 0.17.90
Date: 24. 10. 2019
    - fix: ./lib/util/recipe.lua: function: local function ingredient_mod_temperature(): indexing (a nil value) ->
    - fix: ./lib/util/car.lua: function: indexing (a nil value) ->
    - fix: ./lib/util/car.lua: function: apm.lib.utils.locomotive.get.fuel_categories(locomotive_name): indexing (a nil value)
    - fix: ./prototypes/smoke.lua
    - new: ./lib/util/item.lua: function: apm.lib.utils.item.has.burnt_result(item_name, burnt_result)
    - new: ./lib/util/item.lua: function: apm.lib.utils.item.replace.burnt_result(item_name, old_burnt_result, new_burnt_result)
    - new: ./lib/util/item.lua: function: apm.lib.utils.item.replace.burnt_results(old_burnt_result, new_burnt_result)
    - update ./lib/util/icons.lua to use the new icon size from ressource pack
Version: 0.17.89
Date: 22. 10. 2019
    - fix: ./lib/util/assembler.lua: function: apm.lib.utils.assembler.get.fuel_categories() -> wrong default return
    - fix: ./lib/util/furnace.lua: function: apm.lib.utils.furnace.get.fuel_categories() -> wrong default return
    - fix: ./lib/util/boiler.lua: apm.lib.utils.boiler.get.fuel_categories() -> wrong default return
    - fix: ./lib/util/car.lua: -> wrong default return
    - fix: ./lib/util/inserter.lua: apm.lib.utils.inserter.get.fuel_categories() -> wrong default return
    - fix: ./lib/util/lab.lua: apm.lib.utils.lab.get.fuel_categories() -> wrong default return
    - fix: ./lib/util/locomotive.lua: apm.lib.utils.locomotive.get.fuel_categories() -> wrong default return
    - fix: ./lib/util/mining_drill.lua: apm.lib.utils.mining_drill.get.fuel_categories() -> wrong default return
    - fix: ./lib/util/reactor.lua: apm.lib.utils.reactor.get.fuel_categories() -> wrong default return
    - fix: ./lib/util/icon.lua: apm.lib.utils.icon.get.from_fluid(object_name) -> wrong function call
    - code revamp: *.get.fuel_categories() and *.update_description() functions for better dynamic mod support
    - new: ./lib/util/item.lua: function: apm.lib.utils.item.overwrite.localised_name(item_name, localised_name)
    - new: ./lib/util/item.lua: function: apm.lib.utils.item.overwrite.localised_description(item_name, localised_description)
    - new: ./lib/util/technology.lua: function:, localised_name)
    - new: ./lib/util/technology.lua: function:, localised_description)
    - new: ./lib/util/generator.lua: function: apm.lib.utils.generator.get.fuel_categories(generator_name)
    - new: ./lib/util/generator.lua: function: apm.lib.utils.generator.update_description(generator_name)
    - new: ./lib/util/modules.lua: function: apm.lib.utils.modules.create.category(category_name)
    - new: ./lib/util/icon.lua: function: apm.lib.utils.icon.merge(icon_tables)
    - new: ./lib/util/icon.lua: function: apm.lib.utils.icons.mod(t_icons, scale, shift)
    - new: ./lib/util/icon.lua: function: apm.lib.utils.icon.get.from_recipe(object_name)
    - new: ./lib/util/icon.lua: function: apm.lib.utils.icon.get.from_tool(object_name)
    - revamp: ./lib/util/description.lua: apm.lib.utils.description.entities.setup(entity)
    - recipe-category: new "apm_nuclear_cooling_0"
    - recipe-category: new "apm_electric_smelting"
    - new: ./lib/util/furnace.lua: function: apm.lib.utils.furnace.mod.category.add(furnace_name, category)
    - new: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.item.alternatives.add(name, alternative, weighting)
    - new: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.item.alternatives.get(name, weight_min, weight_max)
    - new: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.item.simple(name, amount, weight_min, weight_max, fluid_multi)
    - new: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.item.probability(name, amount_min, amount_max, probability, weight_min, weight_max, fluid_multi)
    - new: ./lib/util/builder.lua: function:, weight_min, weight_max)
    - new: ./lib/util/category.lua: function: apm.lib.utils.category.change(group, subgroup, new_group, new_subgroup)
    - ./lib/util/category.lua: function: apm.lib.utils.starfall.ore.generate() -> use new icon fuctions
    - ./lib/script/starfall.lua: function: check_if_position_is_valid(surface, position) - check for resource on ground
    - new: ./lib/util/item.lua: function: apm.lib.utils.item.dummy() -> returns a dummy item
    - recipe-category: renamed apm_crusher_with_fluid to apm_crusher_2
    - recipe-category: renamed apm_crusher_with_tool to apm_crusher_3
    - recipe-category: renamed apm_press_with_fluid to apm_press_2
    - recipe-category: renamed apm_press_with_tool to apm_press_3
    - new: ./lib/util/fuel.lua: function: apm.lib.utils.fuel.entities.add.category_with_conditional(entity_type, conditional_category, category)
    - new: ./lib/util/fuel.lua: function: apm.lib.utils.fuel.overwrite_emissions_multiplier(item_name, emissions_multiplier)
    - mark deprecated: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.ingredient.alternatives.add()
    - mark deprecated: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.ingredient.alternatives.get()
    - mark deprecated: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.ingredient.simple()
    - mark deprecated: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.ingredient.probability()
    - mark deprecated: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.result.alternatives.add()
    - mark deprecated: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.result.alternatives.get()
    - mark deprecated: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.result.simple()
    - mark deprecated: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.result.probability()
    - deleted: ./lib/util/description.lua: apm.lib.utils.description.entities.include_list.add(entity_name) -> no logner needed
    - deleted: ./lib/util/description.lua: apm.lib.utils.description.entities.include_list.remove(entity_name) -> no logner needed
Version: 0.17.88
Date: 03. 10. 2019
    - related changes to modification in apm_power -> apm.lib.utils.fuel.overwrite_coal_fuel_value()
Version: 0.17.87
Date: 09. 08. 2019
    - fix: typo in the long description of the "Storage protection" setting.
    - recipe-category: new: 'apm_recycling_3'
    - recipe-category: new: 'apm_recycling_4'
    - apm.lib.utils.item.add.radioactive_description(), added optional level argument
Version: 0.17.86
Date: 09. 08. 2019
  Minor Features:
    - removed: setting to hide mod info in the GUI (factorio has this option by it self)
Version: 0.17.85
Date: 08. 08. 2019
    - fix: ./lib/script/inserter.lua: function: calc_item_count() ->
  Minor Features:
    - new: ./lib/utils/patch/space_exploration.lua: function: apm.lib.utils.patch.space_exploration.block_from_space(prototype_type, prototype_name)
Version: 0.17.84
Date: 03. 06. 2019
    - changelog dates
    - fix: ./lib/util/recipe.lua: function: apm.lib.utils.recipe.ingredient.replace(), check if the target item/fluid for the replacement is already in the ingredients list.
    - refactoring some functions in ./lib/util/recipe.lua
Version: 0.17.83
Date: 02. 06. 2019
    - ./lib/util/item.lua: function: apm.lib.utils.item.get_type(item_name, prefer_item): added a workaround for a special case: if this function found an ITEM and a FLUID with the same name, it will return FLUID by default and write it to the log() that it found both. It is possible to set the statement 'prefer_item' to true, this will change this behavior and return ITEM in this case. ->
Version: 0.17.82
Date: 31. 05. 2019
    - ./lib/script/radiation.lua: implement spairs() to sort the table with the radioactive items on iteration by highest radiation level first, to compare this with the player inventory. ->
Version: 0.17.81
Date: 31. 05. 2019
  Minor Features:
    - new: ./lib/util/string.lua: function: apm.lib.utils.string.version_to_number(version)
    - ./lib/util/icon.lua: function: apm.lib.utils.icon.mod(t_icon, scale, shift) add shift calculation.
    - ./lib/util/recipe.lua: function: apm.lib.utils.recipe.ingredient.mod() add statement: ingredient_amount_expensive (optional)
    - ./lib/util/recipe.lua: function: apm.lib.utils.recipe.energy_required.mod() add statement: value_expensive (optional)
Version: 0.17.80
Date: 28. 05. 2019
  Minor Features:
    - new: ./lib/util/recipe.lua: function: apm.lib.utils.recipe.result.remove_all(result_name)
Version: 0.17.79
Date: 26. 05. 2019
  Minor Features:
    - new: ./lib/util/recipe.lua: function: apm.lib.utils.recipe.ingredient.mod_temperature(recipe_name, ingredient_name, target_temperature)
    - new: ./lib/util/recipe.lua: function: apm.lib.utils.recipe.set.always_show_made_in(recipe_name, bool)
    - new: ./lib/util/recipe.lua: function: apm.lib.utils.recipe.set.always_show_products(recipe_name, bool)
    - new: ./lib/util/fluid.lua: function: apm.lib.utils.fluid.exist(fluid_name)
    - new: ./lib/util/fluid.lua: function: apm.lib.utils.fluid.remove(fluid_name)
    - new: ./lib/util/fluid.lua: function: apm.lib.utils.fluid.delete_hard(fluid_name)
Version: 0.17.78
Date: 24. 05. 2019
    - ./lib/util/barrel.lua: function: apm.lib.utils.barrel.generate() new statement bool: b_force
    - ./lib/util/barrel.lua: function: apm.lib.utils.barrel.generate() add check for version base: 0.17.43, after this no need for this function any more, base game now handels icon_size > 32 and icon defined as a table (icons).
Version: 0.17.77
Date: 24. 05. 2019
  Minor Features:
    - new: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.ingredient.alternatives.add
    - new: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.ingredient.alternatives.get(item_name)
    - new: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.ingredient.simple(item_name, amount)
    - new: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.ingredient.probability(item_name, amount_min, amount_max, probability)
    - new: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.result.alternatives.add
    - new: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.result.alternatives.get(item_name)
    - new: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.result.simple(item_name, amount)
    - new: ./lib/util/builder.lua: function: apm.lib.utils.builder.recipe.result.probability(item_name, amount_min, amount_max, probability)
Version: 0.17.76
Date: 22. 05. 2019
  Minor Features:
    - fuel-category: new: 'apm_nuclear_deuterium'
Version: 0.17.75
Date: 21. 05. 2019
    - fixed wrong recipe probabilities (related to:
Version: 0.17.74
Date: 18. 05. 2019
  Minor Features:
    - fuel-category: new: 'apm_nuclear_uranium'
    - remote interface: change:'apm_radiation', 'add_item', __ITEM_NAME__, __LEVEL__) to register a radioactive item, add __LEVEL__ [1=less radioactive, 2=normal radioactive, 3=very radioactive]
    - fixed some translation typos
    - fixed wrong string for barrel filling
Version: 0.17.73
Date: 17. 05. 2019
    - fix: ./lib/util/description.lua: function: apm.lib.utils.reactor.update_description() wrong energy_source.type
  Minor Features:
    - fuel-category: new: 'apm_nuclear_thorium'
    - ./lib/util/locomotive.lua: function: apm.lib.utils.assembler.centrifuge.overhaul() removed animation overwrites (for compatibillity with bob's changes to this entity)
Version: 0.17.72
Date: 14. 05. 2019
    - removed some debug logs()
  Minor Features:
    - new: ./lib/util/description.lua: function: apm.lib.utils.description.entities.exclude_list.add(entity_name)
    - new: ./lib/util/description.lua: function: apm.lib.utils.description.entities.exclude_list.remove(entity_name)
Version: 0.17.71
Date: 12. 05. 2019
    - fix: ./lib/util/fuel.lua: function: apm.lib.utils.fuel.category.remap() now sets a default fuel category if none is defined.
    - fix: ./lib/util/car.lua: function: fixed typo
    - fix: typo in german translation (fuel-descriptions)
  Minor Features:
    - new: ./lib/util/fuel.lua: function: apm.lib.utils.fuel.entity.add.category(entity, category)
    - new: ./lib/util/car.lua: function:
    - new: ./lib/util/car.lua: function:
    - new: ./lib/util/locomotive.lua: function: apm.lib.utils.locomotive.get.fuel_categories(car_name)
    - new: ./lib/util/locomotive.lua: function: apm.lib.utils.locomotive.update_description(locomotive_name)
    - fuel-category: new: 'apm_rocket'
    - ./lib/util/fuel.lua: function: apm.lib.utils.fuel.category.remap(entity, conditional_category, t_categories): now takes the entity instead of entity_name and entity_energy_source.
Version: 0.17.70
Date: 12. 05. 2019
  Minor Features:
    - new: ./lib/script/core.lua: function: core.player_insert_items_safe(entity, item_dict)
    - fix: ./lib/script/radiation.lua: function: check_inventory() crash if redioactive item from other mod is removed.
    - adapted changes from apm_power
Version: 0.17.69
Date: 10. 05. 2019
  Minor Features:
    - remote interface: new:'apm_radiation', 'add_item', __ITEM_NAME__) to register a radioactive item
    - remote interface: new:'apm_radiation', 'remove_item', __ITEM_NAME__) to unregister a radioactive item
    - apm.lib.utils.item.add.radioactive_description(__ITEM_NAME__) to add the radioactive description to an item
    - removed debug print from ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.allow_productivity()
    - replaced debug print with proper logging ./lib/utils/icon.lua: function: apm.lib.utils.icon.layer.replace()
Version: 0.17.68
Date: 08. 05. 2019
    - recipe-category: new: 'apm_centrifuge_2'
    - recipe-category: new: 'apm_sifting_0'
    - recipe-category: new: 'apm_sifting_2'
    - recipe-category: new: 'apm_sifting_3'
Version: 0.17.67
Date: 06. 05. 2019
  Minor Features:
    - new: ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.scrap.add(recipe_name, scrap_metal, probability) :: probability is no optional, if not set the value from the settings is used
Version: 0.17.66
Date: 05. 05. 2019
  Minor Features:
    - new: ./lib/utils/modules.lua: function: apm.lib.utils.setting.get.starup(settings_name)
Version: 0.17.65
Date: 04. 05. 2019
    - fix: ./lib/utils/modules.lua: function: apm.lib.utils.recipe.allow_productivity() nil value with creative-mod modules
Version: 0.17.64
Date: 04. 05. 2019
  Minor Features:
    - new: ./lib/utils/modules.lua: function: apm.lib.utils.modules.exist(module_name)
    - new: ./lib/utils/modules.lua: function: apm.lib.utils.modules.has_productivity(module_name)
    - new: ./lib/utils/modules.lua: function: apm.lib.utils.recipe.allow_productivity(recipe_name)
Version: 0.17.63
Date: 04. 05. 2019
    - fix: ./lib/utils/recipe.lua: function: wrong log output
  Minor Features:
    - new: ./lib/utils/icon.lua: function: apm.lib.utils.icon.set.icons(object, icons)
    - new: ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.set.icons(recipe_name, icons)
    - new: ./lib/utils/item.lua: function: apm.lib.utils.item.set.icons(item_name, icons)
Version: 0.17.62
Date: 04. 05. 2019
    - fix: moved missing files from 'apm_resource_pack' to prevent a dependencies with it.
  Minor Features:
    - new: ./prototypes/signals.lua
    - new: ./lib/utils/description.lua: function: apm.lib.utils.description.entities.include_list.add(entity_name)
    - new: ./lib/utils/description.lua: function: apm.lib.utils.description.entities.include_list.remove(entity_name)
    - new: ./lib/utils/description.lua: function: apm.lib.utils.description.entities.add_fuel_types(entity, entry_list)
    - new: ./lib/utils/description.lua: function: apm.lib.utils.description.entities.setup(entity)
    - new: ./lib/utils/description.lua: function: apm.lib.utils.description.entities.update()
    - new: ./lib/utils/reactor.lua: function: apm.lib.utils.reactor.get.fuel_categories(reactor_name)
    - new: ./lib/utils/reactor.lua: function: apm.lib.utils.reactor.update_description(reactor_name)
    - new: ./lib/utils/mining_drill.lua: function: apm.lib.utils.mining_drill.get.fuel_categories(mining_drill_name)
    - new: ./lib/utils/mining_drill.lua: function: apm.lib.utils.mining_drill.update_description(mining_drill_name)
    - new: ./lib/utils/lab.lua: function: apm.lib.utils.lab.get.fuel_categories(lab_name)
    - new: ./lib/utils/lab.lua: function: apm.lib.utils.lab.update_description(lab_name)
    - new: ./lib/utils/inserter.lua: function: apm.lib.utils.inserter.get.fuel_categories(inserter_name)
    - new: ./lib/utils/inserter.lua: function: apm.lib.utils.inserter.update_description(inserter_name)
    - new: ./lib/utils/furnace.lua: function: apm.lib.utils.furnace.get.fuel_categories(furnace_name)
    - new: ./lib/utils/furnace.lua: function: apm.lib.utils.furnace.update_description(furnace_name)
    - new: ./lib/utils/assembler.lua: function: apm.lib.utils.assembler.get.fuel_categories(assembler_name)
    - new: ./lib/utils/assembler.lua: function: apm.lib.utils.assembler.update_description(assembler_name)
    - new: ./lib/utils/boiler.lua: function: apm.lib.utils.boiler.get.fuel_categories(boiler_name)
    - new: ./lib/utils/boiler.lua: function: apm.lib.utils.boiler.update_description(boiler_name)
    - new: ./lib/utils/item.lua: function: apm.lib.utils.item.add.radioactive_description(item_name)
    - new: ./prototypes/overwrites.lua
Version: 0.17.61
Date: 02. 05. 2019
    - changed fuel category names
    - changed some item description generation
Version: 0.17.60
Date: 02. 05. 2019
    - ./lib/script/patch/angel.lua: function: replace_angel_burner_crusher(player)
Version: 0.17.59
Date: 01. 05. 2019
  Minor Features:
    - new: ./lib/script/offshore_pump.lua
    - new: ./lib/utils/tile.lua: function: apm.lib.utils.tile.unification(old_tile_name, new_tile_name)
    - script: moved functions from 'apm_nuclear' to this library
    - setting: new: 'Hide mod info from items and recipes in the GUI' hides the mod list on item info
    - recipe-category: 'apm_assembling' removed (replaced with default: basic-crafting)
    - ./lib/utils/recipe.lua: function:  apm.lib.utils.recycling.metal.add(): add statement: output_amount_overwrite
    - updated for 0.17.35 API Changes
    - updated dependencies
Version: 0.17.58
Date: 29. 04. 2019
  Minor Features:
    - new: ./lib/utils/fuel.lua: function: apm.lib.utils.fuel.get_base_fuel_value()
    - new: ./lib/utils/fuel.lua: function: apm.lib.utils.fuel.overwrite_coal_fuel_value()
    - new: ./lib/utils/player.lua: function: apm.lib.utils.player.crafting_category.add(crafting_category)
    - ./lib/utils/item.lua: function: apm.lib.utils.item.mod.fuel_overhaul replace with ./lib/utils/fuel.lua: function: apm.lib.utils.fuel.overhaul()
    - recipe-category: new: 'apm_handcrafting_only'
Version: 0.17.57
Date: 28. 04. 2019
    - ./lib/utils/barrel.lua: function: apm.lib.utils.barrel.generate() wrong crafting category
  Minor Features:
    - ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.result.count(recipe_name)
    - ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.result.get_first_result(recipe_name)
    - ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.set.icon(recipe_name, icon_path)
Version: 0.17.56
Date: 28. 04. 2019
  Minor Features:
    - new: ./lib/utils/barrel.lua: function:, empty_c_name, c_side_mask, c_hoop_top_mask, c_empty_side_mask, c_empty_top_mask, c_fill_side_mask, c_fill_top_mask, c_fill_icon, c_empty_icon)
    - new: ./lib/utils/barrel.lua: function: apm.lib.utils.barrel.generate(fluid_name) (generate barrel recipes for fluids with multi icon layer support)
    - ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.ingredient.replace() add new statement 'amount_multi'
    - dependencies: removed apm_resource_pack (there is no need for it)
Version: 0.17.55
Date: 27. 04. 2019
  Major Features:
    - removed all media files to apm_resource_pack
Version: 0.17.54
Date: 27. 04. 2019
    - ./lib/utils/technology.lua: function:, time) wrong var used... :(
Version: 0.17.53
Date: 27. 04. 2019
  Minor Features:
    - new: ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.has.result(recipe_name, result_name)
    - new: ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.has.ingredient(recipe_name, ingredient_name)
    - new: ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.result.add_with_probability(recipe_name, result_name, result_amount_min, result_amount_max, probability)
    - new: ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.add_mainproduct_if_needed(recipe_name)
    - new: ./lib/utils/recipe.lua: function:, group, subgroup, order)
    - ./lib/utils/recipe.lua: added item check in some functions (to prevent wrong use)
Version: 0.17.52
Date: 26. 04. 2019
    - ./lib/utils/recycling.lua: function: metal_generation(name) -> bad argument #1 to 'insert' (table expected, got nil) on .metal[name].tech_prerequisites
  Minor Features:
    - new: ./lib/utils/icon.lua: function: apm.lib.utils.icon.mod(t_icon, scale, shift)
    - new: ./lib/utils/technology.lua: function:
    - new: ./lib/utils/technology.lua: function:, science_pack_name)
    - icons updated (some) icons to 64px
Version: 0.17.51
Date: 26. 04. 2019
    - fixed a desync in ./lib/script/inserter.lua
Version: 0.17.50
Date: 25. 04. 2019
  Minor Features:
    - new: ./lib/utils/recipe.lua: apm.lib.utils.recipe.has.main_product(recipe_name)
    - new: ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.set.main_product(recipe_name, result_old, result_new, force)
    - fix: ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.result.replace(recipe_name, result_old, result_new) wrong main_product handling
Version: 0.17.49
Date: 25. 04. 2019
  Minor Features:
    - new: ./lib/utils/icon.lua: function: apm.lib.utils.icon.get.from_item(object_name) return: table or string
    - new: ./lib/utils/icon.lua: function: apm.lib.utils.icon.get.from_fluid(object_name) return: table or string
    - fix: ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.metal.generation() now handles multilayer symbols correctly
    - ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.scrap.generate() checked the recipe again, only do this in data update phase before, but what if... This should be better for compatibillity with other mods if they delete a recipe in the final stage before me.
Version: 0.17.48
Date: 25. 04. 2019
    - fix: corrupt zip file!
Version: 0.17.47
Date: 25. 04. 2019
    - ./lib/utils/recycling.lua: add some description to functions    
    - ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.metal.generation() changed icon generation
    - new settings: Type: 'Runtime-Global' -> 'Safe lock': Default: activated, to force the default value for 'Maximum inserter checks per tick'
Version: 0.17.46
Date: 24. 04. 2019
    - ./lib/script/inserter.lua reduced the inserter in the table by checks on build of inserters and entitys with a fuel_inventory, by the huge amount of dropped inserters, because of this condition, we need less iterations to overwatch (only important inserters now).
    - decreased default value for inserter checks per tick to 15
Version: 0.17.45
Date: 24. 04. 2019
    - fix: removed an unused call in: ./lib/utils/item.lua: function: inserter_fix_check(t_object, pickup_target, drop_target)
    - fix: ./lib/utils/item.lua: local: valid_targets typo in 'mining-drill'
    - decreased default value for inserter checks per tick to 20 after a good test session (reaction is slower but good enough) these reduce the computation time needed by this script, I think this is a good value.
Version: 0.17.44
Date: 23. 04. 2019
  Minor Features:
    - new: ./lib/utils/fuel.lua: function:, category)
    - new: ./lib/utils/fuel.lua: function: apm.lib.utils.fuel.category.remap(entity_name, energy_source, conditional_category, t_categories)
    - new: ./lib/utils/fuel.lua: function: apm.lib.utils.fuel.set.categories(entity_type, conditional_category, t_categories)
Version: 0.17.43
Date: 22. 04. 2019
    - ./lib/utils/icon.lua: add: apm.lib.utils.icon.dynamics.lable_sw ('./graphics/icons/dynamics/apm_machine_lable_sw.png')
    - recipe-category: add: 'apm_steelworks'
Version: 0.17.42
Date: 21. 04. 2019
    - ./lib/utils/item.lua: function: inserter_fix_check(t_object) add 'lab' type to function
Version: 0.17.41
Date: 21. 04. 2019
    - ./lib/utils/item.lua: function: inserter_fix_check(t_object), inserters now ignoring any entity thats not 'assembling-machine' or 'furnace', we don't need this functionallity there.
    - ./lib/utils/item.lua: function: apm.lib.utils.inserter.burner.overhaul() removed emissions_per_minute (no support in the engine for this)
Version: 0.17.40
Date: 21. 04. 2019
  Minor Features:
    - new: ./lib/utils/item.lua: function: apm.lib.utils.item.is_type(item_name, item_type)
    - new: ./lib/utils/item.lua: function: apm.lib.utils.item.mod.stack_size(item_name, value, b_overwrite)
    - new: ./lib/utils/starfall.lua: function: apm.lib.utils.starfall.remove.ore(ore_name)
    - new: ./lib/utils/tile.lua: function: apm.lib.utils.tile.exist(tile_name)
    - new: ./lib/utils/tile.lua: function: apm.lib.utils.tile.get.layer(tile_name)
    - new: ./lib/utils/tile.lua: function: apm.lib.utils.tile.set.layer(tile_name, layer)
    - new: ./lib/utils/tile.lua: function: apm.lib.utils.tile.set.relation(tile_name, base_tile_name, relation)
    - new: ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.category.create(category_name)
    - new: ./lib/utils/fuel.lua: function: apm.lib.utils.fuel.category.create(category_name)
    - new: file: ./prototypes/recipe-categories.lua
    - new: file: ./prototypes/fuel-categories.lua
    - ./lib/utils/mining_drill.lua: function: apm.lib.utils.mining_drill.burner.overhaul() changed resource_searching_radius starting from 0.99 on level 1
    - ./lib/utils/mining_drill.lua: function: apm.lib.utils.boiler.overhaul() -> base_emissions_per_minute reduced by 5
Version: 0.17.39
Date: 18. 04. 2019
    - fix: ./script error: Error while running event apm_lib::on_entity_died (ID 4) attempt to call field 'on_remove' (a nil value)
Version: 0.17.38
Date: 18. 04. 2019
    - fix: ./lib/utils/item.lua: function: apm.lib.utils.item.mod.burnt_result() missing return and typo in log()
    - fix: ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.scrap.generate() missing test added
Version: 0.17.37
Date: 18. 04. 2019
  Minor Features:
    - new: ./lib/utils/lab.lua: function: apm.lib.utils.lab.add.science_pack(lab_name, science_pack)
    - new: ./lib/utils/lab.lua: function: apm.lib.utils.lab.set.inputs(lab_name, science_pack)
    - new: ./lib/utils/locomotive.lua: function: apm.lib.utils.locomotive.add.fuel_category(locomotive_name, fuel_category)
    - new: ./lib/utils/reactor.lua: function: apm.lib.utils.reactor.add.fuel_category(reactor_name, fuel_categorie)
    - new: ./lib/utils/reactor.lua: function: apm.lib.utils.reactor.set.fuel_categories(reactor_name, fuel_categories)
    - hardened functions in ./lib/utils/assembler.lua
    - hardened functions in ./lib/utils/boiler.lua
    - hardened functions in ./lib/utils/bot.lua
    - hardened functions in ./lib/utils/car.lua
    - hardened functions in ./lib/utils/furnace.lua
    - hardened functions in ./lib/utils/generator.lua
    - hardened functions in ./lib/utils/inserter.lua
    - hardened functions in ./lib/utils/item.lua
    - hardened functions in ./lib/utils/lab.lua
    - hardened functions in ./lib/utils/locomotive.lua
    - hardened functions in ./lib/utils/mining_drill.lua
    - hardened functions in ./lib/utils/modules.lua
    - hardened functions in ./lib/utils/reactor.lua
    - hardened functions in ./lib/utils/recipe.lua
    - mark deprecated: ./lib/utils/lab.lua: function: apm.lib.utils.lab.inputs()
Version: 0.17.36
Date: 17. 04. 2019
  Minor Features:
    - new ./lib/utils/technology.lua:, recipe_name)
    - add logging in ./lib/utils/technology.lua
    - removed debug entrys logging in ./lib/utils/technology.lua
    - hardend ./lib/utils/technology.lua functions, against dobble prerequisites, dobble recipes for unlock, etc...
    - new settings: Type: 'Runtime-Global' -> 'Extended functions for inserter': Default: deactivated, this controls whether the inserter functions supplied by this mod are active or not, this setting is only available if you do not have installed an other mod from me that needs this feature like "Amator Phasma's Coal & Steam" or "Amator Phasma's Nuclear". Otherwise, you can control it yourself, whether you nedd it or not.
Version: 0.17.35
Date: 17. 04. 2019
  Minor Features:
    - new ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.metal.exist(name)
    - new ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.metal.remove(name)
    - new ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.scrap.remove(recipe_name)
    - new ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.scrap.generation()
    - info: ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.scrap.add() will no longer perform any changes
    - info: ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.scrap.generation() will now perform the changes for inserting scrap metal into recipes
    - rename: apm.lib.utils.recycling.generation() to apm.lib.utils.recycling.metal.generation()
    - add logging for ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.metal.add()
    - add logging for ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.add.scrap_metal()
    - add logging for ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.scrap.generation()
    - add logging for ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.metall.generation()
Version: 0.17.34
Date: 17. 04. 2019
    - fix: ./lib/utils/assembler.lua: function: apm.lib.utils.assembler.centrifuge.overhaul() rearrange animation layer, to lay the pipe cover into the background
Version: 0.17.33
Date: 17. 04. 2019
    - fix: ./lib/utils/inserter.lua: function: convert_table() if user upgrades from very old version or after a mod remove (one with inserters)
Version: 0.17.32
Date: 16. 04. 2019
    - source code clean ups
Version: 0.17.31
Date: 15. 04. 2019
    - fixed a bug where inserters can go stuck on moving if the fuel runs out in the moment of picking up an item
Version: 0.17.30
Date: 15. 04. 2019
    - optimized: ./lib/script/inserter.lua code (reduce requirement of a expensive call) performance gain: average ~0.21ms up to 0.25ms on 100 inserter iterrations/tick
Version: 0.17.29
Date: 15. 04. 2019
    - optimized: ./lib/script/inserter.lua code (reduce required calls) performance gain: average ~0.1ms up to 0.13ms on 100 inserter iterrations/tick
Version: 0.17.28
Date: 14. 04. 2019
    - fix startup crash: ./lib/utils/car.lua, ./lib/utils/lovomotive.lua: (my stupidity), not every car or lovomotive has a burner property ->
    - ./lib/utils/item.lua: function: apm.lib.utils.item.mod.fuel_overhaul() -> I have changed the calculations for fuel values, based on coal, there was a logical failure in it. This can result in unecpected high fuel values for follow-up products (in the chain) if an other mod overwrites the coal value, like "Realistic Power" does. The calculations should now hardened against this. (If an other mod overwrites the base value of coal, my setting for the value might be not functional in this case).
Version: 0.17.27
Date: 14. 04. 2019
    - fix: propperty use: "emissions_per_minute" intead of "emissions_per_second_per_watt"  ->
    - settings: Maximum inserter checks per tick (apm_inserter_iterations): changed default to 50 from 100.
Version: 0.17.26
Date: 13. 04. 2019
  Minor Features:
    - new: ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.energy_required.mod(recipe_name, value)
    - new: ./lib/utils/icon.lua: function: apm.lib.utils.icon.replace(icon_path_old, icon_path_new, icon_size, scale, shift, tint)
    - new: ./lib/utils/icon.lua: function: apm.lib.utils.icon.layer.replace(base_dn, layer, icon_path, icon_size, scale, shift, tint)
Version: 0.17.25
Date: 12. 04. 2019
    - fix: ./lib/utils/technology.lua: function: can lead to load error because a test for a nil table was missing.
Version: 0.17.24
Date: 12. 04. 2019
  Minor Features:
    - new: ./lib/utils/recipe.lua: function: apm.lib.utils.recipe.category.overwrite_all(category_name_old, category_name_new)
    - now compatible with Bio_Industries
Version: 0.17.23
Date: 11. 04. 2019
  Minor Features:
    - new: ./lib/utils/patch/aai.lua: function: apm.lib.utils.patch.aai.generate_vehicle_fuel() -> a modified version for the vehicle fuel generation
    - new: ./lib/script/patch/aai.lua: used at tick 2 to overwrite the burner assembler
    - now compatible with aai-industry
Version: 0.17.22
Date: 10. 04. 2019
  Minor Features:
    - new: ./lib/utils/technology.lua: function: 'will not really delete the technologie but disable it, hide it and remove it from all linked technologies'
Version: 0.17.21
Date: 09. 04. 2019
    - settings: For "Maximum inserter checks per tick" settings, the possible minimum value has been changed to 0 instead of 10
    - new icons: for icon generation: ./graphics/icons/dunymincs/apm_chemical_flame_1.png, ./graphics/icons/dunymincs/apm_chemical_flame_2.png, ./graphics/icons/dunymincs/apm_chemical_flame_3.png
Version: 0.17.20
Date: 09. 04. 2019
    - some new basic image masks for use in other mods together
Version: 0.17.19
Date: 08. 04. 2019
    - optimized: ./lib/script/inserter.lua code (reduce required calls) performance gain: average ~0.14ms up to 0.22ms on 100 inserter iterrations/tick
Version: 0.17.18
Date: 06. 04. 2019
  Minor Features:
    - new: ./lib/utils/icon.lua: function: apm.lib.utils.icon.add_tier_lable(name, level)
    - replaced icon: ./graphics/icons/dunymincs/apm_brick.png
    - replaced icon: ./graphics/icons/dunymincs/apm_chunk.png
    - new icon: ./graphics/icons/dunymincs/apm_crushed.png
    - replaced icon: ./graphics/icons/dunymincs/apm_tier_1.png
    - replaced icon: ./graphics/icons/dunymincs/apm_tier_2.png
    - replaced icon: ./graphics/icons/dunymincs/apm_tier_3.png
    - replaced icon: ./graphics/icons/dunymincs/apm_tier_4.png
    - Cleaning up the source code, file names, etc. (naming, comments, unneeded parts)
Version: 0.17.17
Date: 06. 04. 2019
    - ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.metal.add() removed bool argument "b_separate_tech"
    - added file LICENSE
Version: 0.17.16
Date: 06. 04. 2019
  Minor Features:
    - new: ./lib/utils/bot.lua:,,, level),, level)
    - ./lib/utils/assembler.lua: function: apm.lib.utils.assembler.burner.overhaul() removed unused argument "level"
    - ./lib/utils/locomotive.lua: function: apm.lib.utils.locomotive.overhaul() changed base pollution/s to 2/300000 per watt
    - ./lib/utils/car.lua: function: changed base pollution/s to 3/150000 per watt
    - ./lib/utils/mining_drill.lua: function: apm.lib.utils.mining_drill.burner.overhaul() new formula to calculate pollution/s on burner mining drills
Version: 0.17.15
Date: 05. 04. 2019
    - ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.generation() added the possibility to translate all strings
Version: 0.17.14
Date: 04. 04. 2019
    - ./lib/utils/car.lua: function: now has the following arguments: only_refined, only_petrol, only_electrical
    - ./lib/utils/car.lua: function: now has the following arguments: car_name, only_refined, only_petrol, only_electrical
    - ./lib/utils/car.lua: function: set default: fuel_categories = {'chemical'}
    - ./lib/utils/locomotive.lua: function: apm.lib.utils.locomotive.overhaul_all() now has the following arguments: only_refined, only_petrol, only_electrical
    - ./lib/utils/locomotive.lua: function: apm.lib.utils.locomotive.overhaul() now has the following arguments: locomotive_name, only_refined, only_petrol, only_electrical
    - ./lib/utils/locomotive.lua: function: apm.lib.utils.locomotive.overhaul() set default: fuel_categories = {'chemical','apm_refined_chemical', 'apm_petrol'}
    - ./lib/utils/boiler.lua: function: apm.lib.utils.boiler.overhaul() set default: fuel_categories = {'apm_refined_chemical', 'apm_petrol'}
    - ./lib/utils/mining_drill.lua: function: apm.lib.utils.mining_drill.burner.overhaul() set default: fuel_categories = {'chemical','apm_refined_chemical', 'apm_petrol'}
    - ./lib/utils/item.lua: function new: apm.lib.utils.item.overwrite.battery(level, item_name, fuel_value, burnt_result)
Version: 0.17.13
Date: 01. 04. 2019
    - added new dynamic images for use in my other mods
Version: 0.17.12
Date: 31. 03. 2019
    - fixed: ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.generation(): Scrap iron/copper recycling not available without angels mods (
Version: 0.17.11
Date: 31. 03. 2019
    - ./lib/utils/icons.lua: changed some internal names
    - ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.generation() removed unnecessary code
    - ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.generation() optimized technologie generation
    - ./lib/utils/recycling.lua: function: apm.lib.utils.recycling.metal.add() add new argument for technologie generation
    - replaced some images with new ones
    - ./lib/utils/mining_drill.lua: function: apm.lib.utils.mining_drill.burner.overhaul(mining_drill_name, level) - new calculations
Version: 0.17.10
Date: 29. 03. 2019
    - hardend namespace for inner and outer function from "" to "" this should prevent crashes if other mods can overwrite utils.
    - ./lib/utils/recycler.lua: function: apm.lib.utils.recycling.add.scrap_metal(recipe_name, scrap_metal, probability) refactoring and hardened against special cases that can lead to loading crashes with other mods.
Version: 0.17.09
Date: 28. 03. 2019
    - ./lib/utils/starfall.lua: function: utils.starfall.generate() categorize resources by harvest types: with and without fluid
    - ./lib/script/starfall.lua: function: create_impact() on game start only use resources without the need for fluid to harvest
  Minor Features:
    - new setting: to change the number of inserter checks performed by the script per tick (default: 100)
Version: 0.17.08
Date: 27. 03. 2019
  Minor Features:
    - new: ./lib/utils/car.lua: function:, level, only_refined)
    - new: ./lib/utils/car.lua: function:
    - new: ./lib/utils/locomotive.lua: function: utils.locomotive.overwrite(locomotive_name, level, only_refined)
    - new: ./lib/utils/locomotive.lua: function:
Version: 0.17.07
Date: 27. 03. 2019
  Minor Features:
    - new: ./lib/utils/item.lua: function:
    - improved some scripts
    - ./lib/utils/recipe.lua: function: utils.recipe.result.replace(recipe_name, result_old, result_new) in some cases forget to set value for main_product
Version: 0.17.06
Date: 24. 03. 2019
    - ./lib/utils/recipe.lua: function: convert_ingredients, removed copy and paste artifact
Version: 0.17.05
Date: 23. 03. 2019
    - ./lib/script/inserter.lua: function: check_filter' now handels blacklist and whitelist setting as expected
Version: 0.17.04
Date: 23. 03. 2019
  Minor Features:
    - new: ./lib/utils/recipe.lua: 'replace_all(ingredient_old, ingredient_new)' replace 'ingredient_old' with 'ingredient_new' in all recipes
Version: 0.17.03
Date: 23. 03. 2019
    - fixed a failure that the inserter script wasn't running
Version: 0.17.02
Date: 23. 03. 2019
    - added new scripts for use in other mods
Version: 0.17.01
Date: 16. 03. 2019
  Major Features:
    - Initial release