1
0

- Crafting fixed in 1.0.0

- Server compatible with the weapons and equip again. (Some Packets were incompatible)
- fixed bucket bugs (not all)
- Fixed clients getting crashed by wrong Pickups
- fixed nearly all mob drops. (Check wheather they are burning is missing Big Grin)
- maybe some other things I can´t recall atm Big Grin

git-svn-id: http://mc-server.googlecode.com/svn/trunk@94 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
lapayo94@gmail.com
2011-12-21 20:42:34 +00:00
parent 3ea286fef8
commit 02f05f7496
44 changed files with 326 additions and 275 deletions

View File

@@ -450,9 +450,9 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
cPacket_Chat Joined( m_pState->Username + " joined the game!");
cRoot::Get()->GetServer()->Broadcast( Joined, this );
}
int posx = m_Player->GetPosX();
int posy = m_Player->GetPosY();
int posz = m_Player->GetPosZ();
int posx = (int) m_Player->GetPosX();
int posy = (int) m_Player->GetPosY();
int posz = (int) m_Player->GetPosZ();
// Now initialize player (adds to entity list etc.)
cWorld* PlayerWorld = cRoot::Get()->GetWorld( m_Player->GetLoadedWorldName() );
if( !PlayerWorld ) PlayerWorld = cRoot::Get()->GetDefaultWorld();
@@ -503,6 +503,7 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
m_Player->SetLastBlockActionCnt(LastActionCnt+1);
if (LastActionCnt > 3) { //kick if more than 3 interactions per .1 seconds
LOGWARN("Player %s tried to interact with a block too quickly! (could indicate bot) Was Kicked.", GetUsername() );
//To many false-positives :s for example on a minimal server lagg :s should be re checked
Kick("You're a baaaaaad boy!");
break;
}
@@ -812,6 +813,7 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
if( PacketData->m_Direction < 0 ) // clicked in air
break;
//TODO: Wrong Blocks!
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;
@@ -820,6 +822,9 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
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)
{
case E_BLOCK_WATER:
@@ -833,10 +838,24 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
}
break;
case E_ITEM_LAVA_BUCKET:
PacketData->m_ItemType = E_BLOCK_LAVA;
if((m_Player->GetGameMode() == 1) || (m_Player->GetInventory().RemoveItem( Item )))
{
cItem NewItem;
NewItem.m_ItemID = E_ITEM_BUCKET;
NewItem.m_ItemCount = 1;
m_Player->GetInventory().AddItem( NewItem );
PacketData->m_ItemType = E_BLOCK_LAVA;
}
break;
case E_ITEM_WATER_BUCKET:
PacketData->m_ItemType = E_BLOCK_WATER;
if((m_Player->GetGameMode() == 1) || (m_Player->GetInventory().RemoveItem( Item )))
{
cItem NewItem;
NewItem.m_ItemID = E_ITEM_BUCKET;
NewItem.m_ItemCount = 1;
m_Player->GetInventory().AddItem( NewItem );
PacketData->m_ItemType = E_BLOCK_WATER;
}
break;
case E_BLOCK_WHITE_CLOTH:
MetaData = (char)PacketData->m_Uses;
@@ -932,7 +951,7 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
NewItem.m_ItemID = E_ITEM_LAVA_BUCKET;
NewItem.m_ItemCount = 1;
m_Player->GetInventory().AddItem( NewItem );
m_Player->GetWorld()->SetBlock( PacketData->m_PosX, PacketData->m_PosY, PacketData->m_PosZ, E_BLOCK_AIR, 0 );
m_Player->GetWorld()->SetBlock( PacketData->m_PosX, PacketData->m_PosY + 1, PacketData->m_PosZ, E_BLOCK_AIR, 0 );
}
} else if (WaterBucket) {
@@ -942,7 +961,7 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
NewItem.m_ItemID = E_ITEM_WATER_BUCKET;
NewItem.m_ItemCount = 1;
m_Player->GetInventory().AddItem( NewItem );
m_Player->GetWorld()->SetBlock( PacketData->m_PosX, PacketData->m_PosY, PacketData->m_PosZ, E_BLOCK_AIR, 0 );
m_Player->GetWorld()->SetBlock( PacketData->m_PosX, PacketData->m_PosY + 1, PacketData->m_PosZ, E_BLOCK_AIR, 0 );
}
} else if( IsValidBlock( PacketData->m_ItemType) ) {