this callback is called after the game runs input prediction it gives you an instance of the current user_cmd_t and unpredicted_data_t you should avoid to change the current user_cmd_t since it will cause a re-prediction and will cost fps only use this instead of SETUP_COMMAND when you need info on the unpredicted_data_t

-- simple edge jump
local function on_run_command(cmd, unpredicted_data)
    local local_player = entity_list:get_local_player()

    -- were we on the ground before prediction?
    local was_on_ground = unpredicted_data:has_player_flag(e_player_flags.ON_GROUND)

    -- are we on ground right now?
    local is_on_ground = local_player:has_player_flag(e_player_flags.ON_GROUND)

    -- if we know that if we dont change anything about our movement, we will fall off this tick, we can automatically jump
    if not is_on_ground and was_on_ground then
        -- make sure we jump now

callbacks.add(e_callbacks.RUN_COMMAND, on_run_command)

Last updated