This mod does not add new beacons unless you use the example mod setting. Another mod must be used to add new beacons.
Thanks to quezler, nonstandard beacons now have zero runtime overhead on steady-state (fully powered or no fuel) bases. The only scripting is done when the beacon turns on/off.
You can now create and run non-electric beacons, and this mod will handle all runtime scripting related to them.
WHEN ADDING THE MOD AS A REQUIREMENT, MAKE SURE TO MAKE IT NOT LOAD ORDER AFFECTING (i.e. "~ zzz-nonstandard-beacons")
Define your beacon entity like normal, but when setting the energy_source just define it as a fluid, heat, or burner variant (OR custom electric using "electric-2-electric-boogaloo"). Like so:
{
name = "burner-beacon",
type = "beacon",
icon = "__base__/graphics/icons/beacon.png",
flags = {"placeable-player", "player-creation"},
minable = {mining_time = 0.5, result = "beacon"},
collision_box = {{-1.2, -1.2}, {1.2, 1.2}},
selection_box = {{-1.5, -1.5}, {1.5, 1.5}},
allowed_effects = {"consumption", "speed", "pollution"},
graphics_set = require("__base__.prototypes.entity.beacon-animations"),
energy_usage = "480kW",
energy_source = {
type = "burner",
fuel_categories = {"chemical"},
fuel_inventory_size = 1,
emissions_per_minute = { pollution = 30 }
},
radius_visualisation_picture = {
filename = "__base__/graphics/entity/beacon/beacon-radius-visualization.png",
width = 10,
height = 10
},
supply_area_distance = 3,
distribution_effectivity = 1.5,
module_slots = 2,
}
Nonstandard Beacons includes some new features that you can use on custom beacons, just define them as follows:
prototype.effect_reciever = [EffectReciever](https://lua-api.factorio.com/latest/types/EffectReceiver.html)allows the beacon source to be affected by surface, beacon, or module effects. If the effect category is not explicitly allowed, the beacon will default to ignoring it.uses_module_effectsanduses_beacon_effectscannot both be true, due to implementation reasons. Ifuses_beacon_effectsis true, then the beacon's energy draw will be affected by surrounding beacons. Ifuses_module_effectsis true, then the beacon's energy draw will be affected by the contained modules.- Use
remote.call("nonstandard-beacons", "get-beacon-data", beacon_unit_number)to access any of the internal entities releated to that nonstandard beacon.sourceis the actual power source entity - an assembler, internally. it's the only one that you should need access to, if anything.manageris the entity that detects changes in the beacon state, also an assembler.monitorandmimiconly exist if the beaconuses_module_effects, and i see no reason why you would need to access either. they only provide information to the circuit network. - Hidden energy source assemblers can support a custom recipe with extra inputs or outputs if desired. You'll need to set
prototype.source_recipeto the RecipeID of the recipe you want to use, and make sure the recipe category isnsb-filler-category. If desired, you can also have i/o fluidboxes viaprototype.source_fluidboxes. - You must use the custom energy source
"electric-2-electric-boogaloo"to use any of the other additional features on an electrically powered beacon.
- Sources with byproducts (like fusion power)
- Secondary source requirements (powered by fluids and items, etc)
- Multi fuel souces (like thrusters)
- There is currently no way to see the fuel inventory. This will eventually be fixed by a custom GUI implementation.
- If you rotate a beacon, it will show the "this entity cannot be rotated" message even though the connections rotate. This is not solvable, just ignore it.
- Most of the previous issues were resolved in version 1.2.0. Yay!
If you have any suggestions for future features or compatability, let me know. Creating a discussion on the shelved issues/features makes it more likely that they will be implemented.
My mods are made 100% by humans, with no computer generated code or graphics. As always, if you have a mod idea, let me know and I can look into it.