summaryrefslogtreecommitdiff
path: root/src/server.cpp
diff options
context:
space:
mode:
authorCraig Robbins <kde.psych@gmail.com>2014-11-14 18:05:34 +1000
committerCraig Robbins <kde.psych@gmail.com>2014-11-14 18:05:34 +1000
commit5b8855e83c0d1cc7aef21492e7fe862b7d06917e (patch)
treeb05139dcea07222cfa3fab23064eeef0076c8019 /src/server.cpp
parent92815ad54b23fe92742ebca7263bb227149248c1 (diff)
downloadminetest-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.cpp29
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);
}