2022-04-25 16:02:36 +02:00
--TODO: Add sounds for the respawn anchor (charge sounds etc.)
--Nether ends at y -29077
--Nether roof at y -28933
local S = minetest.get_translator ( minetest.get_current_modname ( ) )
--local mod_doc = minetest.get_modpath("doc") -> maybe add documentation ?
2024-06-19 02:35:03 +02:00
local gamerule_respawnBlocksExplode = vl_tuning.respawn_blocks_explode
2022-04-25 16:02:36 +02:00
for i = 0 , 4 do
local function rightclick ( pos , node , player , itemstack )
if itemstack.get_name ( itemstack ) == " mcl_nether:glowstone " and i ~= 4 then
minetest.set_node ( pos , { name = " mcl_beds:respawn_anchor_charged_ " .. i + 1 } )
itemstack : take_item ( )
elseif mcl_worlds.pos_to_dimension ( pos ) ~= " nether " then
2024-06-19 02:35:03 +02:00
if gamerule_respawnBlocksExplode [ 1 ] and node.name ~= " mcl_beds:respawn_anchor " then --only charged respawn anchors are exploding in the overworld & end in minecraft
2022-04-25 16:02:36 +02:00
mcl_explosions.explode ( pos , 5 , { drop_chance = 0 , fire = true } )
end
elseif string.match ( node.name , " mcl_beds:respawn_anchor_charged_ " ) then
minetest.chat_send_player ( player.get_player_name ( player ) , S " New respawn position set! " )
mcl_spawn.set_spawn_pos ( player , pos , nil )
2022-07-01 21:11:26 +02:00
if i == 4 then
awards.unlock ( player : get_player_name ( ) , " mcl:notQuiteNineLives " )
end
2022-04-25 16:02:36 +02:00
end
end
if i == 0 then
minetest.register_node ( " mcl_beds:respawn_anchor " , {
description = S ( " Respawn Anchor " ) ,
tiles = {
" respawn_anchor_top_off.png " ,
" respawn_anchor_bottom.png " ,
" respawn_anchor_side0.png "
} ,
on_rightclick = rightclick ,
groups = { pickaxey = 1 , material_stone = 1 } ,
_mcl_hardness = 22.5 ,
2022-05-08 21:20:42 +02:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
2022-05-25 19:37:36 +02:00
use_texture_alpha = " blend " ,
2022-04-25 16:02:36 +02:00
} )
2022-05-08 21:20:42 +02:00
mesecon.register_mvps_stopper ( " mcl_beds:respawn_anchor " )
2022-04-25 16:02:36 +02:00
else
minetest.register_node ( " mcl_beds:respawn_anchor_charged_ " .. i , {
description = S ( " Respawn Anchor " ) ,
tiles = {
2022-11-18 09:11:39 +01:00
{
2023-03-24 19:26:40 +01:00
name = " respawn_anchor_top_on.png^[noalpha " ,
2022-11-18 09:11:39 +01:00
animation = { type = " vertical_frames " , aspect_w = 16 , aspect_h = 16 , length = 2.0 }
} ,
2022-04-25 16:02:36 +02:00
" respawn_anchor_bottom.png " ,
" respawn_anchor_side " .. i .. " .png "
} ,
on_rightclick = rightclick ,
groups = { pickaxey = 1 , material_stone = 1 , not_in_creative_inventory = 1 } ,
_mcl_hardness = 22.5 ,
2022-05-08 21:20:42 +02:00
sounds = mcl_sounds.node_sound_stone_defaults ( ) ,
drop = {
max_items = 1 ,
items = {
{ items = { " mcl_beds:respawn_anchor " } } ,
}
} ,
2022-05-25 19:37:36 +02:00
light_source = math.min ( ( 4 * i ) - 1 , minetest.LIGHT_MAX ) ,
use_texture_alpha = " blend " ,
2022-04-25 16:02:36 +02:00
} )
2022-05-08 21:20:42 +02:00
mesecon.register_mvps_stopper ( " mcl_beds:respawn_anchor_charged_ " .. i )
2022-04-25 16:02:36 +02:00
end
end
2022-06-30 14:00:55 +02:00
minetest.register_craft ( {
2022-04-25 16:02:36 +02:00
output = " mcl_beds:respawn_anchor " ,
2022-05-26 07:29:28 +02:00
recipe = {
2022-06-30 14:00:55 +02:00
{ " mcl_core:crying_obsidian " , " mcl_core:crying_obsidian " , " mcl_core:crying_obsidian " } ,
2022-04-25 16:02:36 +02:00
{ " mcl_nether:glowstone " , " mcl_nether:glowstone " , " mcl_nether:glowstone " } ,
2022-06-30 14:00:55 +02:00
{ " mcl_core:crying_obsidian " , " mcl_core:crying_obsidian " , " mcl_core:crying_obsidian " }
2022-05-26 07:29:28 +02:00
}
} )