summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorheav-4 <heavpoot@gmail.com>2022-03-11 06:36:15 +0000
committerheav-4 <heavpoot@gmail.com>2022-03-11 06:36:15 +0000
commit9d4a64cd9c26b9eb94ef1b0e773ba9b9e67bee7e (patch)
treee0febf7cf10a428ebeaa7b2602ed00182401ab99
parent873396a85366b119234a1ec48cd3dcf130ca081e (diff)
lots of things, one of which was loose items
-rw-r--r--mods/vzxv/textures/vzxvplank.pngbin0 -> 1088 bytes
-rw-r--r--mods/vzxv_gravity/init.lua10
-rw-r--r--mods/vzxv_itemstacks/init.lua9
-rw-r--r--mods/vzxv_itemstacks/loose.lua33
-rw-r--r--mods/vzxv_itemstacks/mod.conf2
5 files changed, 46 insertions, 8 deletions
diff --git a/mods/vzxv/textures/vzxvplank.png b/mods/vzxv/textures/vzxvplank.png
new file mode 100644
index 0000000..b91f265
--- /dev/null
+++ b/mods/vzxv/textures/vzxvplank.png
Binary files 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