forked from minetest-mods/unified_inventory
Add buttons to give oneself items (with 'give' privilege)
This commit is contained in:
parent
d5d97e7dca
commit
75f719507e
64
register.lua
64
register.lua
|
@ -194,6 +194,7 @@ local other_dir = {
|
||||||
unified_inventory.register_page("craftguide", {
|
unified_inventory.register_page("craftguide", {
|
||||||
get_formspec = function(player)
|
get_formspec = function(player)
|
||||||
local player_name = player:get_player_name()
|
local player_name = player:get_player_name()
|
||||||
|
local player_privs = minetest.get_player_privs(player_name)
|
||||||
local formspec = ""
|
local formspec = ""
|
||||||
formspec = formspec.."background[0,4.5;8,4;ui_main_inventory.png]"
|
formspec = formspec.."background[0,4.5;8,4;ui_main_inventory.png]"
|
||||||
formspec = formspec.."label[0,0;" .. S("Crafting Guide") .. "]"
|
formspec = formspec.."label[0,0;" .. S("Crafting Guide") .. "]"
|
||||||
|
@ -202,6 +203,9 @@ unified_inventory.register_page("craftguide", {
|
||||||
if not item_name then return {formspec=formspec} end
|
if not item_name then return {formspec=formspec} end
|
||||||
|
|
||||||
local dir = unified_inventory.current_craft_direction[player_name]
|
local dir = unified_inventory.current_craft_direction[player_name]
|
||||||
|
local rdir
|
||||||
|
if dir == "recipe" then rdir = "usage" end
|
||||||
|
if dir == "usage" then rdir = "recipe" end
|
||||||
local crafts = unified_inventory.crafts_for[dir][item_name]
|
local crafts = unified_inventory.crafts_for[dir][item_name]
|
||||||
local alternate = unified_inventory.alternate[player_name]
|
local alternate = unified_inventory.alternate[player_name]
|
||||||
local alternates, craft
|
local alternates, craft
|
||||||
|
@ -212,6 +216,7 @@ unified_inventory.register_page("craftguide", {
|
||||||
|
|
||||||
formspec = formspec.."background[0,1;8,3;ui_craftguide_form.png]"
|
formspec = formspec.."background[0,1;8,3;ui_craftguide_form.png]"
|
||||||
formspec = formspec.."textarea[0.3,0.6;10,1;;"..minetest.formspec_escape(role_text[dir]..": "..item_name)..";]"
|
formspec = formspec.."textarea[0.3,0.6;10,1;;"..minetest.formspec_escape(role_text[dir]..": "..item_name)..";]"
|
||||||
|
formspec = formspec..stack_image_button(0, 1, 1.1, 1.1, "item_button_" .. rdir .. "_", ItemStack(item_name))
|
||||||
|
|
||||||
if not craft then
|
if not craft then
|
||||||
formspec = formspec.."label[6,3.35;"..minetest.formspec_escape(no_recipe_text[dir]).."]"
|
formspec = formspec.."label[6,3.35;"..minetest.formspec_escape(no_recipe_text[dir]).."]"
|
||||||
|
@ -219,6 +224,12 @@ unified_inventory.register_page("craftguide", {
|
||||||
local item_pos = dir == "recipe" and 6 or 4
|
local item_pos = dir == "recipe" and 6 or 4
|
||||||
formspec = formspec.."image["..no_pos..",1;1.1,1.1;ui_no.png]"
|
formspec = formspec.."image["..no_pos..",1;1.1,1.1;ui_no.png]"
|
||||||
formspec = formspec..stack_image_button(item_pos, 1, 1.1, 1.1, "item_button_"..other_dir[dir].."_", ItemStack(item_name))
|
formspec = formspec..stack_image_button(item_pos, 1, 1.1, 1.1, "item_button_"..other_dir[dir].."_", ItemStack(item_name))
|
||||||
|
if player_privs.give == true then
|
||||||
|
formspec = formspec.."label[0,3.10;" .. S("Give me:") .. "]"
|
||||||
|
.."button[0, 3.70;0.6,0.5;craftguide_giveme_1;1]"
|
||||||
|
.."button[0.6,3.70;0.7,0.5;craftguide_giveme_10;10]"
|
||||||
|
.."button[1.3,3.70;0.8,0.5;craftguide_giveme_99;99]"
|
||||||
|
end
|
||||||
return {formspec = formspec}
|
return {formspec = formspec}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -256,23 +267,50 @@ unified_inventory.register_page("craftguide", {
|
||||||
end
|
end
|
||||||
|
|
||||||
if craft_type.uses_crafting_grid then
|
if craft_type.uses_crafting_grid then
|
||||||
formspec = formspec.."label[6,1.95;" .. S("Copy to craft grid:") .. "]"
|
formspec = formspec.."label[0,1.90;" .. S("To craft grid:") .. "]"
|
||||||
.."button[6,2.5;0.6,0.5;craftguide_craft_1;1]"
|
.."button[0, 2.5;0.6,0.5;craftguide_craft_1;1]"
|
||||||
.."button[6.6,2.5;0.6,0.5;craftguide_craft_10;10]"
|
.."button[0.6,2.5;0.7,0.5;craftguide_craft_10;10]"
|
||||||
.."button[7.2,2.5;0.6,0.5;craftguide_craft_max;" .. S("All") .. "]"
|
.."button[1.3,2.5;0.8,0.5;craftguide_craft_max;" .. S("All") .. "]"
|
||||||
|
end
|
||||||
|
if player_privs.give then
|
||||||
|
formspec = formspec.."label[0,3.10;" .. S("Give me:") .. "]"
|
||||||
|
.."button[0, 3.70;0.6,0.5;craftguide_giveme_1;1]"
|
||||||
|
.."button[0.6,3.70;0.7,0.5;craftguide_giveme_10;10]"
|
||||||
|
.."button[1.3,3.70;0.8,0.5;craftguide_giveme_99;99]"
|
||||||
end
|
end
|
||||||
|
|
||||||
if alternates and alternates > 1 then
|
if alternates and alternates > 1 then
|
||||||
formspec = formspec.."label[0,2.6;"..recipe_text[dir].." "
|
formspec = formspec.."label[6,1.95;"..recipe_text[dir].." "
|
||||||
..tostring(alternate).." of "
|
..tostring(alternate).." of "
|
||||||
..tostring(alternates).."]"
|
..tostring(alternates).."]"
|
||||||
.."button[0,3.15;2,1;alternate;" .. S("Alternate") .. "]"
|
.."button[6,2.3;2,1;alternate;" .. S("Alternate") .. "]"
|
||||||
end
|
end
|
||||||
return {formspec = formspec}
|
return {formspec = formspec}
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
local function craftguide_giveme(player, formname, fields)
|
||||||
|
local amount
|
||||||
|
for k, v in pairs(fields) do
|
||||||
|
amount = k:match("craftguide_giveme_(.*)")
|
||||||
|
if amount then break end
|
||||||
|
end
|
||||||
|
if not amount then return end
|
||||||
|
|
||||||
|
amount = tonumber(amount)
|
||||||
|
if amount == 0 then return end
|
||||||
|
|
||||||
|
local player_name = player:get_player_name()
|
||||||
|
|
||||||
|
local output = unified_inventory.current_item[player_name]
|
||||||
|
if (not output) or (output == "") then return end
|
||||||
|
|
||||||
|
local player_inv = player:get_inventory()
|
||||||
|
|
||||||
|
player_inv:add_item("main", {name = output, count = amount})
|
||||||
|
end
|
||||||
|
|
||||||
|
local function craftguide_craft(player, formname, fields)
|
||||||
local amount
|
local amount
|
||||||
for k, v in pairs(fields) do
|
for k, v in pairs(fields) do
|
||||||
amount = k:match("craftguide_craft_(.*)")
|
amount = k:match("craftguide_craft_(.*)")
|
||||||
|
@ -339,4 +377,16 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
player_inv:set_list("craft", craft_list)
|
player_inv:set_list("craft", craft_list)
|
||||||
|
|
||||||
unified_inventory.set_inventory_formspec(player, "craft")
|
unified_inventory.set_inventory_formspec(player, "craft")
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
|
for k, v in pairs(fields) do
|
||||||
|
if k:match("craftguide_craft_") then
|
||||||
|
craftguide_craft(player, formname, fields)
|
||||||
|
break
|
||||||
|
elseif k:match("craftguide_giveme_") then
|
||||||
|
craftguide_giveme(player, formname, fields)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user