summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorheav-4 <heavpoot@gmail.com>2022-02-13 01:58:23 +0000
committerheav-4 <heavpoot@gmail.com>2022-02-13 01:58:23 +0000
commit46c55e261e66a89b32fecbfacb86fc24c033c7dc (patch)
tree00ec5d4c16fc01c1a72a017d47e57e69c2124f4d
parentc6fcff61d7611f947679c1733c3f3912cde5ba97 (diff)
Added gravity based on height
-rw-r--r--mods/vzxv_gravity/init.lua33
-rw-r--r--mods/vzxv_gravity/mod.conf3
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