diff --git a/src/servercommand.cpp b/src/servercommand.cpp
index 3c6868e36d8392818e09999b477ced1b15676fc5..f415c86ce34b459401cb911465a5646a6cafcb71 100644
--- a/src/servercommand.cpp
+++ b/src/servercommand.cpp
@@ -222,7 +222,11 @@ void cmd_teleport(std::wostringstream &os,
 			<<PP(ctx->player->getPosition()/BS)<<" to "
 			<<PP(dest/BS)<<std::endl;
 
-	ctx->player->setPosition(dest);
+	//ctx->player->setPosition(dest);
+
+	// Use the ServerActiveObject interface of ServerRemotePlayer
+	ServerRemotePlayer *srp = (ServerRemotePlayer*)ctx->player;
+	srp->setPos(dest);
 	ctx->server->SendMovePlayer(ctx->player);
 
 	os<< L"-!- Teleported.";