summaryrefslogtreecommitdiff
path: root/src/servercommand.cpp
diff options
context:
space:
mode:
authorKahrl <kahrl@gmx.net>2012-03-19 03:04:16 +0100
committerPerttu Ahola <celeron55@gmail.com>2012-03-29 14:05:45 +0300
commitf8c3743991a6897c7133bf35dc2699b8b5f9df7c (patch)
treee856506d9c96d572d1a3b0a58edf00f0d70cba43 /src/servercommand.cpp
parent072c265c301d3336203b77b8b1651fdacf3a7682 (diff)
downloadminetest-f8c3743991a6897c7133bf35dc2699b8b5f9df7c.tar.gz
minetest-f8c3743991a6897c7133bf35dc2699b8b5f9df7c.tar.bz2
minetest-f8c3743991a6897c7133bf35dc2699b8b5f9df7c.zip
added PlayerSAO and RemotePlayer, removed ServerRemotePlayer
Diffstat (limited to 'src/servercommand.cpp')
-rw-r--r--src/servercommand.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/servercommand.cpp b/src/servercommand.cpp
index e2e84bacb..c5b242b2e 100644
--- a/src/servercommand.cpp
+++ b/src/servercommand.cpp
@@ -20,6 +20,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "utility.h"
#include "settings.h"
#include "main.h" // For g_settings
+#include "content_sao.h"
#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
@@ -216,20 +217,26 @@ void cmd_teleport(std::wostringstream &os,
return;
}
- v3f dest(stoi(coords[0])*10, stoi(coords[1])*10, stoi(coords[2])*10);
+ v3f dest(stoi(coords[0])*BS, stoi(coords[1])*BS, stoi(coords[2])*BS);
actionstream<<ctx->player->getName()<<" teleports from "
<<PP(ctx->player->getPosition()/BS)<<" to "
<<PP(dest/BS)<<std::endl;
- //ctx->player->setPosition(dest);
-
- // Use the ServerActiveObject interface of ServerRemotePlayer
- ServerRemotePlayer *srp = static_cast<ServerRemotePlayer*>(ctx->player);
- srp->setPos(dest);
- ctx->server->SendMovePlayer(ctx->player);
-
- os<< L"-!- Teleported.";
+ // Use the ServerActiveObject interface of RemotePlayer
+ // This forces a position change on the client
+ ServerActiveObject *sao = ctx->player->getPlayerSAO();
+ if(sao)
+ {
+ sao->setPos(dest);
+ os<< L"-!- Teleported.";
+ }
+ else
+ {
+ errorstream<<"Teleport failed, player object not found!"
+ <<std::endl;
+ os<< L"-!- Teleport failed.";
+ }
}
void cmd_banunban(std::wostringstream &os, ServerCommandContext *ctx)