add setting for new players

master^2
unknown 2021-10-30 19:49:03 -04:00
parent 4483859012
commit 3aaa80c433
3 changed files with 32 additions and 15 deletions

View File

@ -5,6 +5,12 @@ Makes it possible to permanently have day/night without changing the game time.
Type `/ptime` to either enable permanent daylight, permanent night or disable permanent time.
Settings
--------
ptime.default in minetest.conf can be set to day/night for new players.
The default is disabled
Optional Dependencies
--------------
unified_inventory

View File

@ -3,28 +3,31 @@ minetest.register_privilege("daylight", {
give_to_singleplayer = false,
})
local data = {
day = 1,
night = 0.1
}
local function ptime(name)
local player = minetest.get_player_by_name(name)
local pmeta = player:get_meta()
if not pmeta:get("ptime") then
pmeta:set_string("ptime", "day")
player:override_day_night_ratio(1)
minetest.chat_send_player(name, "-!- Perma Day has been enabled")
minetest.chat_send_player(name, "-!- Perma day has been enabled")
elseif pmeta:get("ptime") == "day" then
pmeta:set_string("ptime", "night")
player:override_day_night_ratio(.1)
minetest.chat_send_player(name, "-!- Perma Night has been enabled")
minetest.chat_send_player(name, "-!- Perma night has been enabled")
elseif pmeta:get("ptime") == "night" then
pmeta:set_string("ptime", nil)
player:override_day_night_ratio(nil)
minetest.chat_send_player(name, "-!- Perma Time has been disabled")
minetest.chat_send_player(name, "-!- Perma time has been disabled")
end
end
minetest.register_chatcommand("ptime", {
privs = {
daylight = true,
},
privs = {daylight = true},
description = ("Set a permanent day time"),
func = function(name)
if not minetest.get_player_by_name(name) then
@ -34,18 +37,25 @@ minetest.register_chatcommand("ptime", {
end
})
minetest.register_on_joinplayer(function(player)
local pname = player:get_player_name()
local pmeta = player:get_meta()
if pmeta:get_string("ptime") == "day" then
player:override_day_night_ratio(1)
minetest.chat_send_player(pname, "-!- Perma Day is enabled")
elseif pmeta:get_string("ptime") == "night" then
player:override_day_night_ratio(".1")
minetest.chat_send_player(pname, "-!- Perma Night is enabled")
minetest.register_on_joinplayer(function(player, last_login)
if not last_login then return end
local psetting = player:get_meta():get("ptime")
if psetting then
player:override_day_night_ratio(data[psetting])
minetest.chat_send_player(player:get_player_name(), "-!- Perma " .. psetting .. " is enabled")
end
end)
local defaultnp = minetest.settings:get("ptime.default")
if defaultnp and (defaultnp == "day" or defaultnp == "night") then
minetest.register_on_newplayer(function(player)
player:get_meta():set_string("ptime", defaultnp)
player:override_day_night_ratio(data[defaultnp])
minetest.chat_send_player(player:get_player_name(), "-!- Perma " .. defaultnp .. " is enabled")
end)
end
if minetest.global_exists("unified_inventory") then
unified_inventory.register_button("ptime", {
type = "image",

1
settingtypes.txt Normal file
View File

@ -0,0 +1 @@
ptime.default (default for new players [day/night]) string