void Server::sendDetachedInventory(const std::string &name, u16 peer_id)
{
	if(m_detached_inventories.count(name) == 0){
		errorstream<<FUNCTION_NAME<<": \""<<name<<"\" not found"<<std::endl;
		return;
	}
	Inventory *inv = m_detached_inventories[name];

	std::ostringstream os(std::ios_base::binary);
	inv->serialize(os);

	MSGPACK_PACKET_INIT(TOCLIENT_DETACHED_INVENTORY, 2);
	PACK(TOCLIENT_DETACHED_INVENTORY_NAME, name);
	PACK(TOCLIENT_DETACHED_INVENTORY_DATA, os.str());

	if (peer_id != PEER_ID_INEXISTENT)
	{
		// Send as reliable
		m_clients.send(peer_id, 0, buffer, true);
	}
	else
	{
		m_clients.sendToAll(0,buffer,true);
	}
}
Esempio n. 2
0
void FurnaceNodeMetadata::serializeBody(std::ostream &os)
{
	m_inventory->serialize(os);
	os<<itos(m_fuel_totaltime*10)<<" ";
	os<<itos(m_fuel_time*10)<<" ";
	os<<itos(m_src_totaltime*10)<<" ";
	os<<itos(m_src_time*10)<<" ";
	os<<serializeJsonString(m_infotext);
}
Esempio n. 3
0
	void serializeBody(std::ostream &os)
	{
		m_inventory->serialize(os);
		os<<serializeLongString(m_text);
		os<<serializeString(m_owner);

		os<<serializeString(m_infotext);
		os<<serializeString(m_inventorydrawspec);
		writeU8(os, m_allow_text_input);
		writeU8(os, m_removal_disabled);
		writeU8(os, m_enforce_owner);

		int num_vars = m_stringvars.size();
		writeU32(os, num_vars);
		for(std::map<std::string, std::string>::iterator
				i = m_stringvars.begin(); i != m_stringvars.end(); i++){
			os<<serializeString(i->first);
			os<<serializeLongString(i->second);
		}
	}
Esempio n. 4
0
void LockingChestNodeMetadata::serializeBody(std::ostream &os)
{
	os<<serializeString(m_text);
	m_inventory->serialize(os);
}
Esempio n. 5
0
void ChestNodeMetadata::serializeBody(std::ostream &os)
{
	m_inventory->serialize(os);
}