mirror of
https://git.minetest.land/MineClone2/MineClone2.git
synced 2024-09-12 00:56:53 +02:00
Fix jukebox crash
This commit is contained in:
parent
bc0879911f
commit
c357eb0539
@ -1,4 +1,5 @@
|
|||||||
local active_tracks = {}
|
local active_tracks = {}
|
||||||
|
local active_huds = {}
|
||||||
|
|
||||||
local recorddata = {
|
local recorddata = {
|
||||||
{ "The Evil Sister (Jordach's Mix)", "SoundHelix", "13" } ,
|
{ "The Evil Sister (Jordach's Mix)", "SoundHelix", "13" } ,
|
||||||
@ -24,6 +25,44 @@ for r=1, records do
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function now_playing(player, track_id)
|
||||||
|
local hud = active_huds[player:get_player_name()]
|
||||||
|
local text =
|
||||||
|
recorddata[track_id][1].."\n"..
|
||||||
|
recorddata[track_id][2]
|
||||||
|
|
||||||
|
if hud ~= nil then
|
||||||
|
player:hud_change(active_huds[player], {
|
||||||
|
text = text
|
||||||
|
})
|
||||||
|
else
|
||||||
|
id = player:hud_add({
|
||||||
|
hud_elem_type = "text",
|
||||||
|
position = { x=0.5, y=0.8 },
|
||||||
|
offset = { x=0, y = 0 },
|
||||||
|
size = { x=100, y=100},
|
||||||
|
number = 0xFFFFFF,
|
||||||
|
text = text,
|
||||||
|
})
|
||||||
|
active_huds[player:get_player_name()] = id
|
||||||
|
end
|
||||||
|
minetest.after(5, function(tab)
|
||||||
|
local player = tab[1]
|
||||||
|
local id = tab[2]
|
||||||
|
if not player or not player:is_player() or not active_huds[player:get_player_name()] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if id == active_huds[player:get_player_name()] then
|
||||||
|
player:hud_remove(active_huds[player:get_player_name()])
|
||||||
|
end
|
||||||
|
end, {player, id})
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_leaveplayer(function(player)
|
||||||
|
active_tracks[player:get_player_name()] = nil
|
||||||
|
active_huds[player:get_player_name()] = nil
|
||||||
|
end)
|
||||||
|
|
||||||
-- Jukebox crafting
|
-- Jukebox crafting
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
@ -35,6 +74,7 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
-- Jukebox
|
-- Jukebox
|
||||||
minetest.register_node("mcl_jukebox:jukebox", {
|
minetest.register_node("mcl_jukebox:jukebox", {
|
||||||
description = "Jukebox",
|
description = "Jukebox",
|
||||||
@ -64,6 +104,9 @@ minetest.register_node("mcl_jukebox:jukebox", {
|
|||||||
inv:set_stack("main", 1, "")
|
inv:set_stack("main", 1, "")
|
||||||
if active_tracks[puncher:get_player_name()] ~= nil then
|
if active_tracks[puncher:get_player_name()] ~= nil then
|
||||||
minetest.sound_stop(active_tracks[puncher:get_player_name()])
|
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
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
-- Jukebox is empty: Play track if player holds music record
|
-- Jukebox is empty: Play track if player holds music record
|
||||||
@ -72,6 +115,7 @@ minetest.register_node("mcl_jukebox:jukebox", {
|
|||||||
if record_id ~= 0 then
|
if record_id ~= 0 then
|
||||||
if active_tracks[puncher:get_player_name()] ~= nil then
|
if active_tracks[puncher:get_player_name()] ~= nil then
|
||||||
minetest.sound_stop(active_tracks[puncher:get_player_name()])
|
minetest.sound_stop(active_tracks[puncher:get_player_name()])
|
||||||
|
puncher:hud_remove(active_huds[puncher:get_player_name()])
|
||||||
end
|
end
|
||||||
puncher:set_wielded_item("")
|
puncher:set_wielded_item("")
|
||||||
active_tracks[puncher:get_player_name()] = minetest.sound_play("mcl_jukebox_track_"..record_id, {
|
active_tracks[puncher:get_player_name()] = minetest.sound_play("mcl_jukebox_track_"..record_id, {
|
||||||
@ -79,6 +123,7 @@ minetest.register_node("mcl_jukebox:jukebox", {
|
|||||||
--max_hear_distance = 16,
|
--max_hear_distance = 16,
|
||||||
gain = 1,
|
gain = 1,
|
||||||
})
|
})
|
||||||
|
now_playing(puncher, record_id)
|
||||||
inv:set_stack("main", 1, wield)
|
inv:set_stack("main", 1, wield)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user