Legendary Survival Overhaul
PackEngine can add thirst and heal individual limbs through Legendary Survival Overhaul (LSO) when it’s installed. It calls LSO’s public API through reflection, so PackEngine doesn’t depend on LSO at compile time or at runtime, and doesn’t bundle it.
The calls have been checked against LSO 1.20.1-2.3.23.1 and 1.20.1-2.4.6.
When LSO isn’t there
Items with LSO actions still load without LSO. The actions do nothing, and PackEngine logs one warning the first time one runs.
The item still behaves normally otherwise. It spends its charge, gives its result item and starts its cooldown, whether the LSO action did nothing because LSO is missing, because that LSO feature is turned off, or because the target was already full.
If a whole pack makes no sense without LSO, add legendarysurvivaloverhaul to its required_mods.
Leave it out to keep the pack’s other items and actions working without LSO.
Targets
Both actions take the normal timing, animation filters and target. LSO only tracks players, so
self works, and interacted works when the entity used on is another player. Any other target is
skipped. LSO’s own config decides whether thirst and limb health are on; when they’re off, the action
does nothing.
Thirst
legendarysurvivaloverhaul:thirst adds hydration and thirst saturation through LSO’s drink API.
| Field | Type | Default | Meaning |
|---|---|---|---|
hydration |
integer, 0 or more | 0 |
Hydration added each time the event fires. |
saturation |
number, 0 or more | 0 |
Thirst saturation added each time the event fires. |
At least one of them has to be above 0. LSO caps the values and syncs them.
Once, when the use clip ends:
{
"type": "legendarysurvivaloverhaul:thirst",
"hydration": 4,
"saturation": 1.0
}
1 hydration and 0.25 saturation every 10 ticks from tick 20 to 60:
{
"type": "legendarysurvivaloverhaul:thirst",
"hydration": 1,
"saturation": 0.25,
"timing": "ticks",
"from": 20,
"to": 60,
"interval": 10
}
Limb healing
legendarysurvivaloverhaul:body_heal heals the chosen LSO body parts each time it fires.
| Field | Type | Default | Meaning |
|---|---|---|---|
parts |
string or array | required | One part, a list of parts, or "all". |
amount |
number above 0 | required | Health given to each chosen part each time. |
The parts are head, chest, left_arm, right_arm, left_leg, right_leg, left_foot and
right_foot. "all" picks all eight and can’t be mixed with other names. Listing a part twice
doesn’t heal it twice.
amount goes to every part, not split between them. "parts": "all" with "amount": 2 heals each
of the eight parts by 2.
LSO limb health and vanilla health are separate. This action only heals the limbs. To give back
hearts too, add a heal event on the same tick.
One part:
{
"type": "legendarysurvivaloverhaul:body_heal",
"parts": "left_leg",
"amount": 2
}
Both arms:
{
"type": "legendarysurvivaloverhaul:body_heal",
"parts": ["left_arm", "right_arm"],
"amount": 2
}
Every part:
{
"type": "legendarysurvivaloverhaul:body_heal",
"parts": "all",
"amount": 1
}
One part, a bit at a time:
{
"type": "legendarysurvivaloverhaul:body_heal",
"parts": "left_leg",
"amount": 0.5,
"timing": "ticks",
"from": 10,
"to": 60,
"interval": 10
}
Heal the left arm by 4 LSO health and give back two hearts at tick 115:
[
{
"type": "legendarysurvivaloverhaul:body_heal",
"parts": "left_arm",
"amount": 4,
"tick": 115
},
{
"type": "heal",
"amount": 4,
"tick": 115
}
]
The repeating form heals straight away each time it fires. It doesn’t start LSO’s own queued healing, so it stops when the PackEngine use stops.