From 9580fdb81b1af5b68ff083e4abc98db3d097723b Mon Sep 17 00:00:00 2001 From: ChrisPHP Date: Thu, 18 Aug 2022 19:45:30 +0100 Subject: [PATCH] Added enchanted book to disenchant and drop items when destroyed --- mods/ITEMS/mcl_grindstone/init.lua | 22 ++++++++++++++++++++++ mods/ITEMS/mcl_grindstone/mod.conf | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_grindstone/init.lua b/mods/ITEMS/mcl_grindstone/init.lua index 775ea82b5..bf24ac321 100644 --- a/mods/ITEMS/mcl_grindstone/init.lua +++ b/mods/ITEMS/mcl_grindstone/init.lua @@ -1,7 +1,10 @@ +-- Code based from mcl_anvils + local S = minetest.get_translator(minetest.get_current_modname()) local MAX_WEAR = 65535 +-- formspecs local function get_grindstone_formspec() return "size[9,8.75]".. "image[3,1.5;1.5,1;gui_crafting_arrow.png]".. @@ -117,6 +120,7 @@ local function update_grindstone_slots(meta) new_output = "" end -- Check if at least one input has an item + -- Check if the item is's an enchanted book or tool elseif (not input1:is_empty() and input2:is_empty()) or (input1:is_empty() and not input2:is_empty()) then if input2:is_empty() then local def1 = input1:get_definition() @@ -126,6 +130,9 @@ local function update_grindstone_slots(meta) local wear = input1:get_wear() local new_item = create_new_item(name, meta, wear) new_output = transfer_curse(input1, new_item) + elseif input1:get_name() == "mcl_enchanting:book_enchanted" then + local new_item = ItemStack("mcl_books:book") + new_output = transfer_curse(input1, new_item) else new_output = "" end @@ -137,6 +144,9 @@ local function update_grindstone_slots(meta) local wear = input2:get_wear() local new_item = create_new_item(name, meta, wear) new_output = transfer_curse(input2, new_item) + elseif input2:get_name() == "mcl_enchanting:book_enchanted" then + local new_item = ItemStack("mcl_books:book") + new_output = transfer_curse(input2, new_item) else new_output = "" end @@ -152,6 +162,18 @@ local function update_grindstone_slots(meta) end end +-- Drop any items inside the grindstone if destroyed +local function drop_grindstone_items(pos, meta) + local inv = meta:get_inventory() + for i=1, inv:get_size("input") do + local stack = inv:get_stack("input", i) + if not stack:is_empty() then + local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} + minetest.add_item(p, stack) + end + end +end + minetest.register_node("mcl_grindstone:grindstone", { description = S("Grindstone"), _tt_help = S("Used to disenchant/fix tools"), diff --git a/mods/ITEMS/mcl_grindstone/mod.conf b/mods/ITEMS/mcl_grindstone/mod.conf index 776804100..31fe09d62 100644 --- a/mods/ITEMS/mcl_grindstone/mod.conf +++ b/mods/ITEMS/mcl_grindstone/mod.conf @@ -1,4 +1,4 @@ name = mcl_grindstone author = TheRandomLegoBrick, ChrisPHP depends = mcl_experience, mcl_sounds -description = Adds a cool looking block for the weaponsmiths jobsite +description = Adds a cool looking block for the weaponsmiths jobsite and to disenchant or repair tools.