1
0

Handle client 'leave bed' request

* Fixes #1728
This commit is contained in:
Tiger Wang
2015-02-08 21:21:48 +00:00
parent 1ce9164694
commit 3869f76cc2
9 changed files with 92 additions and 61 deletions

View File

@@ -18,6 +18,7 @@
#include "Items/ItemHandler.h"
#include "Blocks/BlockHandler.h"
#include "Blocks/BlockSlab.h"
#include "Blocks/BlockBed.h"
#include "Blocks/ChunkInterface.h"
#include "Root.h"
@@ -1498,30 +1499,6 @@ void cClientHandle::HandleAnimation(int a_Animation)
return;
}
// Because the animation ID sent to servers by clients are different to those sent back, we need this
switch (a_Animation)
{
case 0: // No animation - wiki.vg doesn't say that client has something specific for it, so I suppose it will just become -1
case 1:
case 2:
case 3:
{
a_Animation--; // Offset by -1
break;
}
case 5:
case 6:
case 7:
{
a_Animation -= 2; // Offset by -2
break;
}
default: // Anything else is the same
{
break;
}
}
m_Player->GetWorld()->BroadcastEntityAnimation(*m_Player, a_Animation, this);
}
@@ -1763,7 +1740,8 @@ void cClientHandle::HandleEntityLeaveBed(int a_EntityID)
return;
}
m_Player->GetWorld()->BroadcastEntityAnimation(*m_Player, 2);
cBlockBedHandler::SetBedOccupationState(cChunkInterface(GetPlayer()->GetWorld()->GetChunkMap()), GetPlayer()->GetLastBedPos(), false);
GetPlayer()->SetIsInBed(false);
}