Skip to content

Математические выражения

Начало работы

Помимо обычного чтения переменных, есть более продвинутый вариант работы с ними с помощью математических выражений. Полную мощность этого метода можно почувствовать, воспользовавшись моделью 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 до 10
usageProgressПрогресс анимации использования от 0 до 10
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

Выпущено под лицензией MIT.