Use Shogi expressions to override mod-exposed properties by targeting a namespaced key.
This guide focuses on the workflow first, then uses two real keys as examples:
waystones:warp_requirementsforgivingvoid:falling_heightEvery hook target is a key in namespace:path format.
namespace: usually the mod id (waystones, forgivingvoid)path: the exposed property id (warp_requirements, falling_height)The key must match exactly.
Depending on the mod integration, rules are either:
config/shogi.json keyed by the property idUse expression format in regular end-user configs. Keep rules small and test incrementally.
If you need a syntax refresher first, read Rule Expression Format.
waystones:warp_requirementsWaystones usually exposes this through teleports.rules as a list of expressions.
Distance-based XP cost with interdimensional flat override:
$xp_points_cost = if(condition = is_interdimensional, then = 27, else = $distance * 0.01)
$xp_points_cost = clamp($xp_points_cost, 0, 27)
Conditional cooldown for inventory-button teleports:
is_inventory_button -> cooldown_cost('inventory_button', '300s')
Optional warp stone durability cost:
is_warp_stone -> damage_item(80)
forgivingvoid:falling_heightfalling_height controls the height Forgiving Void uses when returning entities from the void.
Dimension-based return height:
is_dimension('minecraft:the_nether') -> 180
is_dimension('minecraft:the_end') -> 256
220
Safe clamped integer pattern:
$target_height = 220
$target_height = clamp($target_height, 128, 320)
$target_height
->, commas, +, and quoting.For JSON equivalents and translation patterns, see Advanced: Using JSON.