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)
|
||||
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
|
||||
local px = math.random(-10, 10) * 2 - 1
|
||||
local pz = math.random(-10, 10) * 2
|
||||
local x = pod_size.x * px
|
||||
local z = pod_size.z * pz
|
||||
local y = half_pod.y + 1
|
||||
local x = fcsize.x * px + math.random(half_pod.x) + math_floor(half_pod.x / 2)
|
||||
local z = fcsize.z * pz + math.random(half_pod.z) + math_floor(half_pod.z / 2)
|
||||
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 node = minetest.get_node(pos)
|
||||
if node.name ~= "air" then
|
||||
player:setpos(pos)
|
||||
return true
|
||||
local noise = minetest.get_perlin(terrain_noise)
|
||||
if not noise then
|
||||
return
|
||||
end
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue