Confirmedusers
510
edits
(Make the output of addmerge more specific in the example) |
(Document addeach) |
||
Line 210: | Line 210: | ||
<!--T:34--> | <!--T:34--> | ||
'''Note''' : see the [[Modding:CompatibilityLib|Compatibility]] page for other ways to handle conflicts and dependencies between mods. | '''Note''' : see the [[Modding:CompatibilityLib|Compatibility]] page for other ways to handle conflicts and dependencies between mods. | ||
=== AddEach operation === | |||
"addeach" is used to insert multiple entries at some index in an array. As example, let's say a mod wanted to insert two new behaviors before the AnimationAuthoritative behavior in the hammer tool. This is the initial value before the patch: | |||
<syntaxhighlight lang="json"> | |||
// Section of hammer.json | |||
behaviors: [{ | |||
name: "GroundStorable", | |||
properties: { | |||
layout: 'WallHalves', | |||
wallOffY: 1, | |||
sprintKey: true, | |||
selectionBox: { x1: 0, y1: 0, z1: 0, x2: 1, y2: 0.1, z2: 1 }, | |||
collisionBox: { x1: 0, y1: 0, z1: 0, x2: 0, y2: 0, z2: 0 }, | |||
} | |||
}, { name: "AnimationAuthoritative" }], | |||
<syntaxhighlight lang="json"> | |||
The two new behaviors could be inserted using two "add" or "addmerge" patches. | |||
<syntaxhighlight lang="json"> | |||
// Example patch using "add" | |||
[ | |||
// Insert new behaviors in the hammer item before the existing AnimationAuthoritative behavior. | |||
{ | |||
side: "server", | |||
file: "game:itemtypes/tool/hammer", op: "add", path: "/behaviors/1", | |||
value: { | |||
name: "NewBehavior2" | |||
} | |||
}, | |||
{ | |||
side: "server", | |||
file: "game:itemtypes/tool/hammer", op: "add", path: "/behaviors/1", | |||
value: { | |||
name: "NewBehavior1" | |||
} | |||
}, | |||
] | |||
</syntaxhighlight> | |||
Or to be more concise, "addeach" could be used to insert both entries in the array with one operation. Note that when using "addeach", the entries to insert are in standard (non-reversed) order. | |||
<syntaxhighlight lang="json"> | |||
// Example patch using "add" | |||
[ | |||
// Insert new behaviors in the hammer item before the existing AnimationAuthoritative behavior. | |||
{ | |||
side: "server", | |||
file: "game:itemtypes/tool/hammer", op: "addeach", path: "/behaviors/1", | |||
value: [ | |||
{ | |||
name: "NewBehavior1" | |||
}, | |||
{ | |||
name: "NewBehavior2" | |||
} | |||
] | |||
}, | |||
] | |||
</syntaxhighlight> | |||
"addeach" only works when the patch value is an array and the target is an array. Otherwise it will thrown an exception. | |||
<!--T:26--> | <!--T:26--> |