3 --set up our initial values
7 local run_discharge_timer = 0
10 local old_sneak = false
11 local bunny_hop = false
12 local old_bunny_hop = false
14 --attempt to tell the server to allow us to run
15 local send_server_movement_state = function(state)
16 player_movement_state:send_all(state)
20 --receive the server states
21 minetest.register_on_modchannel_message(function(channel_name, sender, message)
22 if channel_name == "player.player_movement_state" then
27 --check player's input on the "up" key
28 minetest.register_globalstep(function(dtime)
30 if not minetest.localplayer then
34 local input = minetest.localplayer:get_control()
35 local vel = minetest.localplayer:get_velocity()
36 local oldvel = minetest.localplayer:get_last_velocity()
38 --cancel running if the player bumps into something
39 if running == true and ((vel.x == 0 and oldvel.x ~= 0) or (vel.z == 0 and oldvel.z ~= 0)) then
42 run_discharge_timer = 0
47 if running == true and (input.up == false or input.sneak == true or input.down == true) then
54 --check if need to tell server to bunnyhop
55 if running == true and vel.y > 0 and input.jump == true and bunny_hop == false then
61 if bunny_hop == true and input.jump == false and running == true and vel.y == 0 then
67 --half second window to double tap running
68 if run_discharge_timer > 0 then
69 run_discharge_timer = run_discharge_timer - dtime
70 if run_discharge_timer <= 0 then
71 run_discharge_timer = 0
73 --initialize double tap run
74 if old_up == false and input.up == true and vel.x ~= 0 and vel.z ~= 0 then
75 run_discharge_timer = 0
82 --check if new input of walking forwards
83 if input.up and input.down == false and input.sneak == false and old_up == false and running == false and run_discharge_timer <= 0 then
84 run_discharge_timer = 0.2
87 --add this here so the player can sneak
88 if input.sneak == true then
89 run_discharge_timer = 0
97 if sneak == true and old_sneak == false then
99 elseif input.sneak == false and old_sneak == true then
104 --only send if state has changed
105 if state ~= old_state then
106 send_server_movement_state(tostring(state))
111 old_sneak = input.sneak
112 old_bunny_hop = bunny_hop