From 9d4a64cd9c26b9eb94ef1b0e773ba9b9e67bee7e Mon Sep 17 00:00:00 2001 From: heav-4 Date: Fri, 11 Mar 2022 06:36:15 +0000 Subject: lots of things, one of which was loose items --- mods/vzxv/textures/vzxvplank.png | Bin 0 -> 1088 bytes mods/vzxv_gravity/init.lua | 10 +++++----- mods/vzxv_itemstacks/init.lua | 9 +++++++-- mods/vzxv_itemstacks/loose.lua | 33 +++++++++++++++++++++++++++++++++ mods/vzxv_itemstacks/mod.conf | 2 +- 5 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 mods/vzxv/textures/vzxvplank.png create mode 100644 mods/vzxv_itemstacks/loose.lua diff --git a/mods/vzxv/textures/vzxvplank.png b/mods/vzxv/textures/vzxvplank.png new file mode 100644 index 0000000..b91f265 Binary files /dev/null and b/mods/vzxv/textures/vzxvplank.png differ 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 -- cgit v1.2.3