Make wielditem mod functional again
This commit is contained in:
parent
c6efdc9f10
commit
c44f340cfe
@ -58,11 +58,16 @@ minetest.register_entity(
|
|||||||
local wielder = minetest.get_player_by_name(name)
|
local wielder = minetest.get_player_by_name(name)
|
||||||
if wielder and wielder:is_player() then
|
if wielder and wielder:is_player() then
|
||||||
self._wielder = wielder
|
self._wielder = wielder
|
||||||
|
else
|
||||||
|
minetest.log("info", "[headbars] Attempted to spawn orphan HP bar entity!")
|
||||||
|
self.object:remove()
|
||||||
|
return
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
on_step = function(self, dtime)
|
on_step = function(self, dtime)
|
||||||
local ent = self._wielder
|
local ent = self._wielder
|
||||||
|
|
||||||
|
-- Remove orphan HP bar
|
||||||
if ent == nil or (minetest.get_player_by_name(ent:get_player_name()) == nil) then
|
if ent == nil or (minetest.get_player_by_name(ent:get_player_name()) == nil) then
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
return
|
return
|
||||||
@ -74,6 +79,7 @@ minetest.register_entity(
|
|||||||
|
|
||||||
local hp = ent:get_hp()
|
local hp = ent:get_hp()
|
||||||
|
|
||||||
|
-- Update displayed hearts
|
||||||
self.object:set_properties({textures = {headbars.get_sprite("heart.png", "headbars_heart_bg.png", 20, hp)}})
|
self.object:set_properties({textures = {headbars.get_sprite("heart.png", "headbars_heart_bg.png", 20, hp)}})
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
@ -9,16 +9,10 @@ wielditem = {}
|
|||||||
local update_time = 1
|
local update_time = 1
|
||||||
local timer = 10 -- needs to be more than update_time
|
local timer = 10 -- needs to be more than update_time
|
||||||
|
|
||||||
minetest.register_craftitem(
|
|
||||||
"wielditem:null",
|
|
||||||
{
|
|
||||||
wield_image = "blank.png"
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_entity(
|
minetest.register_entity(
|
||||||
"wielditem:wielditem",
|
"wielditem:wielditem",
|
||||||
{
|
{
|
||||||
textures = {"default:broadsword"},
|
is_visible = false,
|
||||||
|
|
||||||
visual = "wielditem",
|
visual = "wielditem",
|
||||||
visual_size = {x = 0.17, y = 0.17},
|
visual_size = {x = 0.17, y = 0.17},
|
||||||
@ -29,10 +23,26 @@ minetest.register_entity(
|
|||||||
pointable = false,
|
pointable = false,
|
||||||
collide_with_objects = false,
|
collide_with_objects = false,
|
||||||
makes_footstep_sounds = false,
|
makes_footstep_sounds = false,
|
||||||
|
static_save = false,
|
||||||
|
|
||||||
|
_wielder = nil,
|
||||||
|
|
||||||
|
on_activate = function(self, staticdata)
|
||||||
|
local name = staticdata
|
||||||
|
local wielder = minetest.get_player_by_name(name)
|
||||||
|
if wielder and wielder:is_player() then
|
||||||
|
self._wielder = wielder
|
||||||
|
else
|
||||||
|
-- Remove orphan wielditem
|
||||||
|
minetest.log("info", "[wielditem] Attempted to spawn orphan wielditem entity!")
|
||||||
|
self.object:remove()
|
||||||
|
end
|
||||||
|
self.object:set_armor_groups({immortal=1})
|
||||||
|
end,
|
||||||
on_step = function(self, dtime)
|
on_step = function(self, dtime)
|
||||||
local player = self.wielder
|
local player = self._wielder
|
||||||
|
|
||||||
|
-- Remove orphan wielditem
|
||||||
if player == nil or (minetest.get_player_by_name(player:get_player_name()) == nil) then
|
if player == nil or (minetest.get_player_by_name(player:get_player_name()) == nil) then
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
return
|
return
|
||||||
@ -41,9 +51,9 @@ minetest.register_entity(
|
|||||||
local itemname = player:get_wielded_item():get_name()
|
local itemname = player:get_wielded_item():get_name()
|
||||||
|
|
||||||
if itemname ~= "" then
|
if itemname ~= "" then
|
||||||
self.object:set_properties({textures = {itemname}})
|
self.object:set_properties({textures = {itemname}, is_visible=true})
|
||||||
else
|
else
|
||||||
self.object:set_properties({textures = {"wielditem:null"}})
|
self.object:set_properties({is_visible=false})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
@ -52,19 +62,17 @@ local function attach_wielditem(player)
|
|||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
local pos = player:get_pos()
|
local pos = player:get_pos()
|
||||||
|
|
||||||
wielditem[name] = minetest.add_entity(pos, "wielditem:wielditem")
|
wielditem[name] = minetest.add_entity(pos, "wielditem:wielditem", name)
|
||||||
wielditem[name]:set_attach(player, "right_arm", {x = -1.5, y = 5.7, z = 2.5}, {x = 90, y = -45, z = 270})
|
wielditem[name]:set_attach(player, "right_arm", {x = -1.5, y = 5.7, z = 2.5}, {x = 90, y = -45, z = 270})
|
||||||
wielditem[name]:get_luaentity().wielder = player
|
wielditem[name]:get_luaentity()._wielder = player
|
||||||
end
|
end
|
||||||
|
|
||||||
local function detach_wielditem(player)
|
minetest.register_on_joinplayer(function(player)
|
||||||
local name = player:get_player_name()
|
minetest.after(1, function(player)
|
||||||
|
if player and player:is_player() then
|
||||||
wielditem[name]:remove()
|
attach_wielditem(player)
|
||||||
wielditem[name] = nil
|
end
|
||||||
end
|
end, player)
|
||||||
|
end)
|
||||||
minetest.register_on_joinplayer(attach_wielditem)
|
|
||||||
minetest.register_on_leaveplayer(detach_wielditem)
|
|
||||||
|
|
||||||
default.log("mod:wielditem", "loaded")
|
default.log("mod:wielditem", "loaded")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user