Add skybox to mineral waters

This commit is contained in:
Juraj Vajda 2024-02-04 23:18:28 -05:00
parent c06266787c
commit fbcd96eb11
2 changed files with 87 additions and 16 deletions

View File

@ -679,18 +679,55 @@ local skybox_defs = {
}, },
['everness:mineral_waters'] = { ['everness:mineral_waters'] = {
sky_parameters = { sky_parameters = {
type = 'regular', -- type = 'regular',
sky_color = { -- sky_color = {
day_sky = '#264890', -- day_sky = '#264890',
day_horizon = '#3884CF', -- day_horizon = '#3884CF',
dawn_sky = '#B4BAFA', -- dawn_sky = '#B4BAFA',
dawn_horizon = '#FDA47E', -- dawn_horizon = '#FDA47E',
night_sky = '#A3609E', -- night_sky = '#A3609E',
night_horizon = '#C7A8D9', -- night_horizon = '#C7A8D9',
fog_sun_tint = '#FDA47E', -- fog_sun_tint = '#FDA47E',
fog_moon_tint = '#FAE0EB' -- fog_moon_tint = '#FAE0EB'
} -- },
} type = 'skybox',
base_color = '#8099CC',
_day_base_color = '#8099CC',
_night_base_color = '#000714',
_textures_base = {
-- Y+ (top)
'everness_mineral_waters_skybox.png^[sheet:4x3:1,0',
-- Y- (bottom)
'everness_mineral_waters_skybox.png^[sheet:4x3:1,2',
-- X- (west)
'everness_mineral_waters_skybox.png^[sheet:4x3:0,1',
-- X+ (east)
'everness_mineral_waters_skybox.png^[sheet:4x3:2,1',
-- Z+ (north)
'everness_mineral_waters_skybox.png^[sheet:4x3:1,1',
-- Z- (south)
'everness_mineral_waters_skybox.png^[sheet:4x3:3,1',
},
textures = {
-- Y+ (top)
'everness_mineral_waters_skybox.png^[sheet:4x3:1,0',
-- Y- (bottom)
'everness_mineral_waters_skybox.png^[sheet:4x3:1,2',
-- X- (west)
'everness_mineral_waters_skybox.png^[sheet:4x3:0,1',
-- X+ (east)
'everness_mineral_waters_skybox.png^[sheet:4x3:2,1',
-- Z+ (north)
'everness_mineral_waters_skybox.png^[sheet:4x3:1,1',
-- Z- (south)
'everness_mineral_waters_skybox.png^[sheet:4x3:3,1',
},
clouds = false
},
star_parameters = {
count = 12000,
scale = 0.5
},
}, },
} }
@ -715,8 +752,15 @@ local timer = 0
minetest.register_globalstep(function(dtime) minetest.register_globalstep(function(dtime)
timer = timer + dtime timer = timer + dtime
if timer > 5 then if timer > 5 then
local players = minetest.get_connected_players() local players = minetest.get_connected_players()
local tod = minetest.get_timeofday()
local is_day = false
if tod > 0.2 and tod < 0.805 then
is_day = true
end
for _, player in ipairs(players) do for _, player in ipairs(players) do
if not player then if not player then
@ -728,6 +772,7 @@ minetest.register_globalstep(function(dtime)
local biome_data = minetest.get_biome_data(player_pos) local biome_data = minetest.get_biome_data(player_pos)
local player_biome_name = player_meta:get_string('everness_biome_name') local player_biome_name = player_meta:get_string('everness_biome_name')
local is_underground = player_meta:get_int('everness_is_underground') local is_underground = player_meta:get_int('everness_is_underground')
local player_is_day = player_meta:get_int('everness_is_day') == 1
if not biome_data then if not biome_data then
return return
@ -762,8 +807,10 @@ minetest.register_globalstep(function(dtime)
end end
end end
-- Change skybox params
if player_biome_name ~= biome_name then if player_biome_name ~= biome_name then
player_meta:set_string('everness_biome_name', biome_name) player_meta:set_string('everness_biome_name', biome_name)
player_biome_name = biome_name
if skybox_defs[biome_name] then if skybox_defs[biome_name] then
if skybox_defs[biome_name].sun_parameters then if skybox_defs[biome_name].sun_parameters then
@ -788,8 +835,7 @@ minetest.register_globalstep(function(dtime)
if skybox_defs[biome_name].star_parameters then if skybox_defs[biome_name].star_parameters then
player:set_stars(skybox_defs[biome_name].star_parameters) player:set_stars(skybox_defs[biome_name].star_parameters)
else else
-- passing empty object otherwise it will break on MT 5.6.0 player:set_stars()
player:set_stars({})
end end
if skybox_defs[biome_name].sky_parameters then if skybox_defs[biome_name].sky_parameters then
@ -806,13 +852,37 @@ minetest.register_globalstep(function(dtime)
else else
player:set_sun() player:set_sun()
player:set_moon() player:set_moon()
-- passing empty object otherwise it will break on MT 5.6.0 player:set_stars()
player:set_stars({})
player:set_sky() player:set_sky()
player:set_clouds() player:set_clouds()
end end
end end
-- change day/night params
if player_biome_name == biome_name and player_is_day ~= is_day then
if skybox_defs[biome_name] then
if skybox_defs[biome_name].sky_parameters then
if skybox_defs[biome_name].sky_parameters.type == 'skybox' then
player_meta:set_int('everness_is_day', is_day and 1 or 0)
if is_day then
for i, v in ipairs(skybox_defs[biome_name].sky_parameters.textures) do
skybox_defs[biome_name].sky_parameters.base_color = skybox_defs[biome_name].sky_parameters._day_base_color
skybox_defs[biome_name].sky_parameters.textures[i] = skybox_defs[biome_name].sky_parameters._textures_base[i]
end
else
for i, v in ipairs(skybox_defs[biome_name].sky_parameters.textures) do
skybox_defs[biome_name].sky_parameters.base_color = skybox_defs[biome_name].sky_parameters._night_base_color
skybox_defs[biome_name].sky_parameters.textures[i] = skybox_defs[biome_name].sky_parameters._textures_base[i] .. '^[contrast:0:-85'
end
end
player:set_sky(skybox_defs[biome_name].sky_parameters)
end
end
end
end
if player_pos.y <= -256 and is_underground == 0 or (is_underground ~= 0 and player_meta:get_string('everness_biome_name') ~= biome_name) then if player_pos.y <= -256 and is_underground == 0 or (is_underground ~= 0 and player_meta:get_string('everness_biome_name') ~= biome_name) then
-- hide sun, moon, stars ... underground -- hide sun, moon, stars ... underground
player_meta:set_int('everness_is_underground', 1) player_meta:set_int('everness_is_underground', 1)
@ -859,4 +929,5 @@ minetest.register_on_joinplayer(function(player, last_login)
player_meta:set_string('everness_biome_name', '') player_meta:set_string('everness_biome_name', '')
player_meta:set_int('everness_is_underground', 0) player_meta:set_int('everness_is_underground', 0)
player_meta:set_int('everness_timeofday', 0) player_meta:set_int('everness_timeofday', 0)
player_meta:set_int('everness_is_day', 1)
end) end)

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB