]> git.lizzy.rs Git - xdecor.git/blobdiff - cooking.lua
Craft guide : remember tab id on clearing filter
[xdecor.git] / cooking.lua
index 3cad827f35c7f444d45d5e469a7b7c1e5f2d025a..201ea829e0467a820da00475cbfe8a388e19e4ff 100644 (file)
@@ -1,5 +1,3 @@
-minetest.register_alias("xdecor:cauldron", "xdecor:cauldron_empty") -- legacy code
-
 local cauldron_cbox = {
        type = "fixed",
        fixed = {
@@ -76,15 +74,23 @@ xdecor.register("cauldron_soup", {
        collision_box = cauldron_cbox,
        on_rightclick = function(pos, node, clicker, itemstack)
                local inv = clicker:get_inventory()
-               if clicker:get_wielded_item():get_name() == "xdecor:bowl" then
-                       if inv:room_for_item("main", "xdecor:bowl_soup 1") then
-                               itemstack:take_item()
-                               inv:add_item("main", "xdecor:bowl_soup 1")
-                               minetest.set_node(pos, {name="xdecor:cauldron_empty", param2=node.param2})
-                       else
-                               minetest.chat_send_player(clicker:get_player_name(),
+               local wield_item = clicker:get_wielded_item()
+
+               if wield_item:get_name() == "xdecor:bowl" then
+                       if wield_item:get_count() > 1 then
+                               if inv:room_for_item("main", "xdecor:bowl_soup 1") then
+                                       itemstack:take_item()
+                                       inv:add_item("main", "xdecor:bowl_soup 1")
+                               else
+                                       minetest.chat_send_player(clicker:get_player_name(),
                                                "No room in your inventory to add a bowl of soup!")
+                                       return
+                               end
+                       else
+                               itemstack:replace("xdecor:bowl_soup 1")
                        end
+
+                       minetest.set_node(pos, {name="xdecor:cauldron_empty", param2=node.param2})
                        return itemstack
                end
        end
@@ -103,7 +109,7 @@ minetest.register_abm({
 
 minetest.register_abm({
        nodenames = {"xdecor:cauldron_boiling_water"},
-       interval = 3, chance = 1,
+       interval = 5, chance = 1,
        action = function(pos, node)
                local objs = minetest.get_objects_inside_radius(pos, 0.5)
                if not objs then return end
@@ -116,7 +122,7 @@ minetest.register_abm({
 
                for _, obj in pairs(objs) do
                        if obj and obj:get_luaentity() then
-                               local itemstring = obj:get_luaentity().itemstring:match("[%w_]+:([%w_]+)")
+                               local itemstring = obj:get_luaentity().itemstring:match("[^:]+$")
                                if not next(ingredients) then
                                        for _, rep in pairs(ingredients) do
                                                if itemstring == rep then return end