No Jump Delay

No_Jump_Delay Бой (Combat) HIGH +7 очков

🎮 Влияние на механику Minecraft

В ванильном Minecraft при каждом прыжке сущности переменная LivingEntity.jumpingCooldown устанавливается в значение 10 тиков (0.5 секунды). Пока таймер больше нуля, игрок не может совершить следующий прыжок сразу после приземления. Модификации с функцией No Jump Delay сбрасывают jumpingCooldown в 0 на каждом тике, что убирает паузу между прыжками, позволяет непрерывно распрыгиваться (BunnyHop) и сохранять максимальную скорость спринт-прыжков.

🔍 Анализируемые функции и API

LivingEntity.jumpingCooldown

Внутренний счетчик тиков (field_6228), запрещающий повторные прыжки каждый тик.

LivingEntity.tickMovement

Метод обработки физики и движения сущности (method_6007).

💻 Реализация в моде (Исходный код)

// Developer Source (Fabric / Yarn mappings)
@Mixin(LivingEntity.class)
public abstract class LivingEntityMixin {
    @Shadow
    private int jumpingCooldown;

    @Inject(method = "tickMovement", at = @At("HEAD"))
    private void removeJumpDelay(CallbackInfo ci) {
        if ((Object) this instanceof ClientPlayerEntity) {
            this.jumpingCooldown = 0;
        }
    }
}

⚙️ Декомпилированный вид (Vineflower)

// Decompiled with Vineflower 1.12 (Intermediary mappings)
@Mixin(class_1309.class)
public abstract class LivingEntityMixin {
    @Shadow
    private int field_6228;

    @Inject(method = "method_6007()V", at = @At("HEAD"))
    private void removeJumpDelay(CallbackInfo ci) {
        if (this instanceof class_746) {
            this.field_6228 = 0;
        }
    }
}

🛡️ Сигнатура байткода и статический детект

Совпадение обращений к LivingEntity.jumpingCooldown (class_1309.field_6228 / field_70773_bE / m_21168_) совместно с Mixin-аннотациями (@Inject, @Shadow, @Accessor).