diff options
author | the lemons <citrons@mondecitronne.com> | 2022-02-12 20:02:32 -0600 |
---|---|---|
committer | the lemons <citrons@mondecitronne.com> | 2022-02-12 20:02:32 -0600 |
commit | bbd687ab8eb1d19177bcd2e46beb9cc1449bd03e (patch) | |
tree | 9e9c4738809d4c6ac2b40c43954536185dfc14d6 | |
parent | d742d5dfbdff8fc631dd237e40c0904ba12fd0c3 (diff) | |
parent | c1a6df8b5ba5b5e472f0a6895180c726f271730c (diff) |
Merge branch 'master' of citrons.xyz:vzxv
-rw-r--r-- | mods/vzxv_gravity/init.lua | 33 | ||||
-rw-r--r-- | mods/vzxv_gravity/mod.conf | 3 |
2 files changed, 36 insertions, 0 deletions
diff --git a/mods/vzxv_gravity/init.lua b/mods/vzxv_gravity/init.lua new file mode 100644 index 0000000..581a677 --- /dev/null +++ b/mods/vzxv_gravity/init.lua @@ -0,0 +1,33 @@ +local gravity_objects = {} + +local e = 2.718 + +local function gravity(ylevel) + return 2 / (1+(e ^ (ylevel/6000))) +end + +local gravmul = -9.81 + +local gravfunc = function(e) + local pos = e:get_pos() + local grav = gravity(pos.y+30000) * gravmul + e:set_acceleration({x=0,y=grav,z=0}) +end + +function vzxv.register_gravity(entity) + local entdef = minetest.registered_entities[entity] + local old_onstep = entdef.on_step or function() end + entdef.on_step = function(self,dtime,moveresult) + gravfunc(self) + return old_onstep(self,dtime,moveresult) + end +end + +minetest.register_globalstep(function() + local players = minetest.get_connected_players() + for _,player in ipairs(players) do + player:set_physics_override({ + gravity = gravity(player:get_pos().y) + }) + end +end)
\ No newline at end of file diff --git a/mods/vzxv_gravity/mod.conf b/mods/vzxv_gravity/mod.conf new file mode 100644 index 0000000..e51b4df --- /dev/null +++ b/mods/vzxv_gravity/mod.conf @@ -0,0 +1,3 @@ +name=vzxv_gravity +description = Vzxv +depends = vzxv
\ No newline at end of file |