-
Notifications
You must be signed in to change notification settings - Fork 0
Declare Duct
Type: another_dynamics:declare_duct
Path: data/<namespace>/load/**/*.json
Reload: /reload
Defines a logical duct id: transport kinds, batch/rate/speed, filter bank sizes, module slots, rendering, and feature restrictions. Creative stacks use the shared duct item + logical-id component; you do not register a new block class from datapack alone (builtin items already cover shipped types).
{
"type": "another_dynamics:declare_duct",
"id": "mypack:fast_item_duct",
"name": "duct.mypack.fast_item_duct",
"put_in_creative_menu": true,
"module_slots": 1,
"can_transport": [
{
"dec": "item",
"batch": { "default": 64, "max": -1 },
"rate": { "default": 5, "min": 1 },
"speed": { "default": 5, "min": 2 },
"filter": {
"deny": 8,
"allow": 8,
"deny_hybrid": 4,
"allow_hybrid": 4
}
}
],
"connect_with_compatbile": true,
"disabled_features": [],
"rendering": {
"always_opaque": false,
"default_texture": "another_dynamics:block/duct/item/item_duct_0_light",
"model_default": "another_dynamics:block/simple_duct_default",
"model_line": "another_dynamics:block/simple_duct_line"
}
}| Field | Required | Description |
|---|---|---|
type |
yes | another_dynamics:declare_duct |
id |
yes | Logical duct id (namespace:path) |
name |
no | Lang key for display |
put_in_creative_menu |
no | Default false if omitted by loader rules; builtin files set true
|
sound |
no | e.g. metallic
|
module_slots |
no | Face module capacity (integer ≥ 0) |
can_transport |
yes | Array of transport entries (see below) |
connect_with_compatbile |
no | Typo alias kept; whether to connect with compatible networks |
disabled_features |
no | Feature keys to disable (also alias disabled_feathures) |
forbidden_features |
no | Hard-forbid keys (same vocabulary as disabled) |
module_features |
no | Reserved / unused in current balance packs |
restrictions |
no | Optional object wrapping feature fields instead of root |
rendering |
no | Textures / models / always_opaque
|
neoforge:conditions |
no | Standard NeoForge load conditions (e.g. mod_loaded) |
Each entry needs dec plus kind-specific stats.
| Field | Description |
|---|---|
batch.default / batch.max
|
Transfer quantity; max: -1 = uncapped |
rate.default / rate.min
|
Action interval (ticks); lower = faster |
speed.default / speed.min
|
Travel time along ducts; lower = faster |
filter.allow / deny / allow_hybrid / deny_hybrid
|
Base filter line counts |
move_radioactive |
(mek_gas only) allow radioactive chemicals |
| Field | Description |
|---|---|
extract |
Default extract amount |
transfer |
Max transfer |
ray_color |
Optional hex color for energy ray visuals |
| Field | Description |
|---|---|
insulation |
Heat moved per action |
If Mekanism chemical/heat APIs are unavailable or gated off (see Tags and Compatibility), mek_gas / mek_heat entries are skipped at load with a warning.
Keys are lowercased by the loader. Unknown keys log a warning.
| Key | Effect |
|---|---|
special:channel |
Disables channel / multi-lane controls |
special:modules |
Disables module slots UI/behavior (special:upgrades is accepted as alias) |
| Key | Blocks lines starting with |
|---|---|
filter:item |
exact id / -id style |
filter:tag |
# |
filter:modid |
@ |
filter:nbt |
? |
filter:predefined |
& macros |
filter:remote_node |
remote destination binding |
Generated patterns (see DuctFeatureKeys):
-
mode:<nodemode>— e.g.mode:extraction,mode:retrieving -
routing:nearest|farthest|middlest|round_robin|random -
list:<context>:allow|deny|precedence
Context examples:list:extraction:allow,list:extraction_filtering:extractor:deny,list:retrieving_extraction:retriever:precedence
Use these to strip modes or list editing from a duct type without changing Java.
| Id | Notes |
|---|---|
another_dynamics:item_duct |
Items |
another_dynamics:fluid_duct |
Fluids |
another_dynamics:flux_duct |
FE |
another_dynamics:gas_duct |
Mek gas + neoforge:mod_loaded mekanism |
another_dynamics:heat_duct |
Heat insulation 10; module_slots: 1; Mek condition |
another_dynamics:universal_duct |
All kinds in one definition |
Project ducts are a separate block (not a declare_duct logical type for conversion targets).
- Override balance by shipping replacement JSON with the same
idand higher datapack priority, or add new ids and wire recipes/items yourself. - Extra module slots or alternate tiers need both datapack definitions and matching registered items/recipes.
- Prefer
disabled_featuresover forking Java for simple pack constraints.