From 29734c44e7a6e51d5cecf6036df7af2a2306bf99 Mon Sep 17 00:00:00 2001 From: cale Date: Wed, 23 Nov 2016 19:38:02 +0100 Subject: [PATCH] added anvil --- mods/default/textures/missing.png | Bin 0 -> 251 bytes mods/furnace/anvil.lua | 77 ++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 mods/default/textures/missing.png diff --git a/mods/default/textures/missing.png b/mods/default/textures/missing.png new file mode 100644 index 0000000000000000000000000000000000000000..f704c4bd1480046ffa092da54b48f3065d7052af GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sf18#94aTT{UKYV~fk|nMYCC>S|xv6<249-QVi6yBi3gww484B*6z5(HleBwYw zrJgR1As)xyPTk1Mpvc3_oYeEi-ka^Dg2+Ur|I8P~{nN!ybmjPQv7SBiWZAA5F-8^v zhXdseyPs>+%v*SMew2jp#7550qkbNt+vTE{|4DW&{Qa$K$)e+7fiGEY)GS@%jSb9R rsYh+!BWe`4@tAxs0~3eB19snIX7QUp^|hq}9l+q}>gTe~DWM4fcL7jh literal 0 HcmV?d00001 diff --git a/mods/furnace/anvil.lua b/mods/furnace/anvil.lua index c3cbe01..93f1000 100644 --- a/mods/furnace/anvil.lua +++ b/mods/furnace/anvil.lua @@ -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",