summaryrefslogtreecommitdiff
path: root/wielder.lua
diff options
context:
space:
mode:
authorSmallJoker <mk939@ymail.com>2018-07-05 14:13:59 +0200
committerSmallJoker <mk939@ymail.com>2018-07-13 23:03:09 +0200
commit8186f003beae42c9815b3c9c131e919f5b099035 (patch)
tree1ebcea31726a6113ee90991d1e47e5aab5ce4368 /wielder.lua
parentd19f4fc5187b5e0ec2c2f5101d0c98dda1d6b774 (diff)
downloadpipeworks-8186f003beae42c9815b3c9c131e919f5b099035.tar
pipeworks-8186f003beae42c9815b3c9c131e919f5b099035.tar.gz
pipeworks-8186f003beae42c9815b3c9c131e919f5b099035.tar.bz2
pipeworks-8186f003beae42c9815b3c9c131e919f5b099035.tar.xz
pipeworks-8186f003beae42c9815b3c9c131e919f5b099035.zip
Add pipeworks.create_fake_player
Fix setter issue, add dynamic/static option Add player height. Properties aren't adaptive yet
Diffstat (limited to 'wielder.lua')
-rw-r--r--wielder.lua85
1 files changed, 15 insertions, 70 deletions
diff --git a/wielder.lua b/wielder.lua
index 711e3ca..98f1ef0 100644
--- a/wielder.lua
+++ b/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