From b84c0409e8511e728e3bb614bcc0f57ac4556c77 Mon Sep 17 00:00:00 2001 From: Juraj Vajda Date: Wed, 26 Oct 2022 23:44:26 -0400 Subject: [PATCH] loading and shooting from quiver/arrow slots and new b3d character --- .luacheckrc | 3 +- api.lua | 148 +++++++++++++++++++++----------- init.lua | 27 ++++++ models/x_bows_character.b3d | Bin 0 -> 76500 bytes textures/x_bows_arrow_mesh.png | Bin 235 -> 236 bytes textures/x_bows_quiver_mesh.png | Bin 0 -> 333 bytes 6 files changed, 129 insertions(+), 49 deletions(-) create mode 100644 models/x_bows_character.b3d create mode 100644 textures/x_bows_quiver_mesh.png diff --git a/.luacheckrc b/.luacheckrc index c929771..bcca4f3 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -62,5 +62,6 @@ read_globals = { "armor", "default", "i3", - "unified_inventory" + "unified_inventory", + "player_api" } diff --git a/api.lua b/api.lua index ed63301..3a6e86c 100644 --- a/api.lua +++ b/api.lua @@ -444,7 +444,6 @@ end function XBows.load(self, itemstack, user, pointed_thing) local player_name = user:get_player_name() local inv = user:get_inventory()--[[@as InvRef]] - local inv_list = inv:get_list('main') local bow_name = itemstack:get_name() local bow_def = self.registered_bows[bow_name] ---@alias ItemStackArrows {["stack"]: ItemStack, ["idx"]: number|integer}[] @@ -476,18 +475,25 @@ function XBows.load(self, itemstack, user, pointed_thing) XBowsQuiver:remove_hud(user) ---find itemstack arrow in players inventory - for i, st in ipairs(inv_list) do - local st_name = st:get_name() + local arrow_stack = inv:get_stack('x_bows:arrow_inv', 1) + local is_allowed_ammunition = self:is_allowed_ammunition(bow_name, arrow_stack:get_name()) - if not st:is_empty() and self.registered_arrows[st_name] then - local is_allowed_ammunition = self:is_allowed_ammunition(bow_name, st_name) - - if self.registered_arrows[st_name] and is_allowed_ammunition then - table.insert(itemstack_arrows, {stack = st, idx = i}) - end - end + if self.registered_arrows[arrow_stack:get_name()] and is_allowed_ammunition then + table.insert(itemstack_arrows, {stack = arrow_stack, idx = 1}) end + -- for i, st in ipairs(inv_list) do + -- local st_name = st:get_name() + + -- if not st:is_empty() and self.registered_arrows[st_name] then + -- local is_allowed_ammunition = self:is_allowed_ammunition(bow_name, st_name) + + -- if self.registered_arrows[st_name] and is_allowed_ammunition then + -- table.insert(itemstack_arrows, {stack = st, idx = i}) + -- end + -- end + -- end + -- take 1st found arrow in the list itemstack_arrow = #itemstack_arrows > 0 and itemstack_arrows[1].stack or nil end @@ -515,7 +521,7 @@ function XBows.load(self, itemstack, user, pointed_thing) if not self:is_creative(v_user:get_player_name()) and v_itemstack_arrow_meta:get_int('is_arrow_from_quiver') ~= 1 then v_itemstack_arrow:take_item() - v_inv:set_stack('main', v_itemstack_arrows[1].idx, v_itemstack_arrow) + v_inv:set_stack('x_bows:arrow_inv', v_itemstack_arrows[1].idx, v_itemstack_arrow) end end end, user, bow_name, itemstack_arrow, inv, itemstack_arrows) @@ -1450,57 +1456,103 @@ function XBowsQuiver.get_itemstack_arrow_from_quiver(self, player) local quiver_id local quiver_name - ---find matching quiver item in players inventory with the open formspec name - if player_inv and player_inv:contains_item('main', 'x_bows:quiver') then - local inv_list = player_inv:get_list('main') + ---check quiver inventory slot + if player_inv and player_inv:contains_item('x_bows:quiver_inv', 'x_bows:quiver') then + local player_name = player:get_player_name() + local quiver_stack = player_inv:get_stack('x_bows:quiver_inv', 1) + local st_meta = quiver_stack:get_meta() + quiver_id = st_meta:get_string('quiver_id') - for i, st in ipairs(inv_list) do - if not st:is_empty() and st:get_name() == 'x_bows:quiver' then - local st_meta = st:get_meta() - local player_name = player:get_player_name() - quiver_id = st_meta:get_string('quiver_id') + local detached_inv = self:get_or_create_detached_inv( + quiver_id, + player_name, + st_meta:get_string('quiver_items') + ) - local detached_inv = self:get_or_create_detached_inv( - quiver_id, - player_name, - st_meta:get_string('quiver_items') - ) + if not detached_inv:is_empty('main') then + local detached_inv_list = detached_inv:get_list('main') - if not detached_inv:is_empty('main') then - local detached_inv_list = detached_inv:get_list('main') + ---find arrows inside quiver inventory + for j, qst in ipairs(detached_inv_list) do + ---save copy of inv list before we take the item + table.insert(prev_detached_inv_list, detached_inv:get_stack('main', j)) - ---find arrows inside quiver inventory - for j, qst in ipairs(detached_inv_list) do - ---save copy of inv list before we take the item - table.insert(prev_detached_inv_list, detached_inv:get_stack('main', j)) + if not qst:is_empty() and not found_arrow_stack then + local is_allowed_ammunition = self:is_allowed_ammunition(wielded_stack:get_name(), qst:get_name()) - if not qst:is_empty() and not found_arrow_stack then - local is_allowed_ammunition = self:is_allowed_ammunition(wielded_stack:get_name(), qst:get_name()) + if is_allowed_ammunition then + quiver_name = quiver_stack:get_name() + found_arrow_stack = qst:take_item() + found_arrow_stack_idx = j - if is_allowed_ammunition then - quiver_name = st:get_name() - found_arrow_stack = qst:take_item() - found_arrow_stack_idx = j - - if not self:is_creative(player_name) then - detached_inv:set_list('main', detached_inv_list) - self:save(detached_inv, player, true) - end - end + if not self:is_creative(player_name) then + detached_inv:set_list('main', detached_inv_list) + self:save(detached_inv, player, true) end end end end + end - if found_arrow_stack then - ---show HUD - quiver inventory - self:udate_or_create_hud(player, prev_detached_inv_list, found_arrow_stack_idx) - - break - end + if found_arrow_stack then + ---show HUD - quiver inventory + self:udate_or_create_hud(player, prev_detached_inv_list, found_arrow_stack_idx) end end + ---check arrows inventory slot + + ---find matching quiver item in players inventory with the open formspec name + -- if player_inv and player_inv:contains_item('main', 'x_bows:quiver') then + -- local inv_list = player_inv:get_list('main') + + -- for i, st in ipairs(inv_list) do + -- if not st:is_empty() and st:get_name() == 'x_bows:quiver' then + -- local st_meta = st:get_meta() + -- local player_name = player:get_player_name() + -- quiver_id = st_meta:get_string('quiver_id') + + -- local detached_inv = self:get_or_create_detached_inv( + -- quiver_id, + -- player_name, + -- st_meta:get_string('quiver_items') + -- ) + + -- if not detached_inv:is_empty('main') then + -- local detached_inv_list = detached_inv:get_list('main') + + -- ---find arrows inside quiver inventory + -- for j, qst in ipairs(detached_inv_list) do + -- ---save copy of inv list before we take the item + -- table.insert(prev_detached_inv_list, detached_inv:get_stack('main', j)) + + -- if not qst:is_empty() and not found_arrow_stack then + -- local is_allowed_ammunition = self:is_allowed_ammunition(wielded_stack:get_name(), qst:get_name()) + + -- if is_allowed_ammunition then + -- quiver_name = st:get_name() + -- found_arrow_stack = qst:take_item() + -- found_arrow_stack_idx = j + + -- if not self:is_creative(player_name) then + -- detached_inv:set_list('main', detached_inv_list) + -- self:save(detached_inv, player, true) + -- end + -- end + -- end + -- end + -- end + -- end + + -- if found_arrow_stack then + -- ---show HUD - quiver inventory + -- self:udate_or_create_hud(player, prev_detached_inv_list, found_arrow_stack_idx) + + -- break + -- end + -- end + -- end + return { found_arrow_stack = found_arrow_stack, quiver_id = quiver_id, diff --git a/init.lua b/init.lua index 70cca2d..e1d2dba 100644 --- a/init.lua +++ b/init.lua @@ -48,8 +48,35 @@ minetest.register_on_joinplayer(function(player) st_meta:get_string('quiver_items') ) end + + player_api.set_model(player, 'x_bows_character.b3d') + + player_api.set_textures(player, { + 'character.png', + 'x_bows_quiver_mesh.png' + }) end) +---player api +player_api.register_model('x_bows_character.b3d', { + animation_speed = 30, + textures = {"character.png"}, + animations = { + -- Standard animations. + stand = {x = 0, y = 79}, + lay = {x = 162, y = 166, eye_height = 0.3, override_local = true, + collisionbox = {-0.6, 0.0, -0.6, 0.6, 0.3, 0.6}}, + walk = {x = 168, y = 187}, + mine = {x = 189, y = 198}, + walk_mine = {x = 200, y = 219}, + sit = {x = 81, y = 160, eye_height = 0.8, override_local = true, + collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.0, 0.3}} + }, + collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, + stepheight = 0.6, + eye_height = 1.47 +}) + ---formspec callbacks minetest.register_allow_player_inventory_action(function(player, action, inventory, inventory_info) ---arrow inventory diff --git a/models/x_bows_character.b3d b/models/x_bows_character.b3d new file mode 100644 index 0000000000000000000000000000000000000000..ee7c9af2ffc5cb51214c5f37a51a58d60123a96a GIT binary patch literal 76500 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 Sr%YrSc!ke5>o3CR=KlcYYMz_` literal 0 HcmV?d00001 diff --git a/textures/x_bows_arrow_mesh.png b/textures/x_bows_arrow_mesh.png index 93f05e2faa79004b75e1ad45a0593ca0ca7d2f55..0447c9fa7c1e5ce27cd3b13901d94ab93802ece1 100644 GIT binary patch delta 200 zcmV;(05|{Z0qg;gEPt!(REG$00005&@I5XhQ9Upw9T#m>KK1qW<>cVL!}eeR z0004WQchC zmrLR%pX}WnJw5Z7qsLq;>-Zms{AXTEpbB7yE)V6Kg zZo`JPf+DQX_y2PB zfyqnF1eOFV2J3!V#b7P=+VFRXhh>b`N&MQQs73i>UJ@}}hs!Ap)d?0lG&W-JZa+b- z*Yj%VuZ8wsjG?CnvyEISwX+5@jhvA<(SVOFylqIdET$S5h-H&Gukv&QQxVuLwz7`a z^9$6+!ichp`)X+=D4$`h9_Xr3{E2#bvBnvy