aboutsummaryrefslogtreecommitdiff
path: root/src/inventory.cpp
Commit message (Collapse)AuthorAge
* Prevent infinite loop with invalid Inventory formatkwolekr2013-03-27
|
* Update Copyright YearsSfan52013-02-24
|
* Change Minetest-c55 to MinetestPilzAdam2013-02-24
|
* Remove "Unknown inventory identifier" deserialization errors, because they ↵Perttu Ahola2012-09-04
| | | | can break forward compatibility
* Add InventoryList width property & allow custom crafting grids.Ilya Zhuravlev2012-09-01
|
* Properly and efficiently use split utility headersPerttu Ahola2012-06-17
|
* Switch the license to be LGPLv2/later, with small parts still remaining as ↵Perttu Ahola2012-06-05
| | | | GPLv2/later, by agreement of major contributors
* Fix loading of legacy chestsPerttu Ahola2012-06-03
|
* NodeMetaRef:{to,from}_table and lua_api.txt additionsPerttu Ahola2012-06-03
|
* added PlayerSAO and RemotePlayer, removed ServerRemotePlayerKahrl2012-03-29
|
* tool and ToolItem apply item aliasesKahrl2012-01-22
|
* Client-side prediction of inventory changes, and some inventory menu fixesKahrl2012-01-22
|
* The huge item definition and item namespace unification patch (itemdef), see ↵Kahrl2012-01-12
| | | | http://c55.me/minetest/wiki/doku.php?id=changes:itemdef
* Add InvRef and InvStack (currently untested and unusable)Perttu Ahola2012-01-02
|
* Make ToolItem and MaterialItem to convert names by aliases at creation time ↵Perttu Ahola2011-12-04
| | | | too (necessary for eg. crafting)
* Convert CraftItems directly to the name pointed by alias; necessary due to ↵Perttu Ahola2011-12-04
| | | | lua definition table
* Show infotext for unknown items placed on groundPerttu Ahola2011-12-03
|
* Rename "NodeItem"/"ToolItem"/"CraftItem" to "node"/"tool"/"craft"Perttu Ahola2011-12-02
|
* Move ServerRemotePlayer to a separate filePerttu Ahola2011-12-02
|
* Fix loading of legacy MaterialItems (was loaded as a quite random type)Perttu Ahola2011-12-01
|
* Fix conditional bug in inventoryGiuseppe Bilotta2011-12-01
| | | | | | | A spurious semicolon after the conditional checking for the drop count to be not higher than the owned count caused the subsequent count = getCount() to be always executed. Fix by removing the extra semicolon.
* Load count 0 in itemstring as 1Perttu Ahola2011-12-01
|
* Remove content_inventory.{h,cpp}Perttu Ahola2011-11-29
|
* CraftItem rework and Lua interfaceKahrl2011-11-29
|
* Fix stuff in inventory.{cpp,h}Perttu Ahola2011-11-29
|
* Add IDropAction and related stuffKahrl2011-11-29
|
* Crafting definition in scriptsPerttu Ahola2011-11-29
|
* Improve item serializationPerttu Ahola2011-11-29
|
* Allow inputting nodename of MaterialItem in ItemSpec::checkItemPerttu Ahola2011-11-29
|
* Clean InventoryItem interface a bitPerttu Ahola2011-11-29
|
* Improved MaterialItem (stores nodename)Perttu Ahola2011-11-29
|
* Remove burn time definitions from FurnaceNodeMetadataPerttu Ahola2011-11-29
|
* Move cook result properly to ContentFeaturesPerttu Ahola2011-11-29
|
* Clean mapnode.h and fix other files accordinglyPerttu Ahola2011-11-29
|
* GameDef compilesPerttu Ahola2011-11-29
|
* Create framework for getting rid of global definitions of ↵Perttu Ahola2011-11-29
| | | | node/tool/item/whatever types
* Move tool stuff to tool.{h,cpp}Perttu Ahola2011-11-29
|
* Move ContentFeatures to mapnode_contentfeatures.{h,cpp} and clean stuffPerttu Ahola2011-11-29
|
* Scripting WIP: dynamic object stuffPerttu Ahola2011-11-29
|
* Scripting WIPPerttu Ahola2011-11-29
|
* Scripting WIPPerttu Ahola2011-11-29
|
* Improve inventory debug outputPerttu Ahola2011-10-17
|
* mobv2Perttu Ahola2011-10-15
|
* Convert any inventory item into a mesh, bring back ↵Kahrl2011-09-19
| | | | InventoryItem::getImageRay(), some const-correctness fixes
* Now SAOs will reflect changes to their temporary inventory objectJacobF2011-09-06
| | | | | Also, the temp item wasn't being deleted, might have been a memory leak. Now you will only eat 1 item off a stack
* If there was no source item in a furnace it would cause a segmentation fault.JacobF2011-08-30
|
* Merged 2 branches because they relied on each other.JacobF2011-08-25
| | | | | | | | | | | This one contains these changes from main c55: * Adds a function to check if there is room for a specific item * Using that, you can now pick up rats if you have a full inventory and a not full rat stack * Furnace would cook only 1 item if that item used the last available result slot, now it will continue * Furnace will say it's overloaded * Furnace won't wait until the next step to start on the next item - This caused small fuels to cook slower than meant to - Also caused furnaces to say they were out of fuel after finishing the last fuel item
* constify inventory item serializationGiuseppe Bilotta2011-08-11
|
* Some inventory const-ificationGiuseppe Bilotta2011-08-11
|
* Added MaterialItem conversion from old content type namespace to newPerttu Ahola2011-07-31
|
lass="hl opt">, 0, 0, 30001); /* * Try to use the bind_address for servers with no localhost address * For example: FreeBSD jails */ std::string bind_str = g_settings->get("bind_address"); try { bind_addr.Resolve(bind_str.c_str()); if (!bind_addr.isIPv6()) { address = bind_addr; } } catch (ResolveError &e) { } infostream << "** Creating server Connection" << std::endl; con::Connection server(proto_id, 512, 5.0, false, &hand_server); server.Serve(address); infostream << "** Creating client Connection" << std::endl; con::Connection client(proto_id, 512, 5.0, false, &hand_client); UASSERT(hand_server.count == 0); UASSERT(hand_client.count == 0); sleep_ms(50); Address server_address(127, 0, 0, 1, 30001); if (address != Address(0, 0, 0, 0, 30001)) { server_address = bind_addr; } infostream << "** running client.Connect()" << std::endl; client.Connect(server_address); sleep_ms(50); // Client should not have added client yet UASSERT(hand_client.count == 0); try { NetworkPacket pkt; infostream << "** running client.Receive()" << std::endl; client.Receive(&pkt); infostream << "** Client received: peer_id=" << pkt.getPeerId() << ", size=" << pkt.getSize() << std::endl; } catch (con::NoIncomingDataException &e) { } // Client should have added server now UASSERT(hand_client.count == 1); UASSERT(hand_client.last_id == 1); // Server should not have added client yet UASSERT(hand_server.count == 0); sleep_ms(100); try { NetworkPacket pkt; infostream << "** running server.Receive()" << std::endl; server.Receive(&pkt); infostream << "** Server received: peer_id=" << pkt.getPeerId() << ", size=" << pkt.getSize() << std::endl; } catch (con::NoIncomingDataException &e) { // No actual data received, but the client has // probably been connected } // Client should be the same UASSERT(hand_client.count == 1); UASSERT(hand_client.last_id == 1); // Server should have the client UASSERT(hand_server.count == 1); UASSERT(hand_server.last_id == 2); //sleep_ms(50); while (client.Connected() == false) { try { NetworkPacket pkt; infostream << "** running client.Receive()" << std::endl; client.Receive(&pkt); infostream << "** Client received: peer_id=" << pkt.getPeerId() << ", size=" << pkt.getSize() << std::endl; } catch (con::NoIncomingDataException &e) { } sleep_ms(50); } sleep_ms(50); try { NetworkPacket pkt; infostream << "** running server.Receive()" << std::endl; server.Receive(&pkt); infostream << "** Server received: peer_id=" << pkt.getPeerId() << ", size=" << pkt.getSize() << std::endl; } catch (con::NoIncomingDataException &e) { } /* Simple send-receive test */ { NetworkPacket pkt; pkt.putRawPacket((u8*) "Hello World !", 14, 0); Buffer<u8> sentdata = pkt.oldForgePacket(); infostream<<"** running client.Send()"<<std::endl; client.Send(PEER_ID_SERVER, 0, &pkt, true); sleep_ms(50); NetworkPacket recvpacket; infostream << "** running server.Receive()" << std::endl; server.Receive(&recvpacket); infostream << "** Server received: peer_id=" << pkt.getPeerId() << ", size=" << pkt.getSize() << ", data=" << (const char*)pkt.getU8Ptr(0) << std::endl; Buffer<u8> recvdata = pkt.oldForgePacket(); UASSERT(memcmp(*sentdata, *recvdata, recvdata.getSize()) == 0); } u16 peer_id_client = 2; /* Send a large packet */ { const int datasize = 30000; NetworkPacket pkt(0, datasize); for (u16 i=0; i<datasize; i++) { pkt << (u8) i/4; } infostream << "Sending data (size=" << datasize << "):"; for (int i = 0; i < datasize && i < 20; i++) { if (i % 2 == 0) infostream << " "; char buf[10]; snprintf(buf, 10, "%.2X", ((int)((const char *)pkt.getU8Ptr(0))[i]) & 0xff); infostream<<buf; } if (datasize > 20) infostream << "..."; infostream << std::endl; Buffer<u8> sentdata = pkt.oldForgePacket(); server.Send(peer_id_client, 0, &pkt, true); //sleep_ms(3000); Buffer<u8> recvdata; infostream << "** running client.Receive()" << std::endl; u16 peer_id = 132; u16 size = 0; bool received = false; u64 timems0 = porting::getTimeMs(); for (;;) { if (porting::getTimeMs() - timems0 > 5000 || received) break; try { NetworkPacket pkt; client.Receive(&pkt); size = pkt.getSize(); peer_id = pkt.getPeerId(); recvdata = pkt.oldForgePacket(); received = true; } catch (con::NoIncomingDataException &e) { } sleep_ms(10); } UASSERT(received); infostream << "** Client received: peer_id=" << peer_id << ", size=" << size << std::endl; infostream << "Received data (size=" << size << "): "; for (int i = 0; i < size && i < 20; i++) { if (i % 2 == 0) infostream << " "; char buf[10]; snprintf(buf, 10, "%.2X", ((int)(recvdata[i])) & 0xff); infostream << buf; } if (size > 20) infostream << "..."; infostream << std::endl; UASSERT(memcmp(*sentdata, *recvdata, recvdata.getSize()) == 0); UASSERT(peer_id == PEER_ID_SERVER); } // Check peer handlers UASSERT(hand_client.count == 1); UASSERT(hand_client.last_id == 1); UASSERT(hand_server.count == 1); UASSERT(hand_server.last_id == 2); }