From ece1600e196eda91280ed1cb098522a8a7280e8d Mon Sep 17 00:00:00 2001 From: sys4-fr Date: Mon, 20 Mar 2017 21:43:17 +0100 Subject: [PATCH 1/2] Fix witchcraft potion creation Fix witchcraft brewstand use Disable experience mod --- mods/nalc/depends.txt | 1 + mods/nalc/init.lua | 66 ++++++++++++++++++++++++++++++++++ mods/nether/nether/portal.lua | 49 +++++++++++++++---------- worlds/minetestforfun/world.mt | 2 +- 4 files changed, 98 insertions(+), 20 deletions(-) diff --git a/mods/nalc/depends.txt b/mods/nalc/depends.txt index 0d6ec581..d098c192 100644 --- a/mods/nalc/depends.txt +++ b/mods/nalc/depends.txt @@ -3,3 +3,4 @@ witchcraft? bones? bonemeal? vessels? +farming? diff --git a/mods/nalc/init.lua b/mods/nalc/init.lua index 71a5284e..dd537099 100644 --- a/mods/nalc/init.lua +++ b/mods/nalc/init.lua @@ -60,5 +60,71 @@ if minetest.get_modpath("witchcraft") then {"group:potion", "vessels:shelf", "group:potion"}, } }) + + -- Rewrite potion table which is buggy + witchcraft.pot_new = + { + {"blue", "blue2", "default:leaves", "brown", "default:dirt", "red", "purple"}, -- replace waterlily by leaves (flowers_plus incompatibility i think...) + {"blue2", "green", "default:papyrus", "", "", "gred", "magenta"}, + {"green", "green2", "default:sapling", "", "", "yellow", "yllwgrn"}, + {"green2", "yellow", "default:mese_crystal_fragment", "", "", "blue", "cyan"}, + {"yellow", "ggreen", "flowers:mushroom_brown", "", "", "green", "yllwgrn"}, + {"ggreen", "cyan", "witchcraft:slime_bottle", "", "", "gcyan", "aqua"}, + {"cyan", "gcyan", "witchcraft:bottle_medicine", "", "", "blue", "blue2"}, + {"gcyan", "orange", "default:torch", "", "", "ggreen", "aqua"}, + {"orange", "yllwgrn", "tnt:gunpowder", "", "", "red", "redbrown"}, + {"yllwgrn", "gold", "default:steel_ingot", "", "", "green", "green2"}, + {"gold", "aqua", "default:diamond", "", "", "", ""}, + {"aqua", "", "", "", "", "", ""}, + {"brown", "redbrown", "flowers:mushroom_red", "", "", "red", "redbrown"}, + {"redbrown", "gred", "default:apple", "", "", "", ""}, + {"gred", "red", "witchcraft:herb_bottle", "", "", "blue2", "magenta"}, -- replace witchcraft:herbs (inexistant) by herb_bottle + {"red", "magenta", "witchcraft:tooth", "", "", "blue", "purple"}, + {"magenta", "gpurple", "witchcraft:slime_bottle", "", "", "cyan", "darkpurple"}, -- item name corrected (was inverted) + {"gpurple", "purple", "witchcraft:bone_bottle", "", "", "yllwgrn", "green2"}, + {"purple", "darkpurple", "default:glass", "", "", "yellow", "green"}, + {"darkpurple", "silver", "default:steel_ingot", "", "", "", ""}, + {"silver", "grey", "witchcraft:bone", "", "", "", ""}, + {"grey", "aqua", "default:diamond", "", "", "", ""}, + } + + -- Override potion green effect if farming_redo is loaded (bad call in original mod) + if farming.mod and farming.mod == "redo" then + minetest.override_item( + "witchcraft:potion_green", + { + description = "Melon Potion", + on_use = function(item, user, pointed_thing) + local player = user:get_player_name() + if pointed_thing.type == "node" and + minetest.get_node(pointed_thing.above).name == "air" then + if not minetest.is_protected(pointed_thing.above, player) then + minetest.set_node(pointed_thing.above, {name="farming:melon_8"}) + else + minetest.chat_send_player(player, "This area is protected.") + end + end + local playerpos = user:getpos(); + minetest.add_particlespawner( + 5, --amount + 0.1, --time + {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1}, --minpos + {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1}, --maxpos + {x=-0, y=-0, z=-0}, --minvel + {x=0, y=0, z=0}, --maxvel + {x=-0.5,y=4,z=-0.5}, --minacc + {x=0.5,y=4,z=0.5}, --maxacc + 0.5, --minexptime + 1, --maxexptime + 1, --minsize + 2, --maxsize + false, --collisiondetection + "witchcraft_effect.png" --texture + ) + item:replace("vessels:glass_bottle") + return item + end + }) + end end end diff --git a/mods/nether/nether/portal.lua b/mods/nether/nether/portal.lua index 37a95731..586e99f7 100755 --- a/mods/nether/nether/portal.lua +++ b/mods/nether/nether/portal.lua @@ -557,27 +557,38 @@ minetest.override_item("default:obsidian", { }) -- override mese crystal fragment for making an obsidian portal -minetest.after(0.1, function() - minetest.override_item("default:mese_crystal_fragment", { - on_place = function(stack, player, pt) - if pt.under - and minetest.get_node(pt.under).name == "default:obsidian" then - --print("[nether] tries to enable a portal") - local done = make_portal(pt.under) - if done then - minetest.chat_send_player( - player:get_player_name(), - "Warning: If you are in the nether you may not be able to find the way out!" - ) - if not minetest.setting_getbool("creative_mode") then - stack:take_item() +minetest.after( + 0.1, + function() + minetest.override_item( + "default:mese_crystal_fragment", + { + on_place = function(stack, player, pt) + local n = minetest.get_node(pt.under) + if n + and n.name == "default:obsidian" then + --print("[nether] tries to enable a portal") + local done = make_portal(pt.under) + if done then + minetest.chat_send_player( + player:get_player_name(), + "Warning: If you are in the nether you may not be able to find the way out!" + ) + if not minetest.setting_getbool("creative_mode") then + stack:take_item() + end + end + elseif n then + local ndef = minetest.registered_nodes[n.name] + if ndef and ndef.on_rightclick and + player and not player:get_player_control().sneak then + return ndef.on_rightclick(pt.under, n, player, stack) or stack + end end + return stack end - end - return stack - end - }) -end) + }) + end) -- a not filled square diff --git a/worlds/minetestforfun/world.mt b/worlds/minetestforfun/world.mt index 33dea5d5..4734cae1 100755 --- a/worlds/minetestforfun/world.mt +++ b/worlds/minetestforfun/world.mt @@ -247,7 +247,7 @@ load_mod_enchanting = true load_mod_witchcraft = true load_mod_playereffects = true load_mod_meshnode = true -load_mod_experience = true +load_mod_experience = false load_mod_bonemeal = true load_mod_tnt = true load_mod_playeranim = true From 125666db3cc5b259fe9becfcfa1f822c4959ce12 Mon Sep 17 00:00:00 2001 From: sys4-fr Date: Mon, 20 Mar 2017 22:28:22 +0100 Subject: [PATCH 2/2] Fix crash with witchcraft support --- mods/nalc/init.lua | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/mods/nalc/init.lua b/mods/nalc/init.lua index dd537099..3024fbd2 100644 --- a/mods/nalc/init.lua +++ b/mods/nalc/init.lua @@ -62,7 +62,7 @@ if minetest.get_modpath("witchcraft") then }) -- Rewrite potion table which is buggy - witchcraft.pot_new = + local pot_new = { {"blue", "blue2", "default:leaves", "brown", "default:dirt", "red", "purple"}, -- replace waterlily by leaves (flowers_plus incompatibility i think...) {"blue2", "green", "default:papyrus", "", "", "gred", "magenta"}, @@ -88,6 +88,48 @@ if minetest.get_modpath("witchcraft") then {"grey", "aqua", "default:diamond", "", "", "", ""}, } + -- Override pots on_rightclick + for _, row in ipairs(pot_new) do + local color = row[1] + local newcolor = row[2] + local newcolor2 = row[4] + local ingredient = row[3] + local ingredient2 = row[5] + local combine = row[6] + local cresult = row[7] + + minetest.override_item( + "witchcraft:pot_"..color, + { + on_rightclick = function(pos, node, clicker, item, _) + local wield_item = clicker:get_wielded_item():get_name() + if wield_item == "vessels:glass_bottle" and clicker:get_wielded_item():get_count() == 3 then + item:replace("witchcraft:potion_"..color) + minetest.env:add_item({x=pos.x, y=pos.y+1.5, z=pos.z}, "witchcraft:potion_"..color) + minetest.env:add_item({x=pos.x, y=pos.y+1.5, z=pos.z}, "witchcraft:potion_"..color) + minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2}) + elseif wield_item == "vessels:glass_bottle" and clicker:get_wielded_item():get_count() ~= 3 then + item:replace("witchcraft:potion_"..color) + minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2}) + else + if wield_item == ingredient then + minetest.set_node(pos, {name="witchcraft:pot_"..newcolor, param2=node.param2}) + item:take_item() + elseif wield_item == ingredient2 then + minetest.set_node(pos, {name="witchcraft:pot_"..newcolor2, param2=node.param2}) + item:take_item() + elseif wield_item == "bucket:bucket_water" then + minetest.set_node(pos, {name="witchcraft:pot_blue", param2=node.param2}) + item:replace("bucket:bucket_empty") + elseif wield_item == "witchcraft:potion_"..combine then + minetest.set_node(pos, {name="witchcraft:pot_"..cresult, param2=node.param2}) + item:replace("vessels:glass_bottle") + end + end + end + }) + end + -- Override potion green effect if farming_redo is loaded (bad call in original mod) if farming.mod and farming.mod == "redo" then minetest.override_item(