From 2fa93b219eadfcdcf8f1d472aad046fc62d5b99d Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg Date: Fri, 3 Aug 2018 09:31:05 -0400 Subject: update castles, cottages, digistuff, gloopblocks, locks, maptools, mesecons, pipeworks, technic, unified inventory, unified dyes, and xban2 --- pipeworks/wielder.lua | 91 +++++++++++---------------------------------------- 1 file changed, 19 insertions(+), 72 deletions(-) (limited to 'pipeworks/wielder.lua') diff --git a/pipeworks/wielder.lua b/pipeworks/wielder.lua index eb7931f..98f1ef0 100644 --- a/pipeworks/wielder.lua +++ b/pipeworks/wielder.lua @@ -53,11 +53,10 @@ local function wielder_on(data, wielder_pos, wielder_node) local wielder_meta = minetest.get_meta(wielder_pos) local inv = wielder_meta:get_inventory() local wield_inv_name = data.wield_inv_name - local wieldindex, wieldstack + local wieldindex for i, stack in ipairs(inv:get_list(wield_inv_name)) do if not stack:is_empty() then wieldindex = i - wieldstack = stack break end end @@ -66,7 +65,6 @@ local function wielder_on(data, wielder_pos, wielder_node) wield_inv_name = data.ghost_inv_name inv:set_stack(wield_inv_name, 1, ItemStack(data.ghost_tool)) wieldindex = 1 - wieldstack = inv:get_stack(wield_inv_name, 1) end local dir = minetest.facedir_to_dir(wielder_node.param2) -- under/above is currently intentionally left switched @@ -98,73 +96,20 @@ local function wielder_on(data, wielder_pos, wielder_node) yaw = 0 pitch = math.pi/2 end - local virtplayer = { - get_inventory_formspec = delay(wielder_meta:get_string("formspec")), - get_look_dir = delay(vector.multiply(dir, -1)), - get_look_pitch = delay(pitch), - get_look_yaw = delay(yaw), - get_look_horizontal = delay(yaw), - get_look_vertical = delay(pitch), - get_player_control = delay({ jump=false, right=false, left=false, LMB=false, RMB=false, sneak=data.sneak, aux1=false, down=false, up=false }), - get_player_control_bits = delay(data.sneak and 64 or 0), - get_player_name = delay(data.masquerade_as_owner and wielder_meta:get_string("owner") or ":pipeworks:"..minetest.pos_to_string(wielder_pos)), - is_player = delay(true), - is_fake_player = true, - set_inventory_formspec = delay(), - getpos = delay(vector.subtract(wielder_pos, assumed_eye_pos)), - get_hp = delay(20), - get_inventory = delay(inv), - get_wielded_item = delay(wieldstack), - get_wield_index = delay(wieldindex), - get_wield_list = delay(wield_inv_name), - moveto = delay(), - punch = delay(), - remove = delay(), - right_click = delay(), - setpos = delay(), - set_hp = delay(), - set_properties = delay(), - set_wielded_item = function(self, item) - wieldstack = item - inv:set_stack(wield_inv_name, wieldindex, item) - end, - set_animation = delay(), - set_attach = delay(), - set_detach = delay(), - set_bone_position = delay(), - hud_change = delay(), - get_breath = delay(11), - -- TODO "implement" all these - -- set_armor_groups - -- get_armor_groups - -- get_animation - -- get_attach - -- get_bone_position - -- get_properties - -- get_player_velocity - -- set_look_pitch - -- set_look_yaw - -- set_breath - -- set_physics_override - -- get_physics_override - -- hud_add - -- hud_remove - -- hud_get - -- hud_set_flags - -- hud_get_flags - -- hud_set_hotbar_itemcount - -- hud_get_hotbar_itemcount - -- hud_set_hotbar_image - -- hud_get_hotbar_image - -- hud_set_hotbar_selected_image - -- hud_get_hotbar_selected_image - -- hud_replace_builtin - -- set_sky - -- get_sky - -- override_day_night_ratio - -- get_day_night_ratio - -- set_local_animation - } + local virtplayer = pipeworks.create_fake_player({ + name = data.masquerade_as_owner and wielder_meta:get_string("owner") + or ":pipeworks:" .. minetest.pos_to_string(wielder_pos), + formspec = wielder_meta:get_string("formspec"), + look_dir = vector.multiply(dir, -1), + look_pitch = pitch, + look_yaw = yaw, + sneak = data.sneak, + position = vector.subtract(wielder_pos, assumed_eye_pos), + inventory = inv, + wield_index = wieldindex, + wield_list = wield_inv_name + }) + local pointed_thing = { type="node", under=under_pos, above=above_pos } data.act(virtplayer, pointed_thing) if data.eject_drops then @@ -258,7 +203,7 @@ local function register_wielder(data) end, after_place_node = function (pos, placer) pipeworks.scan_for_tube_objects(pos) - local placer_pos = placer:getpos() + local placer_pos = placer:get_pos() if placer_pos and placer:is_player() then placer_pos = vector.add(placer_pos, assumed_eye_pos) end if placer_pos then local dir = vector.subtract(pos, placer_pos) @@ -495,7 +440,9 @@ if pipeworks.enable_dispenser then sneak = true, act = function(virtplayer, pointed_thing) local wieldstack = virtplayer:get_wielded_item() - virtplayer:set_wielded_item((minetest.registered_items[wieldstack:get_name()] or {on_drop=minetest.item_drop}).on_drop(wieldstack, virtplayer, virtplayer:getpos()) or wieldstack) + virtplayer:set_wielded_item((minetest.registered_items[wieldstack:get_name()] or + {on_drop=minetest.item_drop}).on_drop(wieldstack, virtplayer, virtplayer:get_pos()) or + wieldstack) end, eject_drops = false, }) -- cgit v1.2.3