promotional bannermobile promotional banner

Masterful Machinery Fork

Its a fork from Masterful machinery. The original Mod got removed.

File Details

MasterfulMachinery-3-1.20.1-0.1.32.jar

  • R
  • Dec 26, 2025
  • 721.61 KB
  • 3.9K
  • 1.20.1
  • Forge

File Name

MasterfulMachinery-3-1.20.1-0.1.32.jar

Supported Versions

  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:masterful-machinery-fork-1361830:7382450")
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

## [0.1.32] - 2025-12-26

### Added
- New item port with configurable per-slot capacity:
- Ports can be configured to hold more items per slot than the vanilla stack size. This is exposed as a `slotCapacity` on item port models.
- Example port model (JSON):

```json
{
"type": "mm:item_port",
"rows": 3,
"columns": 9,
"slotCapacity": 256 //optinal, defaults to 64
}
```

- This creates an item port with 3 rows × 9 columns where each slot can hold up to 256 items (logical capacity).
- Internally the handler keeps a separate authoritative count per slot and updates the display stack to the item max stack size; the `slotCapacity` controls the logical capacity per slot used by recipes and routing.

- If you create ports programmatically (or via data-driven registrations), set the model's `slotCapacity` field to the desired integer.

- NBT-aware recipe inputs and outputs (weak and strong matching):
- Recipes can now require item NBT on inputs and produce items with NBT on outputs.
- Two matching modes are supported:
- `weak`: required NBT is treated as a subset — the item must contain the required keys but may have additional keys.
- `strong`: required NBT must match exactly (1:1) — no extra keys allowed.

- JSON recipe examples:

- Input (weak, JSON-NBT):
```json
{
"type": "mm:input/consume",
"ingredient": {
"type": "mm:item",
"item": "hostilenetworks:prediction",
"count": 1,
"nbt": { "data_model": { "id": "hostilenetworks:the_outer_end/stalker" } },
"nbt_match": "weak" //this line is optional since 'weak' is the default
}
}
```

- Output (strong, SNBT string shorthand):
```json
{
"type": "mm:output/simple",
"ingredient": {
"type": "mm:item",
"item": "hostilenetworks:prediction",
"count": 1,
"nbt_snbt": "{data_model:{id:\"hostilenetworks:the_outer_end/stalker\"}}",
"nbt_match": "strong"
}
}
```

- Shorthand output (legacy-friendly): the parser also accepts a shorthand form and normalizes it to an `ingredient` object — for example this is allowed and will be interpreted as an `ingredient`:
```json
{
"type": "mm:output/simple",
"item": "hostilenetworks:prediction",
"count": 1,
"nbt": "{data_model:{id:\"hostilenetworks:the_outer_end/stalker\"}}"
}
```

- KubeJS examples:

- Input using KubeJS Item.of (SNBT string) — weak match (default):
```js
MMEvents.createProcesses((event) => {
event.create('mm:prediction_item1')
.structureId('mm:fire_attuned_structure')
.ticks(4)
.input({
type: 'mm:input/consume',
ingredient: Item.of('hostilenetworks:prediction', '{data_model:{id:"hostilenetworks:the_outer_end/stalker"}}')
})
.output({
type: 'mm:output/simple',
ingredient: {
type: 'mm:item',
item: 'hostilenetworks:prediction',
count: 1,
nbt_snbt: '{data_model:{id:"hostilenetworks:the_outer_end/stalker"}}'
}
});
});
```

- Input and output with JSON-NBT and `strong` matching:
```js
MMEvents.createProcesses((event) => {
event.create('mm:prediction_item2')
.structureId('mm:fire_attuned_structure')
.ticks(4)
.input({
type: 'mm:input/consume',
ingredient: {
type: 'mm:item',
item: 'hostilenetworks:prediction',
count: 1,
nbt: { data_model: { id: 'hostilenetworks:the_outer_end/stalker' } },
nbt_match: 'strong'
}
})
.output({
type: 'mm:output/simple',
ingredient: {
type: 'mm:item',
item: 'hostilenetworks:prediction',
count: 1,
nbt: { data_model: { id: 'hostilenetworks:the_outer_end/stalker' } },
nbt_match: 'strong'
}
});
});
```

- Notes on formats:
- `nbt`: accepts JSON-style NBT (object form) or — in shorthand — a SNBT string. The parser will try to parse SNBT strings into NBT CompoundTags when necessary.
- `nbt_snbt`: explicitly provides SNBT as a string (useful to avoid ambiguity in tooling).
- `nbt_match`: either `"weak"` or `"strong"` (default is `weak` if omitted).
---