recovery compass
|
@ -16,6 +16,13 @@ local compass_types = {
|
||||||
tt = S("Points to a lodestone"),
|
tt = S("Points to a lodestone"),
|
||||||
longdesc = S("Lodestone compasses resemble regular compasses, but they point to a specific lodestone."),
|
longdesc = S("Lodestone compasses resemble regular compasses, but they point to a specific lodestone."),
|
||||||
usagehelp = S("A Lodestone compass can be made from an ordinary compass by using it on a lodestone. After becoming a lodestone compass, it always points to its linked lodestone, provided that they are in the same dimension. If not in the same dimension, the lodestone compass spins randomly, similarly to a regular compass when outside the overworld. A lodestone compass can be relinked with another lodestone."),
|
usagehelp = S("A Lodestone compass can be made from an ordinary compass by using it on a lodestone. After becoming a lodestone compass, it always points to its linked lodestone, provided that they are in the same dimension. If not in the same dimension, the lodestone compass spins randomly, similarly to a regular compass when outside the overworld. A lodestone compass can be relinked with another lodestone."),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "compass_recovery",
|
||||||
|
desc = S("Recovery Compass"),
|
||||||
|
tt = S("Points to your last death Location"),
|
||||||
|
longdesc = S("Recovery Compasses are compasses that point to your last death location"),
|
||||||
|
usagehelp = S("Recovery Compasses always point to the location of your last death, in case you haven't died yet, it will just randomly spin around"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,7 +189,7 @@ minetest.register_globalstep(function(dtime)
|
||||||
inv = player:get_inventory()
|
inv = player:get_inventory()
|
||||||
for j, stack in pairs(inv:get_list("main")) do
|
for j, stack in pairs(inv:get_list("main")) do
|
||||||
compass_nr = get_item_group(stack:get_name(), "compass")
|
compass_nr = get_item_group(stack:get_name(), "compass")
|
||||||
if compass_nr ~= 0 then
|
if compass_nr ~= 0 and not string_find(stack:get_name(), "_recovery") then
|
||||||
-- check if current compass image still matches true orientation
|
-- check if current compass image still matches true orientation
|
||||||
compass_frame = get_compass_frame(pos, dir, stack)
|
compass_frame = get_compass_frame(pos, dir, stack)
|
||||||
if compass_nr - 1 ~= compass_frame then
|
if compass_nr - 1 ~= compass_frame then
|
||||||
|
@ -195,6 +202,16 @@ minetest.register_globalstep(function(dtime)
|
||||||
end
|
end
|
||||||
inv:set_stack("main", j, stack)
|
inv:set_stack("main", j, stack)
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
local meta = player:get_meta()
|
||||||
|
local posstring = meta:get_string("mcl_compass:recovery_pos")
|
||||||
|
if not posstring or posstring == "" then
|
||||||
|
stack:set_name("mcl_compass:"..random_frame .. "_recovery")
|
||||||
|
else
|
||||||
|
local targetpos = minetest.string_to_pos(posstring)
|
||||||
|
stack:set_name("mcl_compass:"..get_compass_angle(pos,targetpos,dir).."_recovery")
|
||||||
|
end
|
||||||
|
inv:set_stack("main",j,stack)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -213,6 +230,9 @@ for _, item in pairs(compass_types) do
|
||||||
elseif item.name == "compass_lodestone" then
|
elseif item.name == "compass_lodestone" then
|
||||||
name_fmt = "mcl_compass:%d_lodestone"
|
name_fmt = "mcl_compass:%d_lodestone"
|
||||||
img_fmt = "mcl_compass_compass_%02d.png^[colorize:purple:50"
|
img_fmt = "mcl_compass_compass_%02d.png^[colorize:purple:50"
|
||||||
|
elseif item.name == "compass_recovery" then
|
||||||
|
name_fmt = "mcl_compass:%d_recovery"
|
||||||
|
img_fmt = "mcl_compass_recovery_compass_%02d.png"
|
||||||
end
|
end
|
||||||
for i = 0, compass_frames - 1 do
|
for i = 0, compass_frames - 1 do
|
||||||
local itemstring = string.format(name_fmt, i)
|
local itemstring = string.format(name_fmt, i)
|
||||||
|
@ -289,3 +309,9 @@ minetest.register_craft({
|
||||||
{"mcl_core:stonebrickcarved", "mcl_core:stonebrickcarved", "mcl_core:stonebrickcarved"}
|
{"mcl_core:stonebrickcarved", "mcl_core:stonebrickcarved", "mcl_core:stonebrickcarved"}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
--set recovery meta
|
||||||
|
minetest.register_on_dieplayer(function(player)
|
||||||
|
local meta = player:get_meta();
|
||||||
|
meta:set_string("mcl_compass:recovery_pos",minetest.pos_to_string(player:get_pos()))
|
||||||
|
end)
|
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |