Shogi supports both:
Expressions are easier to read and more concise. Use JSON only when you need complex structure that would get messy within expressions.
A Shogi JSON rule usually includes:
type: the effect/operation identifierExample concepts:
shogi:constant with a value fieldshogi:iftypeExpression:
is_dimension('minecraft:the_nether') -> failure('Disabled in the Nether')
Equivalent JSON shape:
{
"type": "shogi:if",
"condition": {
"type": "shogi:is_dimension",
"dimension": "minecraft:the_nether"
},
"then": {
"type": "shogi:failure",
"message": "Disabled in the Nether"
}
}