From b80d23d90192ea37c432011e96c83bfc040be262 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Jan 2017 22:40:00 +0100 Subject: [PATCH] Jukeboxes: Make rightclick work --- mods/mcl_jukebox/init.lua | 43 +++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/mods/mcl_jukebox/init.lua b/mods/mcl_jukebox/init.lua index d3f657018b..f3247ebad6 100644 --- a/mods/mcl_jukebox/init.lua +++ b/mods/mcl_jukebox/init.lua @@ -32,9 +32,7 @@ local function now_playing(player, track_id) recorddata[track_id][2] if hud ~= nil then - player:hud_change(active_huds[player], { - text = text - }) + player:hud_change(active_huds[player], "text", text) else id = player:hud_add({ hud_elem_type = "text", @@ -86,15 +84,16 @@ minetest.register_node("mcl_jukebox:jukebox", { local inv = meta:get_inventory() inv:set_size("main", 1) end, - on_punch = function(pos, node, puncher, pointed_thing) - if not puncher then return end + on_rightclick= function(pos, node, clicker, itemstack, pointed_thing) + if not clicker then return end + local cname = clicker:get_player_name() local meta = minetest.get_meta(pos) local inv = meta:get_inventory() if not inv:is_empty("main") then -- Jukebox contains a disc: Stop music and remove disc - if active_tracks[puncher:get_player_name()] ~= nil then - minetest.sound_stop(active_tracks[puncher:get_player_name()]) + if active_tracks[cname] ~= nil then + minetest.sound_stop(active_tracks[cname]) end local lx = pos.x local ly = pos.y+1 @@ -102,29 +101,29 @@ minetest.register_node("mcl_jukebox:jukebox", { local record = inv:get_stack("main", 1) minetest.add_item({x=lx, y=ly, z=lz}, record:get_name()) inv:set_stack("main", 1, "") - if active_tracks[puncher:get_player_name()] ~= nil then - minetest.sound_stop(active_tracks[puncher:get_player_name()]) - puncher:hud_remove(active_huds[puncher:get_player_name()]) - active_tracks[puncher:get_player_name()] = nil - active_huds[puncher:get_player_name()] = nil + if active_tracks[cname] ~= nil then + minetest.sound_stop(active_tracks[cname]) + clicker:hud_remove(active_huds[cname]) + active_tracks[cname] = nil + active_huds[cname] = nil end else -- Jukebox is empty: Play track if player holds music record - local wield = puncher:get_wielded_item():get_name() - local record_id = minetest.get_item_group(wield, "music_record") + local record_id = minetest.get_item_group(itemstack:get_name(), "music_record") if record_id ~= 0 then - if active_tracks[puncher:get_player_name()] ~= nil then - minetest.sound_stop(active_tracks[puncher:get_player_name()]) - puncher:hud_remove(active_huds[puncher:get_player_name()]) + if active_tracks[cname] ~= nil then + minetest.sound_stop(active_tracks[cname]) + clicker:hud_remove(active_huds[cname]) end - puncher:set_wielded_item("") - active_tracks[puncher:get_player_name()] = minetest.sound_play("mcl_jukebox_track_"..record_id, { - to_player = puncher:get_player_name(), + active_tracks[cname] = minetest.sound_play("mcl_jukebox_track_"..record_id, { + to_player = cname, --max_hear_distance = 16, gain = 1, }) - now_playing(puncher, record_id) - inv:set_stack("main", 1, wield) + now_playing(clicker, record_id) + inv:set_stack("main", 1, itemstack:get_name()) + itemstack:take_item() + return itemstack end end end,