1
0

- implemented separated inventory for creative mode (cSurvivalInventory and cCreativeInventory)

(Separation is not perfect yet, because maybe there are some mayor changes needed :D)
- implemented CreativeInventoryAction (was mistakenly called CreateInventoryAction)
-> Fixed meta data for creative selected blocks
->->Slabs/Steps are now placed correctly
- slabs can now be build to a double slab
- fixed a bug in the inventory which put items with different meta values in the same slot

git-svn-id: http://mc-server.googlecode.com/svn/trunk@160 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
lapayo94@gmail.com 2012-01-01 04:55:17 +00:00
parent 4f176ee685
commit d7068b35a8
19 changed files with 413 additions and 243 deletions

View File

@ -224,6 +224,7 @@
<ClCompile Include="..\Source\cChunkMap.cpp" />
<ClCompile Include="..\source\cCow.cpp" />
<ClCompile Include="..\source\cCraftingWindow.cpp" />
<ClCompile Include="..\source\cCreativeInventory.cpp" />
<ClCompile Include="..\source\cCreeper.cpp" />
<ClCompile Include="..\source\cCriticalSection.cpp" />
<ClCompile Include="..\source\cCuboid.cpp" />
@ -273,6 +274,7 @@
<ClCompile Include="..\source\cSpider.cpp" />
<ClCompile Include="..\source\cSquid.cpp" />
<ClCompile Include="..\source\cStringMap.cpp" />
<ClCompile Include="..\source\cSurvivalInventory.cpp" />
<ClCompile Include="..\Source\cTCPLink.cpp" />
<ClCompile Include="..\source\cThread.cpp" />
<ClCompile Include="..\source\cTimer.cpp" />
@ -318,7 +320,7 @@
<ClCompile Include="..\source\packets\cPacket_DestroyEntity.cpp" />
<ClCompile Include="..\source\packets\cPacket_Disconnect.cpp" />
<ClCompile Include="..\source\packets\cPacket_EntityEquipment.cpp" />
<ClCompile Include="..\source\packets\cPacket_CreateInventoryAction.cpp" />
<ClCompile Include="..\source\packets\cPacket_CreativeInventoryAction.cpp" />
<ClCompile Include="..\source\packets\cPacket_Explosion.cpp" />
<ClCompile Include="..\source\packets\cPacket_ItemData.cpp" />
<ClCompile Include="..\source\packets\cPacket_NewInvalidState.cpp" />
@ -373,6 +375,7 @@
<ClInclude Include="..\Source\cChunkMap.h" />
<ClInclude Include="..\source\cCow.h" />
<ClInclude Include="..\source\cCraftingWindow.h" />
<ClInclude Include="..\source\cCreativeInventory.h" />
<ClInclude Include="..\source\cCreeper.h" />
<ClInclude Include="..\Source\cCriticalSection.h" />
<ClInclude Include="..\source\cEnderman.h" />
@ -422,6 +425,7 @@
<ClInclude Include="..\source\cSquid.h" />
<ClInclude Include="..\source\cStairs.h" />
<ClInclude Include="..\source\cStringMap.h" />
<ClInclude Include="..\source\cSurvivalInventory.h" />
<ClInclude Include="..\Source\cTCPLink.h" />
<ClInclude Include="..\source\cGenSettings.h" />
<ClInclude Include="..\source\cThread.h" />
@ -479,7 +483,7 @@
<ClInclude Include="..\source\packets\cPacket_DestroyEntity.h" />
<ClInclude Include="..\source\packets\cPacket_Disconnect.h" />
<ClInclude Include="..\source\packets\cPacket_EntityEquipment.h" />
<ClInclude Include="..\source\packets\cPacket_CreateInventoryAction.h" />
<ClInclude Include="..\source\packets\cPacket_CreativeInventoryAction.h" />
<ClInclude Include="..\source\packets\cPacket_Explosion.h" />
<ClInclude Include="..\source\packets\cPacket_ItemData.h" />
<ClInclude Include="..\source\packets\cPacket_NewInvalidState.h" />

View File

