From eedbe55a0aabc5bb6a9198c21f0ed202fb86bb91 Mon Sep 17 00:00:00 2001 From: kaadmy Date: Tue, 20 Oct 2015 10:59:21 -0700 Subject: [PATCH] added 3rd person wielditems --- mods/headbars/init.lua | 1 - mods/wielditem/init.lua | 67 +++++++++++++++++++++++++++++++++++------ 2 files changed, 58 insertions(+), 10 deletions(-) diff --git a/mods/headbars/init.lua b/mods/headbars/init.lua index 0142a68..d4c2c1d 100644 --- a/mods/headbars/init.lua +++ b/mods/headbars/init.lua @@ -80,5 +80,4 @@ function headbars.attach_hpbar(to) end minetest.register_on_joinplayer(headbars.attach_hpbar) - default.log("mod:headbars", "loaded") \ No newline at end of file diff --git a/mods/wielditem/init.lua b/mods/wielditem/init.lua index 4234f2f..ccbac07 100644 --- a/mods/wielditem/init.lua +++ b/mods/wielditem/init.lua @@ -1,21 +1,70 @@ + -- -- Wielditem mod -- By Kaadmy, for Pixture -- +wielditem = {} + local update_time = 1 -local timer = 10 +local timer = 10 -- needs to be more than update_time -local function step(dtime) - timer = timer + dtime - if timer > update_time then - for _, player in pairs(minetest.get_connected_players()) do +minetest.register_craftitem( + "wielditem:null", + { + wield_image = "ui_null.png" + }) - end - timer = 0 - end +minetest.register_entity( + "wielditem:wielditem", + { + textures = {"default:broadsword"}, + + visual = "wielditem", + visual_size = {x = 0.17, y = 0.17}, + + collisionbox = {0, 0, 0, 0, 0, 0}, + hp_max = 1, + + physical = false, + collide_with_objects = false, + makes_footstep_sounds = false, + + on_step = function(self, dtime) + local player = self.wielder + + if player == nil or (minetest.get_player_by_name(player:get_player_name()) == nil) then + self.object:remove() + return + end + + local itemname = player:get_wielded_item():get_name() + + if itemname ~= "" then + self.object:set_properties({textures = {itemname}}) + else + self.object:set_properties({textures = {"wielditem:null"}}) + end + end + }) + +local function attach_wielditem(player) + local name = player:get_player_name() + local pos = player:getpos() + + wielditem[name] = minetest.add_entity(pos, "wielditem:wielditem") + wielditem[name]:set_attach(player, "right_arm", {x = -1.5, y = 5.7, z = 2.5}, {x = 80, y = -40, z = 90}) + wielditem[name]:get_luaentity().wielder = player end -minetest.register_globalstep(step) +local function detach_wielditem(player) + local name = player:get_player_name() + + wielditem[name]:remove() +-- wielditem[name] = nil +end + +minetest.register_on_joinplayer(attach_wielditem) +minetest.register_on_leaveplayer(detach_wielditem) default.log("mod:wielditem", "loaded") \ No newline at end of file