ExchangeClone/pesa.lua

85 lines
3.2 KiB
Lua

--Personal Energy Storage Accessor (PESA)
local formspec
if not exchangeclone.mcl then
formspec = {
"size[8,9]",
"label[0.5,0.5;Personal Energy Storage Accessor (PESA)]",
"list[current_player;exchangeclone_pesa;4,2;1,1;]",
"list[current_player;main;0,5;8,4;]",
"listring[current_player;main]",
"listring[current_player;exchangeclone_pesa]"
}
else
formspec = {
"size[9,10]",
"label[0.5,0.5;Personal Energy Storage Accessor (PESA)\nWARNING: THIS ITEM IS DEPRECATED AND WILL BE REMOVED SOON.\nREMOVE ANY ORB INSIDE IT.]",
"list[current_player;exchangeclone_pesa;4,2;1,1;]",
mcl_formspec.get_itemslot_bg(4,2,1,1),
"list[current_player;main;0,5;9,3;9]",
mcl_formspec.get_itemslot_bg(0,5,9,3),
"list[current_player;main;0,8.5;9,1;]",
mcl_formspec.get_itemslot_bg(0,8.5,9,1),
"listring[current_player;main]",
"listring[current_player;exchangeclone_pesa]"
}
end
formspec = table.concat(formspec, "")
local function on_rightclick(itemstack, player, pointed_thing)
local click_test = exchangeclone.check_on_rightclick(itemstack, player, pointed_thing)
if click_test ~= false then
return click_test
end
minetest.show_formspec(player:get_player_name(), "exchangeclone_pesa", formspec)
end
minetest.register_tool("exchangeclone:pesa", {
description = "Personal Energy Storage Accessor (PESA)\nWARNING: DEPRECATED/USELESS, REMOVE ANY ORB INSIDE",
wield_image = "exchangeclone_pesa.png",
inventory_image = "exchangeclone_pesa.png",
on_secondary_use = on_rightclick,
on_place = on_rightclick,
groups = {disable_repair = 1, fire_immune = 1}
})
minetest.register_on_joinplayer(function(player)
player:get_inventory():set_size("exchangeclone_pesa", 1)
end)
minetest.register_allow_player_inventory_action(function(player, action, inv, info)
if inv:get_location().type == "player" and (
action == "move" and (info.from_list == "exchangeclone_pesa" or info.to_list == "exchangeclone_pesa")
or action == "put" and info.listname == "exchangeclone_pesa"
or action == "take" and info.listname == "exchangeclone_pesa"
) then
if player:get_wielded_item():get_name() == "exchangeclone:pesa" then
local stack
if info.listname or (info.from_list and info.from_list == "exchangeclone_pesa") then
stack = player:get_inventory():get_stack("exchangeclone_pesa", info.from_index)
else
stack = player:get_inventory():get_stack("main", info.from_index)
end
if (action == "move" and stack:get_name() == "exchangeclone:exchange_orb") or action == "take" then
return stack:get_count()
else
return 0
end
end
end
end)
local chest_itemstring = "default:chest"
if exchangeclone.mcl then
chest_itemstring = "mcl_chests:chest"
end
minetest.register_craft({
output = "exchangeclone:pesa",
type = "shapeless",
recipe = {
"exchangeclone:philosophers_stone",
chest_itemstring
},
replacements = {{"exchangeclone:philosophers_stone", "exchangeclone:philosophers_stone"}}
})