@ -283,9 +283,6 @@
<Filter Include="Packets\cPacket_EntityEquipment">
<UniqueIdentifier>{0f48e5f8-ea4d-41dc-ab9e-750c5912c778}</UniqueIdentifier>
</Filter>
<Filter Include="Packets\cPacket_CreateInventoryAction">
<UniqueIdentifier>{0c47e5f8-ea4d-40dc-ac8e-740c5512c768}</UniqueIdentifier>
</Filter>
<Filter Include="Packets\cPacket_NewInvalidState">
<UniqueIdentifier>{0c12e5f5-ea4d-10dc-ac7e-540c5562c767}</UniqueIdentifier>
</Filter>
@ -442,6 +439,15 @@
<Filter Include="Simulator\cSimulator\cSandSimulator">
<UniqueIdentifier>{c5389fa9-20dd-4c52-ac16-2ef0a1115cf1}</UniqueIdentifier>
</Filter>
<Filter Include="Packets\cPacket_CreativeInventoryAction">
<UniqueIdentifier>{0c47e5f8-ea4d-40dc-ac8e-740c5512c768}</UniqueIdentifier>
</Filter>
<Filter Include="cInventory\cSurvivalInventory">
<UniqueIdentifier>{a471def4-c86d-4cc1-bcbb-1004731690bb}</UniqueIdentifier>
</Filter>
<Filter Include="cInventory\cCreativeInventory">
<UniqueIdentifier>{69e6a927-8e49-4d39-af88-f587d17bb8a3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\source\cServer.cpp">
@ -724,9 +730,6 @@
<ClCompile Include="..\source\packets\cPacket_EntityEquipment.cpp">
<Filter>Packets\cPacket_EntityEquipment</Filter>
</ClCompile>
<ClCompile Include="..\source\packets\cPacket_CreateInventoryAction.cpp">
<Filter>Packets\cPacket_CreateInventoryAction</Filter>
</ClCompile>
<ClCompile Include="..\source\packets\cPacket_NewInvalidState.cpp">
<Filter>Packets\cPacket_NewInvalidState</Filter>
</ClCompile>
@ -880,6 +883,15 @@
<ClCompile Include="..\source\cFireSimulator.cpp">
<Filter>Simulator\cSimulator\cFireSimulator</Filter>
</ClCompile>
<ClCompile Include="..\source\packets\cPacket_CreativeInventoryAction.cpp">
<Filter>Packets\cPacket_CreativeInventoryAction</Filter>
</ClCompile>
<ClCompile Include="..\source\cCreativeInventory.cpp">
<Filter>cInventory\cCreativeInventory</Filter>
</ClCompile>
<ClCompile Include="..\source\cSurvivalInventory.cpp">
<Filter>cInventory\cSurvivalInventory</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\source\cServer.h">
@ -1194,9 +1206,6 @@
<ClInclude Include="..\source\packets\cPacket_EntityEquipment.h">
<Filter>Packets\cPacket_EntityEquipment</Filter>
</ClInclude>
<ClInclude Include="..\source\packets\cPacket_CreateInventoryAction.h">
<Filter>Packets\cPacket_CreateInventoryAction</Filter>
</ClInclude>
<ClInclude Include="..\source\packets\cPacket_NewInvalidState.h">
<Filter>Packets\cPacket_NewInvalidState</Filter>
</ClInclude>
@ -1353,6 +1362,15 @@
<ClInclude Include="..\source\cFireSimulator.h">
<Filter>Simulator\cSimulator\cFireSimulator</Filter>
</ClInclude>
<ClInclude Include="..\source\packets\cPacket_CreativeInventoryAction.h">
<Filter>Packets\cPacket_CreativeInventoryAction</Filter>
</ClInclude>
<ClInclude Include="..\source\cCreativeInventory.h">
<Filter>cInventory\cCreativeInventory</Filter>
</ClInclude>
<ClInclude Include="..\source\cSurvivalInventory.h">
<Filter>cInventory\cSurvivalInventory</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\source\AllToLua.pkg">

View File

@ -89,6 +89,8 @@ MCServer : \
build/cGroup.o\
build/cGroupManager.o\
build/cInventory.o\
build/cCreativeInventory.o\
build/cSurvivalInventory.o\
build/cLog.o\
build/cMonster.o\
build/cAggressiveMonster.o\
@ -138,7 +140,7 @@ MCServer : \
build/cPacket_DestroyEntity.o\
build/cPacket_Disconnect.o\
build/cPacket_EntityEquipment.o\
build/cPacket_CreateInventoryAction.o\
build/cPacket_CreativeInventoryAction.o\
build/cPacket_NewInvalidState.o\
build/cPacket_Thunderbolt.o\
build/cPacket_EntityLook.o\
@ -293,6 +295,8 @@ MCServer : \
build/cGroup.o\
build/cGroupManager.o\
build/cInventory.o\
build/cCreativeInventory.o\
build/cSurvivalInventory.o\
build/cLog.o\
build/cMonster.o\
build/cAggressiveMonster.o\
@ -342,7 +346,7 @@ MCServer : \
build/cPacket_DestroyEntity.o\
build/cPacket_Disconnect.o\
build/cPacket_EntityEquipment.o\
build/cPacket_CreateInventoryAction.o\
build/cPacket_CreativeInventoryAction.o\
build/cPacket_NewInvalidState.o\
build/cPacket_Thunderbolt.o\
build/cPacket_EntityLook.o\
@ -500,6 +504,8 @@ clean :
build/cGroup.o\
build/cGroupManager.o\
build/cInventory.o\
build/cCreativeInventory.o\
build/cSurvivalInventory.o\
build/cLog.o\
build/cMonster.o\
build/cAggressiveMonster.o\
@ -549,7 +555,7 @@ clean :
build/cPacket_DestroyEntity.o\
build/cPacket_Disconnect.o\
build/cPacket_EntityEquipment.o\
build/cPacket_CreateInventoryAction.o\
build/cPacket_CreativeInventoryAction.o\
build/cPacket_NewInvalidState.o\
build/cPacket_Thunderbolt.o\
build/cPacket_EntityLook.o\
@ -770,6 +776,12 @@ build/cGroupManager.o : source/cGroupManager.cpp
# Item # 21 -- cInventory --
build/cInventory.o : source/cInventory.cpp
$(CC) $(CC_OPTIONS) source/cInventory.cpp -c $(INCLUDE) -o build/cInventory.o
build/cCreativeInventory.o : source/cCreativeInventory.cpp
$(CC) $(CC_OPTIONS) source/cCreativeInventory.cpp -c $(INCLUDE) -o build/cCreativeInventory.o
build/cSurvivalInventory.o : source/cSurvivalInventory.cpp
$(CC) $(CC_OPTIONS) source/cSurvivalInventory.cpp -c $(INCLUDE) -o build/cSurvivalInventory.o
# Item # 22 -- cLog --
@ -981,8 +993,8 @@ build/cPacket_Disconnect.o : source/packets/cPacket_Disconnect.cpp
build/cPacket_EntityEquipment.o : source/packets/cPacket_EntityEquipment.cpp
$(CC) $(CC_OPTIONS) source/packets/cPacket_EntityEquipment.cpp -c $(INCLUDE) -o build/cPacket_EntityEquipment.o
build/cPacket_CreateInventoryAction.o : source/packets/cPacket_CreateInventoryAction.cpp
$(CC) $(CC_OPTIONS) source/packets/cPacket_CreateInventoryAction.cpp -c $(INCLUDE) -o build/cPacket_CreateInventoryAction.o
build/cPacket_CreativeInventoryAction.o : source/packets/cPacket_CreativeInventoryAction.cpp
$(CC) $(CC_OPTIONS) source/packets/cPacket_CreativeInventoryAction.cpp -c $(INCLUDE) -o build/cPacket_CreativeInventoryAction.o
build/cPacket_NewInvalidState.o : source/packets/cPacket_NewInvalidState.cpp
$(CC) $(CC_OPTIONS) source/packets/cPacket_NewInvalidState.cpp -c $(INCLUDE) -o build/cPacket_NewInvalidState.o

View File

@ -1,6 +1,6 @@
/*
** Lua binding: AllToLua
** Generated automatically by tolua++-1.0.92 on 12/28/11 01:31:37.
** Generated automatically by tolua++-1.0.92 on 01/01/12 05:42:24.
*/
#ifndef __cplusplus
@ -162,50 +162,51 @@ static void tolua_reg_types (lua_State* tolua_S)
tolua_usertype(tolua_S,"cPlugin");
tolua_usertype(tolua_S,"cStringMap");
tolua_usertype(tolua_S,"Json::Value");
tolua_usertype(tolua_S,"cServer");
tolua_usertype(tolua_S,"cInventory");
tolua_usertype(tolua_S,"cRoot");
tolua_usertype(tolua_S,"cGroupManager");
tolua_usertype(tolua_S,"cPlugin::CommandStruct");
tolua_usertype(tolua_S,"cPickup");
tolua_usertype(tolua_S,"cRecipeChecker");
tolua_usertype(tolua_S,"cPacket_Login");
tolua_usertype(tolua_S,"cClientHandle");
tolua_usertype(tolua_S,"Lua__cPacket_BlockDig");
tolua_usertype(tolua_S,"cPacket_Login");
tolua_usertype(tolua_S,"cSurvivalInventory");
tolua_usertype(tolua_S,"Vector3i");
tolua_usertype(tolua_S,"cFurnaceRecipe");
tolua_usertype(tolua_S,"cCuboid");
tolua_usertype(tolua_S,"cChatColor");
tolua_usertype(tolua_S,"cMCLogger");
tolua_usertype(tolua_S,"cGroup");
tolua_usertype(tolua_S,"cPacket_PickupSpawn");
tolua_usertype(tolua_S,"Lua__cWebPlugin");
tolua_usertype(tolua_S,"Lua__cPawn");
tolua_usertype(tolua_S,"cGroup");
tolua_usertype(tolua_S,"cTracer");
tolua_usertype(tolua_S,"cItem");
tolua_usertype(tolua_S,"Vector3f");
tolua_usertype(tolua_S,"cPlugin_Lua");
tolua_usertype(tolua_S,"cTracer");
tolua_usertype(tolua_S,"cMCLogger");
tolua_usertype(tolua_S,"Lua__cPlayer");
tolua_usertype(tolua_S,"cPacket");
tolua_usertype(tolua_S,"cPacket_BlockDig");
tolua_usertype(tolua_S,"cWebAdmin");
tolua_usertype(tolua_S,"Vector3i");
tolua_usertype(tolua_S,"cClientHandle");
tolua_usertype(tolua_S,"cBlockEntity");
tolua_usertype(tolua_S,"cWebPlugin");
tolua_usertype(tolua_S,"Lua__cTCPLink");
tolua_usertype(tolua_S,"Lua__cPlugin");
tolua_usertype(tolua_S,"cTCPLink");
tolua_usertype(tolua_S,"Lua__cPlugin");
tolua_usertype(tolua_S,"cRecipeChecker");
tolua_usertype(tolua_S,"cPacket_BlockPlace");
tolua_usertype(tolua_S,"cLadder");
tolua_usertype(tolua_S,"cGroupManager");
tolua_usertype(tolua_S,"cWorld");
tolua_usertype(tolua_S,"cIniFile");
tolua_usertype(tolua_S,"Lua__cPickup");
tolua_usertype(tolua_S,"cPluginManager");
tolua_usertype(tolua_S,"cIniFile");
tolua_usertype(tolua_S,"cWorld");
tolua_usertype(tolua_S,"HTTPRequest");
tolua_usertype(tolua_S,"cPawn");
tolua_usertype(tolua_S,"cPlayer");
tolua_usertype(tolua_S,"cTorch");
tolua_usertype(tolua_S,"Lua__cPickup");
tolua_usertype(tolua_S,"cEntity");
tolua_usertype(tolua_S,"cInventory");
tolua_usertype(tolua_S,"Lua__cEntity");
tolua_usertype(tolua_S,"cWebPlugin");
tolua_usertype(tolua_S,"cServer");
tolua_usertype(tolua_S,"cStairs");
tolua_usertype(tolua_S,"Vector3d");
}
@ -5031,6 +5032,38 @@ static int tolua_AllToLua_cPlayer_GetInventory00(lua_State* tolua_S)
}
#endif //#ifndef TOLUA_DISABLE
/* method: GetSurvivalInventory of class cPlayer */
#ifndef TOLUA_DISABLE_tolua_AllToLua_cPlayer_GetSurvivalInventory00
static int tolua_AllToLua_cPlayer_GetSurvivalInventory00(lua_State* tolua_S)
{
#ifndef TOLUA_RELEASE
tolua_Error tolua_err;
if (
!tolua_isusertype(tolua_S,1,"cPlayer",0,&tolua_err) ||
!tolua_isnoobj(tolua_S,2,&tolua_err)
)
goto tolua_lerror;
else
#endif
{
cPlayer* self = (cPlayer*) tolua_tousertype(tolua_S,1,0);
#ifndef TOLUA_RELEASE
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'GetSurvivalInventory'", NULL);
#endif
{
cSurvivalInventory& tolua_ret = (cSurvivalInventory&) self->GetSurvivalInventory();
tolua_pushusertype(tolua_S,(void*)&tolua_ret,"cSurvivalInventory");
}
}
return 1;
#ifndef TOLUA_RELEASE
tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'GetSurvivalInventory'.",&tolua_err);
return 0;
#endif
}
#endif //#ifndef TOLUA_DISABLE
/* method: TeleportTo of class cPlayer */
#ifndef TOLUA_DISABLE_tolua_AllToLua_cPlayer_TeleportTo00
static int tolua_AllToLua_cPlayer_TeleportTo00(lua_State* tolua_S)
@ -15792,7 +15825,7 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
tolua_constant(tolua_S,"E_INVENTORY_SLOT",E_INVENTORY_SLOT);
tolua_constant(tolua_S,"E_INVENTORY_WHOLE",E_INVENTORY_WHOLE);
tolua_constant(tolua_S,"E_INVENTORY_PROGRESS",E_INVENTORY_PROGRESS);
tolua_constant(tolua_S,"E_CREATE_INVENTORY_ACTION",E_CREATE_INVENTORY_ACTION);
tolua_constant(tolua_S,"E_CREATIVE_INVENTORY_ACTION",E_CREATIVE_INVENTORY_ACTION);
tolua_constant(tolua_S,"E_UPDATE_SIGN",E_UPDATE_SIGN);
tolua_constant(tolua_S,"E_PLAYER_LIST_ITEM",E_PLAYER_LIST_ITEM);
tolua_constant(tolua_S,"E_PING",E_PING);
@ -15924,6 +15957,7 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
tolua_function(tolua_S,"GetFlying",tolua_AllToLua_cPlayer_GetFlying00);
tolua_function(tolua_S,"GetStance",tolua_AllToLua_cPlayer_GetStance00);
tolua_function(tolua_S,"GetInventory",tolua_AllToLua_cPlayer_GetInventory00);
tolua_function(tolua_S,"GetSurvivalInventory",tolua_AllToLua_cPlayer_GetSurvivalInventory00);
tolua_function(tolua_S,"TeleportTo",tolua_AllToLua_cPlayer_TeleportTo00);
tolua_function(tolua_S,"GetGameMode",tolua_AllToLua_cPlayer_GetGameMode00);
tolua_function(tolua_S,"GetIP",tolua_AllToLua_cPlayer_GetIP00);

