added anvil

This commit is contained in:
cale 2016-11-23 19:38:02 +01:00
parent a2b5624666
commit 29734c44e7
2 changed files with 77 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

View File

@ -4,6 +4,83 @@ function furnace.anvil.register_material(name, def)
furnace.anvil.materials[name] = def
end
-- formspec
local anvil_form = "size[8,9]"
local anvil_form = anvil_form..default.gui_colors
local anvil_form = anvil_form..default.gui_bg
local anvil_form = anvil_form.."list[current_name;main;1.5,1.5;1,1]"
local anvil_form = anvil_form..default.itemslot_bg(1.5, 1.5, 2, 2)
local anvil_form = anvil_form.."list[current_name;output;5,1;2,2;]"
local anvil_form = anvil_form..default.itemslot_bg(5, 1, 2, 2)
local anvil_form = anvil_form.."label[1.5,1;Input:]"
local anvil_form = anvil_form.."label[5,0.5;Output:]"
local anvil_form = anvil_form.."list[current_player;main;0,4.85;8,1;]"
local anvil_form = anvil_form..default.itemslot_bg(0,4.85,8,1)
local anvil_form = anvil_form.."list[current_player;main;0,6.08;8,3;8]"
local anvil_form = anvil_form..default.itemslot_bg(0,6.08,8,3)
local anvil_form = anvil_form.."listring[current_name;main]"
local anvil_form = anvil_form.."listring[current_name;output]"
local anvil_form = anvil_form.."listring[current_player;main]"
-- register block
minetest.register_node("furnace:anvil", {
description = "Anvil",
tiles = {"missing.png"},
groups = {cracky = 2},
paramtype2 = "facedir",
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",anvil_form)
meta:set_string("infotext", "Anvil");
local inv = meta:get_inventory()
inv:set_size("main", 1)
inv:set_size("output", 2*2)
end,
after_dig_node = default.drop_inv({"main"}),
on_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if listname == "main" then
local item = inv:get_list("main")[1]:get_name()
local items = {}
for name, def in pairs(furnace.anvil.materials) do
if item == def.items.rod or
item == def.items.plate or
item == (def.items.blade or "none") then
table.insert(items, def.items.rod)
table.insert(items, def.items.plate)
if def.items.blade then
table.insert(items, def.items.blade)
end
end
end
inv:set_list("output", items)
end
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if listname == "output" then
inv:set_list("main", {})
inv:set_list("output", {})
elseif listname == "main" then
inv:set_list("output", {})
end
end,
})
furnace.anvil.register_material("iron", {
items = {
plate = "furnace:iron_plate",