-
Notifications
You must be signed in to change notification settings - Fork 0
Declare Module
Type: another_dynamics:declare_module
Legacy type (still accepted): another_dynamics:declare_upgrade
Path: data/<namespace>/load/**/*.json
Reload: /reload
Defines effects for a module item id when inserted into a duct face module slot.
Builtin items: another_dynamics:inc_module_0 … inc_module_4 (Increment Modules I–V).
When multiple modules contribute modifiers (normally one slot / mutually exclusive):
| Operator | Behavior |
|---|---|
set |
Best (highest) set wins |
add |
Summed |
mult |
Multiplied |
Energy/heat quantity uses the same operators under extract / quantity.
Note: Energy action interval is fixed in code (1 tick); heat interval is fixed (5 ticks). rate keys on those kinds do not change that cadence. Module effects for energy/heat apply from any face on the block.
{
"type": "another_dynamics:declare_module",
"id": "another_dynamics:inc_module_0",
"affects": [
{
"for": "item",
"quantity": { "set": 16 },
"filter": {
"allow": { "add": 6 },
"deny": { "add": 6 },
"allow_hybrid": { "add": 3 },
"deny_hybrid": { "add": 3 }
},
"speed": { "mult": 0.9 },
"rate": { "mult": 0.75 }
},
{
"for": "energy",
"extract": { "mult": 2.5 },
"rate": { "mult": 0.75 }
}
],
"stack": 1,
"max_slots": 1,
"incompatible_with": [
"#another_dynamics:increment_modules"
]
}| Field | Description |
|---|---|
id |
Module item id (must match a registered item that the game treats as a duct module) |
stack |
Max stack size metadata for definition (default 64) |
max_slots |
How many of this module may occupy slots (default 1) |
incompatible_with |
Array of item ids or #tags that conflict |
incompatibility_activation |
Threshold for incompatibility checks (default 1; typo alias incompatibiliy_activation) |
matching_item_tags |
Optional #tag list: stacks in those tags count as this module when they lack a declaration component (KubeJS-only items, etc.) |
affects |
Array of per-transport effect objects |
for |
Quantity field | Notes |
|---|---|---|
item |
quantity (legacy batch accepted) |
+ optional rate, speed, filter
|
fluid |
quantity |
+ rate, speed, filter
|
gas |
quantity |
Mek chemicals; + rate, speed, filter
|
energy |
extract (not quantity) |
+ rate, speed
|
heat |
quantity |
+ rate, speed
|
Each may contain any of:
{ "set": 64, "add": 0, "mult": 0.5 }- Lower
rate/speedmult = faster actions / travel (values are multipliers on the duct base). -
speedmult0.0is used on the top module for near-instant travel.
Under affects[].filter:
"filter": {
"allow": { "add": 6 },
"deny": { "add": 6 },
"allow_hybrid": { "add": 3 },
"deny_hybrid": { "add": 3 }
}Only add (and stacking via set/mult if present) is used in shipped modules.
| Item | Display | Role |
|---|---|---|
inc_module_0 |
I | Mild batch / filter / FE boost; heat set 400 |
inc_module_1 |
II | Stronger batch / filters / FE; heat set 8000 |
inc_module_2 |
III | Large filter banks; FE ×100; heat set 100000 |
inc_module_3 |
IV | Fluid/gas 256k; FE ×500000; heat set 100000 |
inc_module_4 |
V | Instant travel; max-int style caps (incl. heat) |
All are tagged #another_dynamics:increment_modules and list that tag under incompatible_with.
- To add a module: register the item in Java (or your item API), add
declare_moduleJSON, recipes, models, and tag membership. - To rebalance: override the same
idvia datapack priority.