View File

@ -1,6 +1,6 @@
/*
** Lua binding: AllToLua
** Generated automatically by tolua++-1.0.92 on 12/28/11 01:31:37.
** Generated automatically by tolua++-1.0.92 on 01/01/12 05:42:24.
*/
/* Exported function */

View File

@ -50,7 +50,7 @@ enum ENUM_PACKET_ID
E_INVENTORY_SLOT = 0x67,
E_INVENTORY_WHOLE = 0x68,
E_INVENTORY_PROGRESS= 0x69,
E_CREATE_INVENTORY_ACTION = 0x6B,
E_CREATIVE_INVENTORY_ACTION = 0x6B,
E_UPDATE_SIGN = 0x82,
E_PLAYER_LIST_ITEM = 0xC9,
E_PING = 0xfe,

View File

@ -64,6 +64,8 @@ ENUM_ITEM_ID cBlockToPickup::ToPickup( unsigned char a_BlockID, ENUM_ITEM_ID a_U
return E_ITEM_IRON_DOOR;
case E_BLOCK_GLOWSTONE:
return E_ITEM_GLOWSTONE_DUST;
case E_BLOCK_DOUBLE_STEP:
return E_ITEM_STEP;
default:
return (ENUM_ITEM_ID)a_BlockID;
}
@ -83,6 +85,8 @@ char cBlockToPickup::PickupCount(unsigned char a_BlockID)
return r1.randInt() % 8 + 3;
case E_BLOCK_LAPIS_ORE:
return r1.randInt() % 5 + 4;
case E_BLOCK_DOUBLE_STEP:
return 2;
default:
return 1;
}

