Fix spawns.
parent
60d4f91e57
commit
a380aad83b
|
@ -0,0 +1,142 @@
|
||||||
|
--minetest.register_chatcommand("armor", {
|
||||||
|
-- params = "",
|
||||||
|
-- description = "Display your armor values",
|
||||||
|
-- privs = {},
|
||||||
|
-- func = function(player_name, param)
|
||||||
|
-- if not (player_name and type(player_name) == 'string' and player_name ~= '' and fun_caves.db.status) then
|
||||||
|
-- return
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- local player = minetest.get_player_by_name(player_name)
|
||||||
|
-- if not player then
|
||||||
|
-- return
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- local armor = player:get_armor_groups()
|
||||||
|
-- if armor then
|
||||||
|
-- minetest.chat_send_player(player_name, "Armor:")
|
||||||
|
-- for group, value in pairs(armor) do
|
||||||
|
-- minetest.chat_send_player(player_name, " "..group.." "..value)
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- if fun_caves.db.status[player_name].armor_elixir then
|
||||||
|
-- local armor_time = fun_caves.db.status[player_name].armor_elixir.remove
|
||||||
|
-- local game_time = minetest.get_gametime()
|
||||||
|
-- if not (armor_time and type(armor_time) == 'number' and game_time and type(game_time) == 'number') then
|
||||||
|
-- return
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- local min = math.floor(math.max(0, armor_time - game_time) / 60)
|
||||||
|
-- minetest.chat_send_player(player_name, "Your armor elixir will expire in "..min..' minutes.')
|
||||||
|
-- end
|
||||||
|
-- end
|
||||||
|
-- end,
|
||||||
|
--})
|
||||||
|
|
||||||
|
|
||||||
|
--minetest.register_chatcommand("setspawn", {
|
||||||
|
-- params = "",
|
||||||
|
-- description = "change your spawn position",
|
||||||
|
-- privs = {},
|
||||||
|
-- func = function(player_name, param)
|
||||||
|
-- if not (player_name and type(player_name) == 'string' and player_name ~= '') then
|
||||||
|
-- return
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- local player = minetest.get_player_by_name(player_name)
|
||||||
|
-- if not player then
|
||||||
|
-- return
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- local pos = player:getpos()
|
||||||
|
-- beds.spawn[player_name] = pos
|
||||||
|
-- minetest.chat_send_player(player_name, 'Your spawn position has been changed.')
|
||||||
|
-- end,
|
||||||
|
--})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_chatcommand("fixlight", {
|
||||||
|
params = "<radius>",
|
||||||
|
description = "attempt to fix light bugs",
|
||||||
|
privs = {},
|
||||||
|
func = function(player_name, param)
|
||||||
|
if not (player_name and type(player_name) == 'string' and player_name ~= '') then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local privs = minetest.check_player_privs(player_name, {server=true})
|
||||||
|
if not privs then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
print('Loud Walking: '..player_name..' used the fixlight command')
|
||||||
|
local player = minetest.get_player_by_name(player_name)
|
||||||
|
if not player then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local pos = player:getpos()
|
||||||
|
if not pos then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
pos = vector.round(pos)
|
||||||
|
|
||||||
|
local radius = tonumber(param) or 50
|
||||||
|
radius = math.floor(radius)
|
||||||
|
local minp = vector.subtract(pos, radius)
|
||||||
|
local maxp = vector.add(pos, radius)
|
||||||
|
|
||||||
|
local vm = minetest.get_voxel_manip(minp, maxp)
|
||||||
|
if not vm then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
--vm:set_lighting({day = 0, night = 0}, minp, maxp)
|
||||||
|
vm:calc_lighting(minp, maxp, false)
|
||||||
|
vm:update_liquids()
|
||||||
|
vm:write_to_map()
|
||||||
|
vm:update_map()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
--minetest.register_chatcommand("sleep", {
|
||||||
|
-- params = "",
|
||||||
|
-- description = "Sleep on the ground",
|
||||||
|
-- privs = {},
|
||||||
|
-- func = function(player_name, param)
|
||||||
|
-- local player = minetest.get_player_by_name(player_name)
|
||||||
|
-- if not (player and beds) then
|
||||||
|
-- return
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- if (beds.player and beds.player[player_name]) then
|
||||||
|
-- minetest.chat_send_player(player_name, 'You can\'t sleep.')
|
||||||
|
-- return
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- local pos = player:getpos()
|
||||||
|
-- if not pos then
|
||||||
|
-- return
|
||||||
|
-- end
|
||||||
|
-- pos = vector.round(pos)
|
||||||
|
--
|
||||||
|
-- local status, err = pcall(beds.on_rightclick, pos, player)
|
||||||
|
--
|
||||||
|
-- if status then
|
||||||
|
-- minetest.after(5, function()
|
||||||
|
-- local time = minetest.get_timeofday()
|
||||||
|
-- if not time or time < 0.23 or time > 0.3 then
|
||||||
|
-- return
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- local hp = player:get_hp()
|
||||||
|
-- if hp and type(hp) == 'number' then
|
||||||
|
-- player:set_hp(hp - 1)
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- minetest.chat_send_player(player_name, 'You\'d sleep better in a bed.')
|
||||||
|
-- end)
|
||||||
|
-- end
|
||||||
|
-- end,
|
||||||
|
--})
|
36
mapgen.lua
36
mapgen.lua
|
@ -922,18 +922,38 @@ table.insert(minetest.registered_on_generateds, 1, pgenerate)
|
||||||
|
|
||||||
|
|
||||||
function loud_walking.respawn(player)
|
function loud_walking.respawn(player)
|
||||||
|
local player_name = player:get_player_name()
|
||||||
|
if not player_name then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if beds and beds.spawn and beds.spawn[player_name] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
local px = math.random(-10, 10) * 2 - 1
|
local px = math.random(-10, 10) * 2 - 1
|
||||||
local pz = math.random(-10, 10) * 2
|
local pz = math.random(-10, 10) * 2
|
||||||
local x = pod_size.x * px
|
local x = fcsize.x * px + math.random(half_pod.x) + math_floor(half_pod.x / 2)
|
||||||
local z = pod_size.z * pz
|
local z = fcsize.z * pz + math.random(half_pod.z) + math_floor(half_pod.z / 2)
|
||||||
local y = half_pod.y + 1
|
local y = half_pod.y + 5
|
||||||
|
local biome = get_biome(x,y,z)
|
||||||
|
if biome then
|
||||||
|
local terrain_scale = biomes[biome].terrain_scale
|
||||||
|
|
||||||
local pos = {x=x,y=y,z=z}
|
local noise = minetest.get_perlin(terrain_noise)
|
||||||
local node = minetest.get_node(pos)
|
if not noise then
|
||||||
if node.name ~= "air" then
|
return
|
||||||
player:setpos(pos)
|
end
|
||||||
return true
|
|
||||||
|
local height = noise:get2d({x=x, y=z}) * terrain_scale
|
||||||
|
local y = height + half_pod.y + 5
|
||||||
|
local pos = {x=x,y=y,z=z}
|
||||||
|
local node = minetest.get_node_or_nil(pos)
|
||||||
|
if not node or node.name == 'air' then
|
||||||
|
player:setpos(pos)
|
||||||
|
return true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue