From d1b81c55d2c4deeefafd2ea500e9d56c75bb0850 Mon Sep 17 00:00:00 2001 From: Evert Prants Date: Mon, 18 Jun 2018 14:43:40 +0300 Subject: [PATCH] Add gears --- elepower_dynamics/crafting.lua | 42 +++++++++ elepower_dynamics/dusts.lua | 19 +++- elepower_dynamics/gears.lua | 87 ++++++++++++++++++ elepower_dynamics/init.lua | 1 + elepower_dynamics/nodes.lua | 8 ++ elepower_dynamics/textures/elepower_gear.png | Bin 0 -> 348 bytes .../textures/elepower_particle_board.png | Bin 0 -> 411 bytes elepower_machines/craft.lua | 9 +- elepower_machines/register.lua | 19 +--- elepower_papi/helpers.lua | 15 +++ 10 files changed, 179 insertions(+), 21 deletions(-) create mode 100644 elepower_dynamics/gears.lua create mode 100644 elepower_dynamics/textures/elepower_gear.png create mode 100644 elepower_dynamics/textures/elepower_particle_board.png diff --git a/elepower_dynamics/crafting.lua b/elepower_dynamics/crafting.lua index cd7d78d..c0f4385 100644 --- a/elepower_dynamics/crafting.lua +++ b/elepower_dynamics/crafting.lua @@ -93,6 +93,17 @@ minetest.register_craft({ -- Items -- ----------- +minetest.register_craft({ + type = "shapeless", + output = "elepower_dynamics:particle_board", + recipe = { + "elepower_dynamics:wood_dust", + "elepower_dynamics:wood_dust", + "elepower_dynamics:wood_dust", + "elepower_dynamics:wood_dust", + } +}) + -------------- -- Smelting -- -------------- @@ -108,3 +119,34 @@ minetest.register_craft({ output = "elepower_dynamics:lead_lump", recipe = "elepower_dynamics:lead_ingot" }) + +----------- +-- Gears -- +----------- + +local keywords = { "_ingot", "" } +for mat, data in pairs(elepd.registered_gears) do + for _,keyword in ipairs(keywords) do + local found = ele.helpers.scan_item_list(mat .. keyword) + local immebreak = false + + if mat == "wood" then + found = "group:stick" + immebreak = true + end + + if found then + -- Gear recipe for material + minetest.register_craft({ + recipe = { + { "", found, "" }, + { found, "", found}, + { "", found, "" } + }, + output = data.item + }) + + if immebreak then break end + end + end +end diff --git a/elepower_dynamics/dusts.lua b/elepower_dynamics/dusts.lua index dc2f2a9..991de42 100644 --- a/elepower_dynamics/dusts.lua +++ b/elepower_dynamics/dusts.lua @@ -12,10 +12,19 @@ function elepd.register_dust(mat, data) data.item = itemname elepd.registered_dusts[mat] = data + -- Make descriptions overridable + local description = "Pulverized " .. data.description + if data.force_description then + description = data.description + end + minetest.register_craftitem(itemname, { - description = "Pulverized " .. data.description, + description = description, inventory_image = "elepower_dust.png^[multiply:" .. data.color, - groups = {["dust_" .. mat] = 1, dust = 1} + groups = { + ["dust_" .. mat] = 1, + dust = 1 + } }) end @@ -80,3 +89,9 @@ elepd.register_dust("energium", { description = "Energium", color = "#ff1111" }) + +elepd.register_dust("wood", { + description = "Wood Shavings", + force_description = true, + color = "#847454" +}) diff --git a/elepower_dynamics/gears.lua b/elepower_dynamics/gears.lua new file mode 100644 index 0000000..b8acdb9 --- /dev/null +++ b/elepower_dynamics/gears.lua @@ -0,0 +1,87 @@ + +---------------------- +-- Ground materials -- +---------------------- + +elepd.registered_gears = {} + +function elepd.register_gear(mat, data) + local mod = minetest.get_current_modname() + local itemname = mod..":"..mat.."_gear" + + data.item = itemname + elepd.registered_gears[mat] = data + + local description = data.description .. " Gear" + + minetest.register_craftitem(itemname, { + description = description, + inventory_image = "elepower_gear.png^[multiply:" .. data.color, + groups = { + ["gear_" .. mat] = 1, + dust = 1 + } + }) +end + +-- Default dust list + +elepd.register_gear("bronze", { + description = "Bronze", + color = "#fa7b26" +}) + +elepd.register_gear("copper", { + description = "Copper", + color = "#fcb15f" +}) + +elepd.register_gear("gold", { + description = "Gold", + color = "#ffff47" +}) + +elepd.register_gear("steel", { + description = "Steel", + color = "#ffffff" +}) + +elepd.register_gear("tin", { + description = "Tin", + color = "#c1c1c1" +}) + +elepd.register_gear("mithril", { + description = "Mithril", + color = "#8686df" +}) + +elepd.register_gear("silver", { + description = "Silver", + color = "#d7e2e8" +}) + +elepd.register_gear("lead", { + description = "Lead", + color = "#aeaedc" +}) + +elepd.register_gear("iron", { + description = "Iron", + color = "#dddddd" +}) + +elepd.register_gear("diamond", { + description = "Diamond", + color = "#02c1e8" +}) + +elepd.register_gear("energium", { + description = "Energium", + color = "#ff1111" +}) + +elepd.register_gear("wood", { + description = "Wood", + color = "#847454" +}) diff --git a/elepower_dynamics/init.lua b/elepower_dynamics/init.lua index 61ba282..318ce0c 100644 --- a/elepower_dynamics/init.lua +++ b/elepower_dynamics/init.lua @@ -11,5 +11,6 @@ dofile(modpath.."/craftitems.lua") dofile(modpath.."/tools.lua") dofile(modpath.."/nodes.lua") dofile(modpath.."/dusts.lua") +dofile(modpath.."/gears.lua") dofile(modpath.."/worldgen.lua") dofile(modpath.."/crafting.lua") diff --git a/elepower_dynamics/nodes.lua b/elepower_dynamics/nodes.lua index ff6118b..83a8048 100644 --- a/elepower_dynamics/nodes.lua +++ b/elepower_dynamics/nodes.lua @@ -14,3 +14,11 @@ minetest.register_node("elepower_dynamics:stone_with_lead", { drop = 'elepower_dynamics:lead_lump', sounds = default.node_sound_stone_defaults(), }) + +minetest.register_node("elepower_dynamics:particle_board", { + description = "Particle Board", + tiles = {"elepower_particle_board.png"}, + groups = {choppy = 2, wood = 1}, + drop = 'elepower_dynamics:wood_dust 4', + sounds = default.node_sound_wood_defaults(), +}) diff --git a/elepower_dynamics/textures/elepower_gear.png b/elepower_dynamics/textures/elepower_gear.png new file mode 100644 index 0000000000000000000000000000000000000000..950ba469c6452212ad59600552276cf19e0d9fe3 GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F3${@^GvDCf{D9B#o z>Fdh=h)sxFMtPO*&S0RBWQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FMhJw4NZ$Nk>pEyv_ zHBT4E5R21iCvD_Atia>KFOr&&ps@Ns$H%Q5{}U5VPH0thPH|KZn56dhg4bGef$uf# zynjk7->?3@Z(o)18-7KWDM71>{TLd8UU6zH6}fh+PW^n6lGE#~o<_rE-CM6|EWIM& z#NMHO+offSPzMLYgrKHtQkLm+WIJ}hacPlIo;6v!klp0B*UCK0V;zMutPDA~!*1Ie zC&ymrn>^p|mDwQ^-x<$;=C(Za+oR*%Ke;$>e#CiS{^UE|xAhnriv3JZRBp675XG&z p^hWng$ul(#Zw|&sKD~dP`Il>tt6g{AQlJkRJYD@<);T3K0RTM=gEjyF literal 0 HcmV?d00001 diff --git a/elepower_dynamics/textures/elepower_particle_board.png b/elepower_dynamics/textures/elepower_particle_board.png new file mode 100644 index 0000000000000000000000000000000000000000..948fbdd0a9113691dbe0d8bbc2fae0f544a1fe6f GIT binary patch literal 411 zcmV;M0c8G(P)q$lUb|2 zUI&B&IQO=lpFch%B!NiU!Rk^`tv(Y;B}#MxKvnw;1(iIZMDSWopwAfzV9p7G>#98i z;97NmZ4w3%i?oeI*OHC!RJQqC+0SW*B002ovPDHLk FV1i1eqpkn| literal 0 HcmV?d00001 diff --git a/elepower_machines/craft.lua b/elepower_machines/craft.lua index dea06be..fcf7724 100644 --- a/elepower_machines/craft.lua +++ b/elepower_machines/craft.lua @@ -17,6 +17,11 @@ function elepm.register_craft(craftdef) return nil end + if craftdef.type == "cooking" then + minetest.register_craft(craftdef) + return + end + local inputs = craftdef.recipe local outputs = craftdef.output local ctype = craftdef.type @@ -32,10 +37,10 @@ function elepm.register_craft(craftdef) local craftresult = {} if type(outputs) == "table" then - for _,output in ipairs(output) do + for _,output in ipairs(outputs) do local stack = ItemStack(output) if stack and not stack:is_empty() then - craftresult[stack:get_name()] = stack:get_count() + craftresult[#craftresult + 1] = stack:to_string() end end else diff --git a/elepower_machines/register.lua b/elepower_machines/register.lua index 2cb38bd..6aa9230 100644 --- a/elepower_machines/register.lua +++ b/elepower_machines/register.lua @@ -41,26 +41,11 @@ elepm.register_craft_type("grind", { inputs = 1, }) --- Look for item name regardless of mod -local function scan_item_list(item_name) - local found = nil - - for name in pairs(minetest.registered_items) do - local nomod = name:gsub("(%w+):", "") - if nomod == item_name then - found = name - break - end - end - - return found -end - local keywords = { _ingot = 1, _lump = 2, _block = 9, block = 9 } for mat, data in pairs(elepd.registered_dusts) do local kwfound = nil for keyword,count in pairs(keywords) do - local found = scan_item_list(mat .. keyword) + local found = ele.helpers.scan_item_list(mat .. keyword) if found then if keyword == "_ingot" and not kwfound then kwfound = found @@ -161,7 +146,7 @@ minetest.after(0.2, function () elepm.register_craft({ type = "saw", recipe = { tree }, - output = wood .. " 6", + output = {wood .. " 6", "elepower_dynamics:wood_dust"}, time = 8, }) end diff --git a/elepower_papi/helpers.lua b/elepower_papi/helpers.lua index 923acae..11bbe4b 100644 --- a/elepower_papi/helpers.lua +++ b/elepower_papi/helpers.lua @@ -72,3 +72,18 @@ function ele.helpers.get_node_property(meta, pos, prop) return value end + +-- Look for item name regardless of mod +function ele.helpers.scan_item_list(item_name) + local found = nil + + for name in pairs(minetest.registered_items) do + local nomod = name:gsub("([%w_]+):", "") + if nomod == item_name then + found = name + break + end + end + + return found +end