View File

@ -60,7 +60,7 @@
#include "packets/cPacket_PickupSpawn.h"
#include "packets/cPacket_ItemSwitch.h"
#include "packets/cPacket_EntityEquipment.h"
#include "packets/cPacket_CreateInventoryAction.h"
#include "packets/cPacket_CreativeInventoryAction.h"
#include "packets/cPacket_NewInvalidState.h"
#include "packets/cPacket_UseEntity.h"
#include "packets/cPacket_WindowClose.h"
@ -151,7 +151,7 @@ cClientHandle::cClientHandle(const cSocket & a_Socket)
m_pState->PacketMap[E_DISCONNECT] = new cPacket_Disconnect;
m_pState->PacketMap[E_ITEM_SWITCH] = new cPacket_ItemSwitch;
m_pState->PacketMap[E_ENTITY_EQUIPMENT] = new cPacket_EntityEquipment;
m_pState->PacketMap[E_CREATE_INVENTORY_ACTION] = new cPacket_CreateInventoryAction;
m_pState->PacketMap[E_CREATIVE_INVENTORY_ACTION] = new cPacket_CreativeInventoryAction;
m_pState->PacketMap[E_NEW_INVALID_STATE] = new cPacket_NewInvalidState;
m_pState->PacketMap[E_PICKUP_SPAWN] = new cPacket_PickupSpawn;
m_pState->PacketMap[E_USE_ENTITY] = new cPacket_UseEntity;
@ -443,11 +443,7 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
LOGINFO("Got New Invalid State packet");
}
break;
case E_CREATE_INVENTORY_ACTION: // I don't think we need to do anything with this packet, but justin case...
{
LOGINFO("Got Create Inventory Action packet");
}
break;
case E_PING: // Somebody tries to retrieve information about the server
{
LOGINFO("Got ping");
@ -545,6 +541,15 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
{
switch( a_Packet->m_PacketID )
{
case E_CREATIVE_INVENTORY_ACTION: // This is for creative Inventory changes
{
if(m_Player->GetGameMode() == 1) //Just to be sure
{
m_Player->GetInventory().Clicked(a_Packet);
}
break;
}
break;
case E_PLAYERPOS:
{
cPacket_PlayerPosition* PacketData = reinterpret_cast<cPacket_PlayerPosition*>(a_Packet);
@ -696,9 +701,8 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
cPacket_BlockPlace* PacketData = reinterpret_cast<cPacket_BlockPlace*>(a_Packet);
cItem & Equipped = m_Player->GetInventory().GetEquippedItem();
//if( (Equipped.m_ItemID != PacketData->m_ItemType) ) // Not valid
if( (Equipped.m_ItemID != PacketData->m_ItemType) && (m_Player->GetGameMode() != 1) ) // Not valid
if( (Equipped.m_ItemID != PacketData->m_ItemType)) // Not valid
{
LOGWARN("Player %s tried to place a block that was not selected! (could indicate bot)", GetUsername() );
break;
@ -851,19 +855,30 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
break;
//TODO: Wrong Blocks!
int clickedBlock = (int)m_Player->GetWorld()->GetBlock( PacketData->m_PosX, PacketData->m_PosY, PacketData->m_PosZ );
int ClickedBlock = (int)m_Player->GetWorld()->GetBlock( PacketData->m_PosX, PacketData->m_PosY, PacketData->m_PosZ );
char MetaData = (char)Equipped.m_ItemHealth;
bool LavaBucket = false;
bool WaterBucket = false;
bool bRemoveItem = true;
bool bIgnoreCollision = false;
if(ClickedBlock == E_BLOCK_STEP)
{
if(MetaData == m_Player->GetWorld()->GetBlockMeta(PacketData->m_PosX, PacketData->m_PosY, PacketData->m_PosZ) && PacketData->m_Direction == 1) //only make double slab if meta values are the same and if player clicked on top of the block (Dir = 1)
{
PacketData->m_ItemType = E_BLOCK_DOUBLE_STEP;
PacketData->m_PosY--;
bIgnoreCollision = true;
}
}
switch( PacketData->m_ItemType ) // Special handling for special items
{
case E_ITEM_BUCKET:
//TODO: Change this, it is just a small hack to get it working a little bit. seems like the Client sends the position from the first hitable block :s
clickedBlock = (int)m_Player->GetWorld()->GetBlock( PacketData->m_PosX, PacketData->m_PosY + 1, PacketData->m_PosZ );
LOG("Bucket Clicked BlockID: %d", clickedBlock);
switch (clickedBlock)
ClickedBlock = (int)m_Player->GetWorld()->GetBlock( PacketData->m_PosX, PacketData->m_PosY + 1, PacketData->m_PosZ );
LOG("Bucket Clicked BlockID: %d", ClickedBlock);
switch (ClickedBlock)
{
case E_BLOCK_WATER:
case E_BLOCK_STATIONARY_WATER:
@ -902,9 +917,6 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
}
break;
case E_BLOCK_WHITE_CLOTH:
MetaData = (char)PacketData->m_Uses;
break;
case E_BLOCK_TORCH:
MetaData = cTorch::DirectionToMetaData( PacketData->m_Direction );
break;
@ -1026,7 +1038,12 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
AddDirection( X, Y, Z, PacketData->m_Direction );
int PlaceBlock = m_Player->GetWorld()->GetBlock( X, Y, Z );
if (!( ( PlaceBlock == E_BLOCK_AIR ) || ( PlaceBlock == E_BLOCK_WATER ) || ( PlaceBlock == E_BLOCK_STATIONARY_WATER ) || ( PlaceBlock == E_BLOCK_LAVA ) || ( PlaceBlock == E_BLOCK_STATIONARY_LAVA ) ) ) { //tried to place a block *into* another?
if (PlaceBlock != E_BLOCK_AIR
&& PlaceBlock != E_BLOCK_WATER
&& PlaceBlock != E_BLOCK_STATIONARY_WATER
&& PlaceBlock != E_BLOCK_LAVA
&& PlaceBlock != E_BLOCK_STATIONARY_LAVA
&& !bIgnoreCollision ) { //tried to place a block *into* another?
break; //happens when you place a block aiming at side of block like torch or stem
}
@ -1035,6 +1052,8 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
if((m_Player->GetGameMode() != 1) && !m_Player->GetInventory().RemoveItem( Item ))
break;
}
if (isDoor)
{
if ( ( m_Player->GetWorld()->GetBlock( X, Y+1, Z ) == E_BLOCK_AIR ) || ( m_Player->GetWorld()->GetBlock( X, Y+1, Z ) == E_BLOCK_AIR ) )
@ -1046,6 +1065,7 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
m_Player->GetWorld()->SetBlock( X, Y, Z, (char)PacketData->m_ItemType, MetaData );
}
if (UpdateRedstone)
{
cRedstone Redstone(m_Player->GetWorld());

View File

@ -0,0 +1,38 @@
#include "cCreativeInventory.h"
#include <string> //memset
#include "cPlayer.h"
#include "cClientHandle.h"
#include "cMCLogger.h"
#include "cWindow.h"
#include "cItem.h"
#include "cRecipeChecker.h"
#include "cRoot.h"
#include <json/json.h>
#include "packets/cPacket_CreativeInventoryAction.h"
#include "packets/cPacket_WholeInventory.h"
#include "packets/cPacket_InventorySlot.h"
cCreativeInventory::~cCreativeInventory()
{
}
cCreativeInventory::cCreativeInventory(cPlayer* a_Owner)
: cInventory(a_Owner)
{
}
void cCreativeInventory::Clicked( cPacket* a_ClickPacket )
{
cPacket_CreativeInventoryAction* Packet = reinterpret_cast<cPacket_CreativeInventoryAction *>(a_ClickPacket);
short Slot = Packet->m_Slot;
cItem* SlotItem = &(this->m_Slots[Slot]);
SlotItem->m_ItemID = (ENUM_ITEM_ID) Packet->m_ItemID;
SlotItem->m_ItemHealth = Packet->m_Damage;
SlotItem->m_ItemCount = Packet->m_Quantity;
}

View File

@ -0,0 +1,13 @@
#pragma once
#include "cInventory.h"
class cCreativeInventory //tolua_export
: public cInventory
{ //tolua_export
public:
cCreativeInventory(cPlayer* a_Owner);
~cCreativeInventory();
virtual void Clicked( cPacket* a_ClickPacket );
}; //tolua_export

View File

@ -18,8 +18,6 @@ cInventory::~cInventory()
{
delete [] m_Slots;
delete m_EquippedItem;
if( GetWindow() ) GetWindow()->Close( *m_Owner );
CloseWindow();
}
cInventory::cInventory(cPlayer* a_Owner)
@ -37,155 +35,6 @@ cInventory::cInventory(cPlayer* a_Owner)
m_EquippedItem = new cItem();
m_EquippedSlot = 0;
if( !GetWindow() )
{
cWindow* Window = new cWindow( this, false );
Window->SetSlots( m_Slots, c_NumSlots );
Window->SetWindowID( 0 );
OpenWindow( Window );
}
}
void cInventory::Clear()
{
for(unsigned int i = 0; i < c_NumSlots; i++)
m_Slots[i].Empty();
}
cItem* cInventory::GetSlotsForType( int a_Type )
{
switch( a_Type )
{
case -1:
return m_MainSlots;
case -2:
return m_CraftSlots;
case -3:
return m_ArmorSlots;
}
return 0;
}
int cInventory::GetSlotCountForType( int a_Type )
{
switch( a_Type )
{
case -1:
return 36;
case -2:
case -3:
return 4;
}
return 0;
}
void cInventory::Clicked( cPacket_WindowClick* a_ClickPacket )
{
bool bDontCook = false;
if( GetWindow() )
{
// Override for craft result slot
if( a_ClickPacket->m_SlotNum == (short)c_CraftOffset )
{
LOG("In craft slot: %i x %i !!", m_Slots[c_CraftOffset].m_ItemID, m_Slots[c_CraftOffset].m_ItemCount );
cItem* DraggingItem = GetWindow()->GetDraggingItem();
if( DraggingItem->IsEmpty() )
{
*DraggingItem = m_Slots[c_CraftOffset];
m_Slots[c_CraftOffset].Empty();
}
else if( DraggingItem->Equals( m_Slots[c_CraftOffset] ) )
{
if( DraggingItem->m_ItemCount + m_Slots[c_CraftOffset].m_ItemCount <= 64 )
{
DraggingItem->m_ItemCount += m_Slots[c_CraftOffset].m_ItemCount;
m_Slots[0].Empty();
}
else
{
bDontCook = true;
}
}
else
{
bDontCook = true;
}
LOG("Dragging Dish %i", DraggingItem->m_ItemCount );
}
else
{
GetWindow()->Clicked( a_ClickPacket, *m_Owner );
}
}
else
{
LOG("No Inventory window! WTF");
}
if( a_ClickPacket->m_SlotNum >= (short)c_CraftOffset && a_ClickPacket->m_SlotNum < (short)(c_CraftOffset+c_CraftSlots+1) )
{
cItem CookedItem;
if( a_ClickPacket->m_SlotNum == 0 && !bDontCook )
{
CookedItem = cRoot::Get()->GetRecipeChecker()->CookIngredients( m_Slots+c_CraftOffset+1, 2, 2, true );
}
else
{
CookedItem = cRoot::Get()->GetRecipeChecker()->CookIngredients( m_Slots+c_CraftOffset+1, 2, 2 );
}
m_Slots[c_CraftOffset] = CookedItem;
LOG("You cooked: %i x %i !!", m_Slots[c_CraftOffset].m_ItemID, m_Slots[c_CraftOffset].m_ItemCount );
SendWholeInventory( m_Owner->GetClientHandle() );
}
SendSlot( 0 );
}
bool cInventory::AddToBar( cItem & a_Item, const int a_Offset, const int a_Size, bool* a_bChangedSlots, int a_Mode /* = 0 */ )
{
// Fill already present stacks
if( a_Mode < 2 )
{
for(int i = 0; i < a_Size; i++)
{
if( m_Slots[i + a_Offset].m_ItemID == a_Item.m_ItemID && m_Slots[i + a_Offset].m_ItemCount < 64 )
{
int NumFree = 64 - m_Slots[i + a_Offset].m_ItemCount;
if( NumFree >= a_Item.m_ItemCount )
{
//printf("1. Adding %i items ( free: %i )\n", a_Item.m_ItemCount, NumFree );
m_Slots[i + a_Offset].m_ItemCount += a_Item.m_ItemCount;
a_Item.m_ItemCount = 0;
a_bChangedSlots[i + a_Offset] = true;
break;
}
else
{
//printf("2. Adding %i items\n", NumFree );
m_Slots[i + a_Offset].m_ItemCount += (char)NumFree;
a_Item.m_ItemCount -= (char)NumFree;
a_bChangedSlots[i + a_Offset] = true;
}
}
}
}
if( a_Mode > 0 )
{
// If we got more left, find first empty slot
for(int i = 0; i < a_Size && a_Item.m_ItemCount > 0; i++)
{
if( m_Slots[i + a_Offset].m_ItemID == -1 )
{
m_Slots[i + a_Offset] = a_Item;
a_Item.m_ItemCount = 0;
a_bChangedSlots[i + a_Offset] = true;
}
}
}
return true;
}
bool cInventory::AddItem( cItem & a_Item )
@ -274,6 +123,40 @@ bool cInventory::RemoveItem( cItem & a_Item )
return false;
}
void cInventory::Clear()
{
for(unsigned int i = 0; i < c_NumSlots; i++)
m_Slots[i].Empty();
}
cItem* cInventory::GetSlotsForType( int a_Type )
{
switch( a_Type )
{
case -1:
return m_MainSlots;
case -2:
return m_CraftSlots;
case -3:
return m_ArmorSlots;
}
return 0;
}
int cInventory::GetSlotCountForType( int a_Type )
{
switch( a_Type )
{
case -1:
return 36;
case -2:
case -3:
return 4;
}
return 0;
}
cItem* cInventory::GetSlot( int a_SlotNum )
{
if( a_SlotNum < 0 || a_SlotNum >= (short)c_NumSlots ) return 0;
@ -328,18 +211,51 @@ void cInventory::SendSlot( int a_SlotNum )
}
}
void cInventory::DrawInventory()
bool cInventory::AddToBar( cItem & a_Item, const int a_Offset, const int a_Size, bool* a_bChangedSlots, int a_Mode /* = 0 */ )
{
printf("%i %i %i %i\n", m_ArmorSlots[0].m_ItemCount, m_ArmorSlots[1].m_ItemCount, m_CraftSlots[0].m_ItemCount, m_CraftSlots[1].m_ItemCount );
printf("%i %i %i %i\n", m_ArmorSlots[2].m_ItemCount, m_ArmorSlots[3].m_ItemCount, m_CraftSlots[2].m_ItemCount, m_CraftSlots[3].m_ItemCount );
for(int y = 0; y < 4; y++)
// Fill already present stacks
if( a_Mode < 2 )
{
for(int x = 0; x < 9; x++)
for(int i = 0; i < a_Size; i++)
{
printf("%i ", m_MainSlots[x + y*9].m_ItemCount );
if( m_Slots[i + a_Offset].m_ItemID == a_Item.m_ItemID && m_Slots[i + a_Offset].m_ItemCount < 64 && m_Slots[i + a_Offset].m_ItemHealth == a_Item.m_ItemHealth )
{
int NumFree = 64 - m_Slots[i + a_Offset].m_ItemCount;
if( NumFree >= a_Item.m_ItemCount )
{
//printf("1. Adding %i items ( free: %i )\n", a_Item.m_ItemCount, NumFree );
m_Slots[i + a_Offset].m_ItemCount += a_Item.m_ItemCount;
a_Item.m_ItemCount = 0;
a_bChangedSlots[i + a_Offset] = true;
break;
}
else
{
//printf("2. Adding %i items\n", NumFree );
m_Slots[i + a_Offset].m_ItemCount += (char)NumFree;
a_Item.m_ItemCount -= (char)NumFree;
a_bChangedSlots[i + a_Offset] = true;
}
}
}
printf("\n");
}
if( a_Mode > 0 )
{
// If we got more left, find first empty slot
for(int i = 0; i < a_Size && a_Item.m_ItemCount > 0; i++)
{
if( m_Slots[i + a_Offset].m_ItemID == -1 )
{
m_Slots[i + a_Offset] = a_Item;
a_Item.m_ItemCount = 0;
a_bChangedSlots[i + a_Offset] = true;
}
}
}
return true;
}
void cInventory::SaveToJson(Json::Value & a_Value)

View File

@ -12,10 +12,9 @@ namespace Json
class cItem;
class cClientHandle;
class cPlayer;
class cPacket_WindowClick;
class cPacket;
class cPacket_EntityEquipment;
class cInventory //tolua_export
: public cWindowOwner
class cInventory //tolua_export
{ //tolua_export
public:
cInventory(cPlayer* a_Owner);
@ -28,7 +27,6 @@ public:
bool AddItem( cItem & a_Item ); //tolua_export
bool RemoveItem( cItem & a_Item ); //tolua_export
void DrawInventory();
void SaveToJson(Json::Value & a_Value);
bool LoadFromJson(Json::Value & a_Value);
@ -42,7 +40,7 @@ public:
cItem & GetEquippedItem(); //tolua_export
void SetEquippedSlot( int a_SlotNum ); //tolua_export
void Clicked( cPacket_WindowClick* a_ClickPacket );
virtual void Clicked( cPacket* a_ClickPacket ) = 0;
void SendSlot( int a_SlotNum ); //tolua_export
@ -56,7 +54,8 @@ public:
static const unsigned int c_ArmorOffset = 5;
static const unsigned int c_MainOffset = 9;
static const unsigned int c_HotOffset = 36;
private:
protected:
bool AddToBar( cItem & a_Item, const int a_Offset, const int a_Size, bool* a_bChangedSlots, int a_Mode = 0 );
cItem* m_Slots;

View File

@ -1,6 +1,7 @@
#include "cPlayer.h"
#include "cServer.h"
#include "cInventory.h"
#include "cCreativeInventory.h"
#include "cSurvivalInventory.h"
#include "cClientHandle.h"
#include "cWorld.h"
#include "cPickup.h"
@ -82,7 +83,8 @@ cPlayer::cPlayer(cClientHandle* a_Client, const char* a_PlayerName)
m_EntityType = E_PLAYER;
SetMaxHealth(20);
SetMaxFoodLevel(125);
m_Inventory = new cInventory( this );
m_Inventory = new cSurvivalInventory( this );
m_CreativeInventory = new cCreativeInventory(this);
cTimer t1;
m_LastPlayerListTime = t1.GetNowTime();
@ -118,6 +120,10 @@ cPlayer::~cPlayer(void)
delete m_Inventory;
m_Inventory = 0;
}
if(m_CreativeInventory)
{
delete m_CreativeInventory;
}
delete m_pState;
GetWorld()->RemovePlayer( this ); // TODO - Remove from correct world? Or get rid of this?
}
@ -398,10 +404,10 @@ void cPlayer::OpenWindow( cWindow* a_Window )
void cPlayer::CloseWindow(char a_WindowType)
{
if (a_WindowType == 0) { // Inventory
if(GetInventory().GetWindow()->GetDraggingItem() && GetInventory().GetWindow()->GetDraggingItem()->m_ItemCount > 0)
if(m_Inventory->GetWindow()->GetDraggingItem() && m_Inventory->GetWindow()->GetDraggingItem()->m_ItemCount > 0)
{
LOG("Player holds item! Dropping it...");
TossItem( true, GetInventory().GetWindow()->GetDraggingItem()->m_ItemCount );
TossItem( true, m_Inventory->GetWindow()->GetDraggingItem()->m_ItemCount );
}
//Drop whats in the crafting slots (1, 2, 3, 4)
@ -458,6 +464,7 @@ void cPlayer::SetGameMode( int a_GameMode )
GameModePacket.m_Reason = 3; //GameModeChange
GameModePacket.m_GameMode = (char)a_GameMode; //GameModeChange
m_ClientHandle->Send ( GameModePacket );
GetInventory().SendWholeInventory(m_ClientHandle);
}
}
}
@ -651,7 +658,7 @@ void cPlayer::TossItem( bool a_bDraggingItem, int a_Amount /* = 1 */ )
{
if( a_bDraggingItem )
{
cItem* Item = GetInventory().GetWindow()->GetDraggingItem();
cItem* Item = GetSurvivalInventory().GetWindow()->GetDraggingItem();
if( Item->m_ItemID > 0 && Item->m_ItemCount >= a_Amount )
{
float vX = 0, vY = 0, vZ = 0;

View File

@ -1,6 +1,8 @@
#pragma once
#include "cPawn.h"
#include "cSurvivalInventory.h"
#include "cCreativeInventory.h"
#include <list>
#include <string> // TODO - use const char*
@ -8,6 +10,8 @@ class cGroup;
class cWindow;
class cInventory;
class cClientHandle;
class cPlayer : public cPawn //tolua_export
{ //tolua_export
public:
@ -27,7 +31,8 @@ public:
Vector3d GetEyePosition(); //tolua_export
inline bool GetFlying() { return m_bTouchGround; } //tolua_export
inline const double & GetStance() { return m_Stance; } //tolua_export
cInventory & GetInventory() { return *m_Inventory; } //tolua_export
cInventory & GetInventory() { if(GetGameMode() == 0) return *m_Inventory; else return *m_CreativeInventory; } //tolua_export
cSurvivalInventory & GetSurvivalInventory() { return *m_Inventory; } //tolua_export
virtual void TeleportTo( const double & a_PosX, const double & a_PosY, const double & a_PosZ ); //tolua_export
@ -95,7 +100,8 @@ protected:
float m_LastGroundHeight;
bool m_bTouchGround;
double m_Stance;
cInventory* m_Inventory;
cSurvivalInventory* m_Inventory;
cCreativeInventory* m_CreativeInventory;
cWindow* m_CurrentWindow;
float m_TimeLastPickupCheck;

View File

@ -0,0 +1,90 @@
#include "cSurvivalInventory.h"
#include <string> //memset
#include "cPlayer.h"
#include "cClientHandle.h"
#include "cMCLogger.h"
#include "cWindow.h"
#include "cItem.h"
#include "cRecipeChecker.h"
#include "cRoot.h"
#include "packets/cPacket_WindowClick.h"
cSurvivalInventory::~cSurvivalInventory()
{
if( GetWindow() ) GetWindow()->Close( *m_Owner );
CloseWindow();
}
cSurvivalInventory::cSurvivalInventory(cPlayer* a_Owner)
: cInventory(a_Owner)
{
if( !GetWindow() )
{
cWindow* Window = new cWindow( this, false );
Window->SetSlots( m_Slots, c_NumSlots );
Window->SetWindowID( 0 );
OpenWindow( Window );
}
}
void cSurvivalInventory::Clicked( cPacket* a_ClickPacket )
{
cPacket_WindowClick *Packet = reinterpret_cast<cPacket_WindowClick *>(a_ClickPacket);
bool bDontCook = false;
if( GetWindow() )
{
// Override for craft result slot
if( Packet->m_SlotNum == (short)c_CraftOffset )
{
LOG("In craft slot: %i x %i !!", m_Slots[c_CraftOffset].m_ItemID, m_Slots[c_CraftOffset].m_ItemCount );
cItem* DraggingItem = GetWindow()->GetDraggingItem();
if( DraggingItem->IsEmpty() )
{
*DraggingItem = m_Slots[c_CraftOffset];
m_Slots[c_CraftOffset].Empty();
}
else if( DraggingItem->Equals( m_Slots[c_CraftOffset] ) )
{
if( DraggingItem->m_ItemCount + m_Slots[c_CraftOffset].m_ItemCount <= 64 )
{
DraggingItem->m_ItemCount += m_Slots[c_CraftOffset].m_ItemCount;
m_Slots[0].Empty();
}
else
{
bDontCook = true;
}
}
else
{
bDontCook = true;
}
LOG("Dragging Dish %i", DraggingItem->m_ItemCount );
}
else
{
GetWindow()->Clicked( Packet, *m_Owner );
}
}
else
{
LOG("No Inventory window! WTF");
}
if( Packet->m_SlotNum >= (short)c_CraftOffset && Packet->m_SlotNum < (short)(c_CraftOffset+c_CraftSlots+1) )
{
cItem CookedItem;
if( Packet->m_SlotNum == 0 && !bDontCook )
{
CookedItem = cRoot::Get()->GetRecipeChecker()->CookIngredients( m_Slots+c_CraftOffset+1, 2, 2, true );
}
else
{
CookedItem = cRoot::Get()->GetRecipeChecker()->CookIngredients( m_Slots+c_CraftOffset+1, 2, 2 );
}
m_Slots[c_CraftOffset] = CookedItem;
LOG("You cooked: %i x %i !!", m_Slots[c_CraftOffset].m_ItemID, m_Slots[c_CraftOffset].m_ItemCount );
SendWholeInventory( m_Owner->GetClientHandle() );
}
SendSlot( 0 );
}

View File

@ -0,0 +1,14 @@
#pragma once
#include "cInventory.h"
class cSurvivalInventory //tolua_export
: public cInventory
, public cWindowOwner
{ //tolua_export
public:
cSurvivalInventory(cPlayer* a_Owner);
~cSurvivalInventory();
virtual void Clicked( cPacket* a_ClickPacket );
}; //tolua_export

View File

@ -48,7 +48,7 @@ cItem* cWindow::GetDraggingItem( cPlayer * a_Player /* = 0 */ )
{
if( m_bInventoryVisible && a_Player )
{
cWindow* Window = a_Player->GetInventory().GetWindow();
cWindow* Window = a_Player->GetSurvivalInventory().GetWindow();
if( Window )
{
return Window->GetDraggingItem();
@ -68,7 +68,7 @@ void cWindow::Clicked( cPacket_WindowClick* a_ClickPacket, cPlayer & a_Player )
if( m_bInventoryVisible )
{
cWindow* Window = a_Player.GetInventory().GetWindow();
cWindow* Window = a_Player.GetSurvivalInventory().GetWindow();
if( Window )
{
m_DraggingItem = Window->GetDraggingItem();
@ -170,7 +170,7 @@ void cWindow::Clicked( cPacket_WindowClick* a_ClickPacket, cPlayer & a_Player )
{
a_ClickPacket->m_WindowID = 0;
a_ClickPacket->m_SlotNum -= (short)(m_NumSlots - 9);
cWindow* Window = a_Player.GetInventory().GetWindow();
cWindow* Window = a_Player.GetSurvivalInventory().GetWindow();
if( Window )
{
Window->Clicked( a_ClickPacket, a_Player );

View File

@ -1,24 +1,19 @@
#include "cPacket_CreateInventoryAction.h"
#include "cPacket_CreativeInventoryAction.h"
#include "cPacket_ItemData.h"
cPacket_CreateInventoryAction::cPacket_CreateInventoryAction( const cPacket_CreateInventoryAction & a_Copy )
cPacket_CreativeInventoryAction::cPacket_CreativeInventoryAction( const cPacket_CreativeInventoryAction & a_Copy )
{
m_PacketID = E_CREATE_INVENTORY_ACTION;
m_PacketID = E_CREATIVE_INVENTORY_ACTION;
m_Slot = a_Copy.m_Slot;
m_ItemID = a_Copy.m_ItemID;
m_Quantity = 0;
m_Damage = 0;
m_Quantity = a_Copy.m_Quantity;
m_Damage = a_Copy.m_Damage;
}
bool cPacket_CreateInventoryAction::Parse(cSocket & a_Socket)
bool cPacket_CreativeInventoryAction::Parse(cSocket & a_Socket)
{
m_Socket = a_Socket;
if( !ReadShort ( m_Slot ) ) return false;
/*
if( !ReadShort ( m_ItemID ) ) return false;
if( !ReadShort ( m_Quantity ) ) return false;
if( !ReadShort ( m_Damage ) ) return false;
*/
cPacket_ItemData Item;
@ -32,7 +27,7 @@ bool cPacket_CreateInventoryAction::Parse(cSocket & a_Socket)
return true;
}
bool cPacket_CreateInventoryAction::Send(cSocket & a_Socket)
bool cPacket_CreativeInventoryAction::Send(cSocket & a_Socket)
{
//LOG("InventoryChange:");
unsigned int TotalSize = c_Size;

View File

@ -5,17 +5,17 @@
//Sure it´s not Creative Inventory?
class cPacket_CreateInventoryAction : public cPacket
class cPacket_CreativeInventoryAction : public cPacket
{
public:
cPacket_CreateInventoryAction()
cPacket_CreativeInventoryAction()
: m_Slot( 0 )
, m_ItemID( 0 )
, m_Quantity( 0 )
, m_Damage( 0 )
{ m_PacketID = E_CREATE_INVENTORY_ACTION; m_Quantity = 1; }
cPacket_CreateInventoryAction( const cPacket_CreateInventoryAction & a_Copy );
virtual cPacket* Clone() const { return new cPacket_CreateInventoryAction(*this); }
{ m_PacketID = E_CREATIVE_INVENTORY_ACTION; m_Quantity = 1; }
cPacket_CreativeInventoryAction( const cPacket_CreativeInventoryAction & a_Copy );
virtual cPacket* Clone() const { return new cPacket_CreativeInventoryAction(*this); }
bool Parse(cSocket & a_Socket);
bool Send(cSocket & a_Socket);