forked from MineClone5/MineClone5
Handle player void handling in playerplus
This commit is contained in:
parent
0b375f00cd
commit
0f2787cd16
|
@ -21,8 +21,8 @@ minetest.register_node("mcl_core:barrier", {
|
||||||
on_blast = function() end,
|
on_blast = function() end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- The harmless void directly below the bottom bedrock layer. It doesn't hurt.
|
-- The void below the bedrock. Void damage is handled in playerplus
|
||||||
minetest.register_node("mcl_core:void_top", {
|
minetest.register_node("mcl_core:void", {
|
||||||
description = "Void",
|
description = "Void",
|
||||||
drawtype = "airlike",
|
drawtype = "airlike",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
|
@ -30,8 +30,8 @@ minetest.register_node("mcl_core:void_top", {
|
||||||
walkable = false,
|
walkable = false,
|
||||||
floodable = false,
|
floodable = false,
|
||||||
buildable_to = false,
|
buildable_to = false,
|
||||||
inventory_image = "default_barrier.png",
|
inventory_image = "unknown_node.png",
|
||||||
wield_image = "default_barrier.png",
|
wield_image = "unknown_node.png",
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
|
@ -39,26 +39,6 @@ minetest.register_node("mcl_core:void_top", {
|
||||||
on_blast = function() end,
|
on_blast = function() end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- The deadly void way below bedrock. It hurts very much!
|
|
||||||
minetest.register_node("mcl_core:void_deep", {
|
|
||||||
description = "Deep Void",
|
|
||||||
drawtype = "airlike",
|
|
||||||
paramtype = "light",
|
|
||||||
pointable = false,
|
|
||||||
walkable = false,
|
|
||||||
floodable = false,
|
|
||||||
buildable_to = false,
|
|
||||||
inventory_image = "default_barrier.png",
|
|
||||||
wield_image = "default_barrier.png",
|
|
||||||
stack_max = 64,
|
|
||||||
sunlight_propagates = true,
|
|
||||||
is_ground_content = false,
|
|
||||||
groups = { not_in_creative_inventory = 1 },
|
|
||||||
on_blast = function() end,
|
|
||||||
-- Minecraft Wiki: 4 damage each 0.5 seconds
|
|
||||||
damage_per_second = 8,
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_node("mcl_core:stone", {
|
minetest.register_node("mcl_core:stone", {
|
||||||
description = "Stone",
|
description = "Stone",
|
||||||
tiles = {"default_stone.png"},
|
tiles = {"default_stone.png"},
|
||||||
|
|
|
@ -479,8 +479,7 @@ minetest.register_on_generated(function(minp, maxp)
|
||||||
local data = vm:get_data()
|
local data = vm:get_data()
|
||||||
local area = VoxelArea:new({MinEdge=emin, MaxEdge=emax})
|
local area = VoxelArea:new({MinEdge=emin, MaxEdge=emax})
|
||||||
local c_bedrock = minetest.get_content_id("mcl_core:bedrock")
|
local c_bedrock = minetest.get_content_id("mcl_core:bedrock")
|
||||||
local c_void_top = minetest.get_content_id("mcl_core:void_top")
|
local c_void = minetest.get_content_id("mcl_core:void")
|
||||||
local c_void_deep = minetest.get_content_id("mcl_core:void_deep")
|
|
||||||
local c_air = minetest.get_content_id("air")
|
local c_air = minetest.get_content_id("air")
|
||||||
|
|
||||||
for y = minp.y, math.min(maxp.y, BEDROCK_MAX) do
|
for y = minp.y, math.min(maxp.y, BEDROCK_MAX) do
|
||||||
|
@ -503,10 +502,8 @@ minetest.register_on_generated(function(minp, maxp)
|
||||||
elseif y == BEDROCK_MAX -4 then
|
elseif y == BEDROCK_MAX -4 then
|
||||||
-- 100%
|
-- 100%
|
||||||
setdata = c_bedrock
|
setdata = c_bedrock
|
||||||
elseif y < BEDROCK_MIN and y > BEDROCK_MIN - 64 then
|
elseif y < BEDROCK_MIN then
|
||||||
setdata = c_void_top
|
setdata = c_void
|
||||||
elseif y <= BEDROCK_MIN - 64 then
|
|
||||||
setdata = c_void_deep
|
|
||||||
end
|
end
|
||||||
if setdata then
|
if setdata then
|
||||||
data[p_pos] = setdata
|
data[p_pos] = setdata
|
||||||
|
|
|
@ -115,6 +115,20 @@ minetest.register_globalstep(function(dtime)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Apply black sky in the Void and deal Void damage
|
||||||
|
if pos.y < -64 then
|
||||||
|
-- Player reached the void, set black sky box
|
||||||
|
player:set_sky("#000000", "plain")
|
||||||
|
else
|
||||||
|
player:set_sky(nil, "regular")
|
||||||
|
end
|
||||||
|
if pos.y < -64 -64 then
|
||||||
|
-- Player is deep into the void, deal void damage
|
||||||
|
if player:get_hp() > 0 then
|
||||||
|
player:set_hp(player:get_hp() - 4)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end)
|
end)
|
||||||
|
|
Loading…
Reference in New Issue