diff options
author | Craig Robbins <kde.psych@gmail.com> | 2014-11-14 18:05:34 +1000 |
---|---|---|
committer | Craig Robbins <kde.psych@gmail.com> | 2014-11-14 18:05:34 +1000 |
commit | 5b8855e83c0d1cc7aef21492e7fe862b7d06917e (patch) | |
tree | b05139dcea07222cfa3fab23064eeef0076c8019 /src/server.cpp | |
parent | 92815ad54b23fe92742ebca7263bb227149248c1 (diff) | |
download | minetest-5b8855e83c0d1cc7aef21492e7fe862b7d06917e.tar.gz minetest-5b8855e83c0d1cc7aef21492e7fe862b7d06917e.tar.bz2 minetest-5b8855e83c0d1cc7aef21492e7fe862b7d06917e.zip |
Remove most exceptions from getNode() (and variants)
Diffstat (limited to 'src/server.cpp')
-rw-r--r-- | src/server.cpp | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/src/server.cpp b/src/server.cpp index 2694f1bbe..d1f3997e9 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -2424,17 +2424,18 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) somebody is cheating, by checking the timing. */ MapNode n(CONTENT_IGNORE); - try - { - n = m_env->getMap().getNode(p_under); - } - catch(InvalidPositionException &e) - { + bool pos_ok; + n = m_env->getMap().getNodeNoEx(p_under, &pos_ok); + if (pos_ok) + n = m_env->getMap().getNodeNoEx(p_under, &pos_ok); + + if (!pos_ok) { infostream<<"Server: Not punching: Node not found." <<" Adding block to emerge queue." <<std::endl; m_emerge->enqueueBlockEmerge(peer_id, getNodeBlockPos(p_above), false); } + if(n.getContent() != CONTENT_IGNORE) m_script->node_on_punch(p_under, n, playersao, pointed); // Cheat prevention @@ -2479,16 +2480,12 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) // Only digging of nodes if(pointed.type == POINTEDTHING_NODE) { - MapNode n(CONTENT_IGNORE); - try - { - n = m_env->getMap().getNode(p_under); - } - catch(InvalidPositionException &e) - { - infostream<<"Server: Not finishing digging: Node not found." - <<" Adding block to emerge queue." - <<std::endl; + bool pos_ok; + MapNode n = m_env->getMap().getNodeNoEx(p_under, &pos_ok); + if (!pos_ok) { + infostream << "Server: Not finishing digging: Node not found." + << " Adding block to emerge queue." + << std::endl; m_emerge->enqueueBlockEmerge(peer_id, getNodeBlockPos(p_above), false); } |