jewel workbench added and should work
This commit is contained in:
parent
9686582840
commit
3e9d0e9b65
|
@ -15,6 +15,7 @@ function jewels.register_jewel(toolname, new_toolname, def)
|
||||||
-- registers a new tool with different stats
|
-- registers a new tool with different stats
|
||||||
|
|
||||||
local data = {
|
local data = {
|
||||||
|
name = new_toolname, -- the new name of the tool
|
||||||
overlay = def.overlay or "jewels_jeweled_handle.png", -- overlay image
|
overlay = def.overlay or "jewels_jeweled_handle.png", -- overlay image
|
||||||
stats = {
|
stats = {
|
||||||
digspeed = def.stats.digspeed, -- negative digs faster
|
digspeed = def.stats.digspeed, -- negative digs faster
|
||||||
|
@ -26,9 +27,12 @@ function jewels.register_jewel(toolname, new_toolname, def)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
jewels.registered_jewels[toolname] = data
|
if not jewels.registered_jewels[toolname] then
|
||||||
|
jewels.registered_jewels[toolname] = {}
|
||||||
|
end
|
||||||
|
table.insert(jewels.registered_jewels[toolname], data)
|
||||||
|
|
||||||
local tooldef = minetest.registered_tools[toolname]
|
local tooldef = minetest.deserialize(minetest.serialize(minetest.registered_tools[toolname]))
|
||||||
|
|
||||||
local new_tool_invimage = ""
|
local new_tool_invimage = ""
|
||||||
if tooldef.inventory_image then
|
if tooldef.inventory_image then
|
||||||
|
@ -95,6 +99,24 @@ function jewels.register_jewel(toolname, new_toolname, def)
|
||||||
minetest.register_tool(new_toolname, new_tooldef)
|
minetest.register_tool(new_toolname, new_tooldef)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function jewels.can_jewel(toolname)
|
||||||
|
for name, _ in pairs(jewels.registered_jewels) do
|
||||||
|
if name == toolname then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function jewels.get_jeweled(toolname)
|
||||||
|
for name, jables in pairs(jewels.registered_jewels) do
|
||||||
|
if name == toolname then
|
||||||
|
return util.choice_element(jables)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
minetest.register_craftitem(
|
minetest.register_craftitem(
|
||||||
"jewels:jewel",
|
"jewels:jewel",
|
||||||
{
|
{
|
||||||
|
@ -124,8 +146,37 @@ minetest.register_node(
|
||||||
can_dig = function(pos, player)
|
can_dig = function(pos, player)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
|
|
||||||
return inv:is_empty("main")
|
return inv:is_empty("main")
|
||||||
end,
|
end,
|
||||||
|
on_punch = function(pos, node, player, pointed_thing)
|
||||||
|
local itemstack = player:get_wielded_item()
|
||||||
|
|
||||||
|
if itemstack:get_name() == "jewels:jewel" then
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
|
||||||
|
local itemname = inv:get_stack("main", 1):get_name()
|
||||||
|
|
||||||
|
if jewels.can_jewel(itemname) then
|
||||||
|
inv:set_stack("main", 1, ItemStack(jewels.get_jeweled(itemname)))
|
||||||
|
|
||||||
|
itemstack:take_item()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
player:set_wielded_item(itemstack)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft(
|
||||||
|
{
|
||||||
|
output = "jewels:bench",
|
||||||
|
recipe = {
|
||||||
|
{"group:planks", "jewels:jewel", "group:planks"},
|
||||||
|
{"default:ingot_carbonsteel", "group:planks", "default:ingot_carbonsteel"},
|
||||||
|
{"group:planks", "group:planks", "group:planks"}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
local form_bench = default.ui.get_page("core_2part")
|
local form_bench = default.ui.get_page("core_2part")
|
||||||
|
@ -133,7 +184,8 @@ form_bench = form_bench .. "list[current_name;main;2.25,1.75;1,1;]"
|
||||||
form_bench = form_bench .. "listring[current_name;main]"
|
form_bench = form_bench .. "listring[current_name;main]"
|
||||||
form_bench = form_bench .. default.ui.get_itemslot_bg(2.25, 1.75, 1, 1)
|
form_bench = form_bench .. default.ui.get_itemslot_bg(2.25, 1.75, 1, 1)
|
||||||
|
|
||||||
form_bench = form_bench .. "label[3.25,2;Place unjeweled tool here, then rightclick on bench]"
|
form_bench = form_bench .. "label[3.25,1.75;1. Place unjeweled tool here]"
|
||||||
|
form_bench = form_bench .. "label[3.25,2.25;2. Hold a jewel and punch the bench]"
|
||||||
|
|
||||||
form_bench = form_bench .. "list[current_player;main;0.25,4.75;8,4;]"
|
form_bench = form_bench .. "list[current_player;main;0.25,4.75;8,4;]"
|
||||||
form_bench = form_bench .. "listring[current_player;main]"
|
form_bench = form_bench .. "listring[current_player;main]"
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 388 B After Width: | Height: | Size: 388 B |
|
@ -141,7 +141,11 @@ function util.choice(tab, pr)
|
||||||
|
|
||||||
if #choices <= 0 then return end
|
if #choices <= 0 then return end
|
||||||
|
|
||||||
|
if pr then
|
||||||
return choices[pr:next(1, #choices)]
|
return choices[pr:next(1, #choices)]
|
||||||
|
else
|
||||||
|
return choices[math.random(1, #choices)]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function util.choice_element(tab, pr)
|
function util.choice_element(tab, pr)
|
||||||
|
@ -155,6 +159,10 @@ function util.choice_element(tab, pr)
|
||||||
|
|
||||||
if #choices <= 0 then return end
|
if #choices <= 0 then return end
|
||||||
|
|
||||||
|
if pr then
|
||||||
return choices[pr:next(1, #choices)]
|
return choices[pr:next(1, #choices)]
|
||||||
|
else
|
||||||
|
return choices[math.random(1, #choices)]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue