Математические выражения
Начало работы
Помимо обычного чтения переменных, есть более продвинутый вариант работы с ними с помощью математических выражений. Полную мощность этого метода можно почувствовать, воспользовавшись моделью rpt:expression
json
{
"model": {
"type": "rpt:expression",
"value": "foo + 1",
"cases": [
{
// можно указать и единым значением:
"when": [ 6 ],
// "all" по умолчанию false. если true, то чтобы этот случай
// выбрался, нужно чтобы все условия из when выполнились:
"all": true
"model": { ... } // Эта модель обновится, т.к. 5 + 1 = 6!
}
]
},
// ...
}Помимо точного сравнения, в when вы можете указать и другие выражения для сравнений, константы и функции. Вы можете найти список всех этих вещей в документации EvalEx (англ)
json
{
"model": {
"type": "rpt:expression",
"value": "SIN(5) + PI",
"cases": [
{
"when": [ ">=0" ],
"model": {
"type": "model",
"model": "item/diamond"
}
}
]
}
}Игровые переменные
Также вместе с переменными из rpt, в выражениях можно использовать игровые переменные:
1. Глобальные переменные и Время
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
gameTime | Общее игровое время в тиках с момента создания мира. | 0 |
dayTime | Время текущего дня в тиках (от 0 до 24000). | 0 |
seed | Уникальное числовое зерно (seed) для текущего контекста рендера. | Передается из контекста |
2. Параметры Сущности (Держателя)
Эти параметры относятся к существу (игроку или мобу), который держит предмет.
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
holderX | Координата X позиции сущности в мире. | 0 |
holderY | Координата Y позиции сущности в мире. | 0 |
holderZ | Координата Z позиции сущности в мире. | 0 |
yaw | Поворот сущности по горизонтали (в градусах). | 0 |
pitch | Поворот сущности по вертикали (наклон головы). | 0 |
health | Текущее количество здоровья сущности. | 20 |
maxHealth | Максимально возможное здоровье сущности. | 20 |
fallDistance | Дистанция падения сущности. | 0 |
motionX | Скорость по оси X. | 0 |
motionY | Вертикальная скорость (положительная при прыжке, отрицательная при падении). | 0 |
motionZ | Скорость по оси Z. | 0 |
speed | Полная скорость движения сущности. | 0 |
horizontalSpeed | Горизонтальная скорость движения (X и Z). | 0 |
onGround | Находится ли сущность на земле (1 — да, 0 — нет). | 0 |
isSprinting | Бежит ли сущность со спринтом (1 — да, 0 — нет). | 0 |
isCrouching | Крадётся ли сущность (1 — да, 0 — нет). | 0 |
isInWater | Находится ли сущность в воде (1 — да, 0 — нет). | 0 |
isInLava | Находится ли сущность в лаве (1 — да, 0 — нет). | 0 |
isSwimming | Плывёт ли сущность (1 — да, 0 — нет). | 0 |
isFallFlying | Летит ли сущность на элитрах (1 — да, 0 — нет). | 0 |
isAlive | Жива ли сущность (1 — да, 0 — нет). | 0 |
isOnFire | Горит ли сущность (1 — да, 0 — нет). | 0 |
isInvisible | Невидима ли сущность (1 — да, 0 — нет). | 0 |
hurtTime | Время с момента получения урона (в тиках). | 0 |
deathTime | Время с момента смерти (в тиках). | 0 |
invulnerableTime | Оставшееся время неуязвимости (в тиках). | 0 |
age | Возраст сущности в тиках (актуально для мирных мобов). | 0 |
3. Параметры Игрока
Доступны только если предмет держит игрок. В противном случае возвращаются стандартные значения.
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
food | Текущий уровень сытости игрока (0 — 20). | 20 |
saturation | Уровень насыщения игрока (скрытая шкала еды). | 5 |
experienceLevel | Текущий уровень опыта (цифра над полоской опыта). | 0 |
xpProgress | Прогресс до следующего уровня опыта (от 0.0 до 1.0). | 0.0 |
totalXp | Суммарное количество опыта игрока. | 0.0 |
armor | Суммарное значение очков брони на игроке. | 0 |
air | Текущий запас воздуха (в тиках). | 0 |
maxAir | Максимальный запас воздуха (в тиках). | 0 |
attackCooldown | Текущая готовность к атаке (от 0.0 до 1.0). | 0.0 |
sleeping | Спит ли игрок (1 - да, 0 - нет). | 0 |
attackProgress | Прогресс анимации удара от 0 до 1 | 0 |
usageProgress | Прогресс анимации использования от 0 до 1 | 0 |
isSlim | Тонкие ли у игрока руки: 1 - да, 0 - нет | 0 |
4. Окружение и Освещение
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
lightSky | Уровень небесного освещения в текущей позиции (0 - 15). | 0 |
lightBlock | Уровень освещения от блоков (факелы, лампы) (0 - 15). | 0 |
lightTotal | Максимальное значение между lightSky и lightBlock. | 0 |
biomeTemp | Базовая температура биома, в котором находится сущность. | 0 |
sunAngle | Угол солнца в небе (от 0.0 до 1.0). | 0.0 |
moonPhase | Текущая фаза луны (целое число от 0 до 7). | 0 |
