X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=cooking.lua;h=46629ec756278760479c20308dbbeac85187941d;hb=beeda8cb9becef5811808ddaa0d2525a147076cb;hp=8231fb9b1939b05c3f0b4eab83238ff2dce405c0;hpb=87f99c95997f7591e2dad31e4a6ff762bc62e78d;p=xdecor.git diff --git a/cooking.lua b/cooking.lua index 8231fb9..46629ec 100644 --- a/cooking.lua +++ b/cooking.lua @@ -1,4 +1,4 @@ -local cauldron = {} +local cauldron, sounds = {}, {} -- Add more ingredients here that make a soup. local ingredients_list = { @@ -15,15 +15,27 @@ cauldron.cbox = { {0, 0, 0, 16, 8, 16} } +function cauldron.stop_sound(pos) + local spos = minetest.hash_node_position(pos) + if sounds[spos] then minetest.sound_stop(sounds[spos]) end +end + function cauldron.idle_construct(pos) local timer = minetest.get_node_timer(pos) timer:start(10.0) + cauldron.stop_sound(pos) end function cauldron.boiling_construct(pos) + local spos = minetest.hash_node_position(pos) + sounds[spos] = minetest.sound_play("xdecor_boiling_water", { + pos=pos, max_hear_distance=5, gain=0.8, loop=true + }) + local meta = minetest.get_meta(pos) - local timer = minetest.get_node_timer(pos) meta:set_string("infotext", "Cauldron (active) - Drop some foods inside to make a soup") + + local timer = minetest.get_node_timer(pos) timer:start(5.0) end @@ -40,7 +52,7 @@ function cauldron.filling(pos, node, clicker, itemstack) else minetest.chat_send_player(clicker:get_player_name(), "No room in your inventory to add a bucket of water.") - return + return itemstack end else itemstack:replace("bucket:bucket_water") @@ -116,15 +128,15 @@ function cauldron.take_soup(pos, node, clicker, itemstack) else minetest.chat_send_player(clicker:get_player_name(), "No room in your inventory to add a bowl of soup.") - return + return itemstack end else itemstack:replace("xdecor:bowl_soup 1") end minetest.set_node(pos, {name="xdecor:cauldron_empty", param2=node.param2}) - return itemstack end + return itemstack end xdecor.register("cauldron_empty", { @@ -133,6 +145,9 @@ xdecor.register("cauldron_empty", { on_rotate = screwdriver.rotate_simple, tiles = {"xdecor_cauldron_top_empty.png", "xdecor_cauldron_sides.png"}, infotext = "Cauldron (empty)", + on_construct = function(pos) + cauldron.stop_sound(pos) + end, on_rightclick = cauldron.filling, collision_box = xdecor.pixelbox(16, cauldron.cbox) }) @@ -161,9 +176,11 @@ xdecor.register("cauldron_boiling", { collision_box = xdecor.pixelbox(16, cauldron.cbox), on_rightclick = cauldron.filling, on_construct = cauldron.boiling_construct, + on_destruct = function(pos) + cauldron.stop_sound(pos) + end, on_timer = cauldron.boiling_timer }) -minetest.register_alias("xdecor:cauldron_boiling_water", "xdecor:cauldron_boiling") xdecor.register("cauldron_soup", { groups = {cracky=2, oddly_breakable_by_hand=1, not_in_creative_inventory=1}, @@ -175,6 +192,9 @@ xdecor.register("cauldron_soup", { animation={type="vertical_frames", length=3.0}}, "xdecor_cauldron_sides.png"}, collision_box = xdecor.pixelbox(16, cauldron.cbox), - on_rightclick = cauldron.take_soup + on_rightclick = cauldron.take_soup, + on_destruct = function(pos) + cauldron.stop_sound(pos) + end })