DANGER!!! The player suffocates inside all blocks, unless noclip is enabled

This commit is contained in:
MoNTE48 2019-06-03 20:53:11 +02:00
parent 02e0ffb756
commit 8edbb66a05
6 changed files with 15 additions and 18 deletions

View File

@ -715,7 +715,7 @@ core.nodedef_default = {
liquid_alternative_flowing = "", liquid_alternative_flowing = "",
liquid_alternative_source = "", liquid_alternative_source = "",
liquid_viscosity = 0, liquid_viscosity = 0,
drowning = 0, drowning = 4,
light_source = 0, light_source = 0,
damage_per_second = 0, damage_per_second = 0,
selection_box = {type="regular"}, selection_box = {type="regular"},

View File

@ -181,9 +181,8 @@ core.register_entity(":__builtin:item", {
return return
end end
-- If node is nil (unloaded area), or node is not registered, or node is
-- walkably solid and item is resting on nodebox
local nn = node.name local nn = node.name
-- If node is not registered or node is walkably solid and resting on nodebox
local v = self.object:get_velocity() local v = self.object:get_velocity()
if not core.registered_nodes[nn] or (core.registered_nodes[nn].walkable and if not core.registered_nodes[nn] or (core.registered_nodes[nn].walkable and
core.get_item_group(nn, "slippery") == 0) and v.y == 0 then core.get_item_group(nn, "slippery") == 0) and v.y == 0 then

View File

@ -45,14 +45,14 @@ core.register_on_joinplayer(function(player)
local player_name = player:get_player_name() local player_name = player:get_player_name()
player_list[player_name] = player player_list[player_name] = player
if not minetest.is_singleplayer() then if not minetest.is_singleplayer() then
core.chat_send_all("*** " .. player_name .. " joined the game.") core.chat_send_all("=> " .. player_name .. " has joined the server")
end end
end) end)
core.register_on_leaveplayer(function(player, timed_out) core.register_on_leaveplayer(function(player, timed_out)
local player_name = player:get_player_name() local player_name = player:get_player_name()
player_list[player_name] = nil player_list[player_name] = nil
local announcement = "*** " .. player_name .. " left the game." local announcement = "<= " .. player_name .. " left the server"
if timed_out then if timed_out then
announcement = announcement .. " (timed out)" announcement = announcement .. " (timed out)"
end end

View File

@ -351,6 +351,7 @@ core.register_node(":air", {
floodable = true, floodable = true,
air_equivalent = true, air_equivalent = true,
drop = "", drop = "",
drowning = 0,
groups = {not_in_creative_inventory=1}, groups = {not_in_creative_inventory=1},
}) })
@ -367,6 +368,7 @@ core.register_node(":ignore", {
buildable_to = true, -- A way to remove accidentally placed ignores buildable_to = true, -- A way to remove accidentally placed ignores
air_equivalent = true, air_equivalent = true,
drop = "", drop = "",
drowning = 0,
groups = {not_in_creative_inventory=1}, groups = {not_in_creative_inventory=1},
}) })

View File

@ -921,7 +921,8 @@ void PlayerSAO::step(float dtime, bool send_recommended)
MapNode n = m_env->getMap().getNodeNoEx(p); MapNode n = m_env->getMap().getNodeNoEx(p);
const ContentFeatures &c = m_env->getGameDef()->ndef()->get(n); const ContentFeatures &c = m_env->getGameDef()->ndef()->get(n);
// If node generates drown // If node generates drown
if (c.drowning > 0 && m_hp > 0) { bool noclip = m_privs.count("noclip") && g_settings->getBool("noclip");
if (c.drowning > 0 && m_hp > 0 &&!noclip) {
if (m_breath > 0) if (m_breath > 0)
setBreath(m_breath - 1); setBreath(m_breath - 1);

View File

@ -965,7 +965,7 @@ static inline void create_formspec_menu(GUIFormSpecMenu **cur_formspec,
} }
#define SIZE_TAG "size[11,5.5,true]" #define SIZE_TAG "size[11,5.5]"
/******************************************************************************/ /******************************************************************************/
static void updateChat(Client &client, f32 dtime, bool show_debug, static void updateChat(Client &client, f32 dtime, bool show_debug,
@ -4741,7 +4741,7 @@ void Game::showPauseMenu()
#elif __IOS__ #elif __IOS__
float ypos = 1.5; float ypos = 1.5;
#else #else
float ypos = simple_singleplayer_mode ? 0.7f : 0.1f; float ypos = simple_singleplayer_mode ? 0.5f : 0.1f;
#endif #endif
std::ostringstream os; std::ostringstream os;
@ -4750,16 +4750,11 @@ void Game::showPauseMenu()
<< "button_exit[3.5," << (ypos++) << ";4,0.5;btn_continue;" << "button_exit[3.5," << (ypos++) << ";4,0.5;btn_continue;"
<< strgettext("Continue") << "]"; << strgettext("Continue") << "]";
if (!simple_singleplayer_mode) {
#if !defined(__ANDROID__) && !defined(__IOS__) #if !defined(__ANDROID__) && !defined(__IOS__)
if (!simple_singleplayer_mode) {
os << "button_exit[3.5," << (ypos++) << ";4,0.5;btn_change_password;" os << "button_exit[3.5," << (ypos++) << ";4,0.5;btn_change_password;"
<< strgettext("Change Password") << "]"; << strgettext("Change Password") << "]";
#endif
} else {
os << "field[5.1,0;4,1.0;;" << strgettext("Pause") << ";]";
} }
#if !defined(__ANDROID__) && !defined(__IOS__)
os << "button_exit[3.5," << (ypos++) << ";4,0.5;btn_sound;" os << "button_exit[3.5," << (ypos++) << ";4,0.5;btn_sound;"
<< strgettext("Sound Volume") << "]"; << strgettext("Sound Volume") << "]";
os << "button_exit[3.5," << (ypos++) << ";4,0.5;btn_key_config;" os << "button_exit[3.5," << (ypos++) << ";4,0.5;btn_key_config;"