diff options
author | heav-4 <heavpoot@gmail.com> | 2022-03-11 06:36:15 +0000 |
---|---|---|
committer | heav-4 <heavpoot@gmail.com> | 2022-03-11 06:36:15 +0000 |
commit | 9d4a64cd9c26b9eb94ef1b0e773ba9b9e67bee7e (patch) | |
tree | e0febf7cf10a428ebeaa7b2602ed00182401ab99 | |
parent | 873396a85366b119234a1ec48cd3dcf130ca081e (diff) |
lots of things, one of which was loose items
-rw-r--r-- | mods/vzxv/textures/vzxvplank.png | bin | 0 -> 1088 bytes | |||
-rw-r--r-- | mods/vzxv_gravity/init.lua | 10 | ||||
-rw-r--r-- | mods/vzxv_itemstacks/init.lua | 9 | ||||
-rw-r--r-- | mods/vzxv_itemstacks/loose.lua | 33 | ||||
-rw-r--r-- | mods/vzxv_itemstacks/mod.conf | 2 |
5 files changed, 46 insertions, 8 deletions
diff --git a/mods/vzxv/textures/vzxvplank.png b/mods/vzxv/textures/vzxvplank.png Binary files differnew file mode 100644 index 0000000..b91f265 --- /dev/null +++ b/mods/vzxv/textures/vzxvplank.png diff --git a/mods/vzxv_gravity/init.lua b/mods/vzxv_gravity/init.lua index 5541f91..54a68e8 100644 --- a/mods/vzxv_gravity/init.lua +++ b/mods/vzxv_gravity/init.lua @@ -2,16 +2,16 @@ local gravity_objects = {} local e = 2.718 -local function gravity(ylevel) +function vzxv.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}) + local pos = e.object:get_pos() + local grav = vzxv.gravity(pos.y) * gravmul + e.object:set_acceleration({x=0,y=grav,z=0}) end function vzxv.register_gravity(entity) @@ -35,7 +35,7 @@ minetest.register_globalstep(function() for _,player in ipairs(players) do local pos = player:get_pos() player:set_physics_override({ - gravity = gravity(pos.y) + gravity = vzxv.gravity(pos.y) }) local skycol = {0x40,0x80,0xFF} diff --git a/mods/vzxv_itemstacks/init.lua b/mods/vzxv_itemstacks/init.lua index 48d9545..ee6c4dc 100644 --- a/mods/vzxv_itemstacks/init.lua +++ b/mods/vzxv_itemstacks/init.lua @@ -31,7 +31,12 @@ vzxv.mundane_block("vzxv_itemstacks:item","Item","apioform",{ -- TODO: handle dropping into nonair block correctly function vzxv.drop(pos, stack) - minetest.set_node(pos, {name="vzxv_itemstacks:item"}) - vzxv.set_container_stack(pos, stack) + local npos = {} + npos.x = math.floor(pos.x) + npos.y = math.floor(pos.y) + npos.z = math.floor(pos.z) + minetest.set_node(npos, {name="vzxv_itemstacks:item"}) + vzxv.set_container_stack(npos, stack) end +vzxv.include "loose.lua"
\ No newline at end of file diff --git a/mods/vzxv_itemstacks/loose.lua b/mods/vzxv_itemstacks/loose.lua new file mode 100644 index 0000000..58952f8 --- /dev/null +++ b/mods/vzxv_itemstacks/loose.lua @@ -0,0 +1,33 @@ +minetest.register_entity("vzxv_itemstacks:loose_itemstack",{ + initial_properties = { + physical = true, + pointable = false, + visual = "wielditem", + visual_size = {x = 0.4, y = 0.4}, + }, + on_activate = function(self,staticdata) + local luaent = self + staticdata = staticdata~="" and staticdata or "vzxv:apioform" + luaent._stack = staticdata + self.object:set_properties { + wield_item=ItemStack(luaent._stack):get_name() + } + end, + on_step = function(self,dt) + local npos = vzxv.round_pos(self.object:get_pos()) + npos.y = npos.y - 1 + if minetest.get_node(npos).name ~= "air" then + npos.y = npos.y + 1 + if minetest.get_node(npos).name == "air" then + vzxv.drop(npos, ItemStack(self._stack)) + self.object:remove() + end + end + end, + get_staticdata = function(self) + local luaent = self + return luaent._stack + end +}) + +vzxv.register_gravity("vzxv_itemstacks:loose_itemstack")
\ No newline at end of file diff --git a/mods/vzxv_itemstacks/mod.conf b/mods/vzxv_itemstacks/mod.conf index 8d5e583..f9bb7b1 100644 --- a/mods/vzxv_itemstacks/mod.conf +++ b/mods/vzxv_itemstacks/mod.conf @@ -1,3 +1,3 @@ name=vzxv_itemstacks description = Vzxv -depends = vzxv
\ No newline at end of file +depends = vzxv, vzxv_gravity
\ No newline at end of file |