Q: If my mod supports using this “Circuit” group tab, would it make players fail to load without it?
A: No, you can use conditional statements to set which subgroup the modded item belongs to. Schall Armoured Train is a perfect example, to my another group tab mod Schall Transport Group.
Q: I have tons of modded circuit components (say, new combinators) that wants to be put new subgroups, can I do that?
A: Yes, you may create new subgroups if you want to. Simply set it group = "transport"
with a proper order
then it will work. Schall Tank Platoon is an example on creating custom subgroups, to my another group tab mod Schall Transport Group.
Q: Why not this mod just set all the subgroups of all other circuit components mods?
A: It is because I feel it is not the best way to do that, and maybe a bit disrespectful to fellow modders. They may have their preferred way to handle things, like using further subgroups to show things nicely. Furthermore, setting subgroups of their items may actually disrupt and prevent fellow modders to work with this mod.
So I leave this mod purely as a common and basic framework for everyone. No code will be included to directly alter any modded items (not even those from my other circuit components mods!)
Still the best way is for fellow modders to add conditional assignments to their own items, who know their own mods the best.
Q: What does the new subgroup circuit-input
do? It is not used by any items in the game!
A: It is designed for items that have a PRIMARY ROLE of producing circuit network signals (by measuring the environment, reading contents, or alike), thus as input to a circuit network.
In vanilla game, there are things like transport belts, storage tanks, chests, rail signals, etc, that could produce circuit signals when connected by circuit wires. However, this is rather SUPPLEMENTARY when compared to their main role, thus better to stay in their original group tabs.
Yet, many modded items do fit into this subgroup though, like various detectors ranging from measuring brightness, time, enemy counts. It does not too fitting to put these detectors into the current combinator subgroups, so this new subgroup is introduced.
The only vanilla item that may fit into this subgroup is the constant combinator, but probably too many players (including myself) are already too used to have the three vanilla combinators being put together. So I just leave it as is.
Instructions to Fellow Modders
Adding Optional Dependency
Your mod should work with or without this mod. So first of all, in "info.json" of your mod folder, please add an optional dependency "? SchallCircuitGroup"
, to make sure the load order is correct.
Here is an example:
"dependencies": ["base >= 0.18.0", "? SchallCircuitGroup"]
Putting into a Subgroup
This mod has already done most of the job for you. You simply need to set the subgroup where your item should belong to, like the following:
subgroup = "circuit-combinator"
Or pick the appropriate subgroup instead. The list of subgroups are as below:
circuit-network
(the vanilla subgroup): Contains miscellanous items, e.g., wires, cables.circuit-connection
: Connection controls, e.g., vanilla power switch.circuit-combinator
: All combinators, e.g., vanilla arithmetic combinator, decider combinator, constant combinator.circuit-input
: Produces circuit signals (by measuring the environment or reading contents). (Not used by vanilla items, but reserved for various detectors from mods.)circuit-visual
: Outputs circuit signals as visual perception to players, e.g., lamps, display panel.circuit-auditory
: Outputs circuit signals as auditory perception to players, e.g, vanilla programmable speaker.
By enabling mod option "Individual combinator subgroups", each of the vanilla combinator types and some other compoents would be put into their own extra subgroups. (These subgroups exist no matter the option is enabled or not.) These subgroups include:
- circuit-combinator-arithmetic
- circuit-combinator-decider
- circuit-combinator-selector
(Introduced in 2.0.0)
- circuit-combinator-constant
- circuit-visual-lamp
(Introduced in 2.0.0)
Advanced: Conditional assignment
You would want your mod to both work with and without “Schall Circuit Group” mod installed, right?
Then you would need conditional assignment of subgroups, based on whether “Schall Circuit Group” mod is present or not.
First declare a local variable that will temporarily store the subgroup name, which assigns to vanilla subgroup "circuit-network"
.
local subgroup_circom = "circuit-network"
Next, detect if “Schall Circuit Group” mod is present. If yes, set the variable to the desired subgroup name.
if mods["SchallCircuitGroup"] then
subgroup_circom = "circuit-combinator"
end
Then use the variable subgroup_circom
in your item prototype definition, like:
subgroup = subgroup_circom
Creating New Subgroups
You may also create new subgroups if you want. An example as follows:
{
type = "item-subgroup",
name = "circuit-combinator-5",
group = "circuit",
order = "c-5",
},
Then you can assign subgroup = "circuit-combinator-5"
to your custom combinator in prototype declarations.
So this mod does NOT limit you on what subgroups you should use, but merely provides a common framework for all circuit components modders to use! If you feel a new subgroup I have missed and should be included in this common framework, please state in the Discussion section!
Full List of New (or Changed) Items
Group
- 1 group:
- circuit
- (1 changed, 10 new) subgroup:
- circuit-network (was under "logistics" group, now under "circuit" group)
- circuit-connection
- circuit-combinator
- circuit-combinator-arithmetic
- circuit-combinator-decider
- circuit-combinator-selector
- circuit-combinator-constant
- circuit-input
- circuit-visual
- circuit-visual-lamp
- circuit-auditory
List of Subgroups Used by Compatible Mods
If your mod has any new subgroups created, you may write me the details in the Discussion section. I will keep updating this page, so trying to minimize "competition" over the order space between different mods!
Subgroup | Order | Created by | Item types | Examples / Remarks |
---|---|---|---|---|
circuit-network | a | Vanilla | Anything not actually placed entities. | Default for all items that were in vanilla circuit-network subgroup. |
circuit-connection | b | This mod | Connection controls. | Power switch. |
circuit-combinator | c | This mod | Any combinators. | |
circuit-combinator-arithmetic | c-1 | This mod | Arithmetic combinators. | Arithmetic combinators. |
circuit-combinator-decider | c-2 | This mod | Decider combinators. | Decider combinators. |
circuit-combinator-selector | c-3 | This mod | Selector combinators. | Selector combinators. Introduced in 2.0. |
circuit-combinator-constant | c-4 | This mod | Constant combinators. | Constant combinators. Moved from c-3. |
circuit-input | d | This mod | Produces circuit signals. | Various detectors. |
circuit-visual | e | This mod | Visual perception to players. | Display panel. |
circuit-visual-lamp | e-1 | This mod | Lamps. | Lamps. Introduced in 2.0. |
circuit-auditory | f | This mod | Auditory perception to players. | Programmable speaker. |