From 359601fc42dda11fa594e673559e9f384aa25cc1 Mon Sep 17 00:00:00 2001 From: stujones11 Date: Fri, 31 May 2019 21:12:31 +0100 Subject: [PATCH] Fix beds & wieldview armor dependency --- games/default/files/beds/api.lua | 23 +++++++++++++++++------ games/default/files/wieldview/depends.txt | 3 ++- games/default/files/wieldview/init.lua | 17 +++++++++++++++-- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/games/default/files/beds/api.lua b/games/default/files/beds/api.lua index 21ea6bf1d..3502d4adf 100644 --- a/games/default/files/beds/api.lua +++ b/games/default/files/beds/api.lua @@ -47,13 +47,24 @@ function beds.register_bed(name, def) return itemstack end - local node_def = minetest.registered_nodes[minetest.get_node(pos).name] - if not node_def or not node_def.buildable_to then - return itemstack - end - + local pos_front = vector.new(pos) local dir = placer and placer:get_look_dir() and - minetest.dir_to_facedir(placer:get_look_dir()) or 0 + minetest.dir_to_facedir(placer:get_look_dir()) % 4 or 0 + if dir == 1 then + pos_front.x = pos_front.x + 1 + elseif dir == 2 then + pos_front.z = pos_front.z - 1 + elseif dir == 3 then + pos_front.x = pos_front.x - 1 + else + pos_front.z = pos_front.z + 1 + end + for _, p in pairs({pos_front, pos}) do + local node_def = minetest.registered_nodes[minetest.get_node(p).name] + if not node_def or not node_def.buildable_to then + return itemstack + end + end minetest.set_node(pos, {name = name, param2 = dir}) diff --git a/games/default/files/wieldview/depends.txt b/games/default/files/wieldview/depends.txt index b6cac2191..19767971a 100644 --- a/games/default/files/wieldview/depends.txt +++ b/games/default/files/wieldview/depends.txt @@ -1 +1,2 @@ -3d_armor +player_api +3d_armor? diff --git a/games/default/files/wieldview/init.lua b/games/default/files/wieldview/init.lua index 6ae856244..853022e2f 100644 --- a/games/default/files/wieldview/init.lua +++ b/games/default/files/wieldview/init.lua @@ -1,3 +1,4 @@ +local has_armor = minetest.get_modpath("3d_armor") local time = 0 local update_time = tonumber(minetest.settings:get("wieldview_update_time")) if not update_time then @@ -17,6 +18,19 @@ wieldview = { dofile(minetest.get_modpath(minetest.get_current_modname()).."/transform.lua") +local function update_player_visuals(player, wield_image) + local name = player:get_player_name() + if has_armor then + armor.textures[name].wielditem = wield_image + armor:update_player_visuals(player) + return + end + local animation = player_api.get_animation(player) or {} + local textures = animation.textures or {} + local skin = textures[1] and textures[1] or "character.png" + player_api.set_textures(player, {skin, "blank.png", wield_image}) +end + wieldview.get_item_texture = function(self, item) local texture = "blank.png" if item ~= "" then @@ -57,8 +71,7 @@ wieldview.update_wielded_item = function(self, player) if self.wielded_item[name] == item then return end - armor.textures[name].wielditem = self:get_item_texture(item) - armor:update_player_visuals(player) + update_player_visuals(player, self:get_item_texture(item)) end self.wielded_item[name] = item end