Fixed PlayerAbilities and creative
This commit is contained in:
parent
53e8c067ea
commit
03a8dfc4a8
@ -264,9 +264,6 @@ void cClientHandle::Authenticate(void)
|
||||
// Send experience
|
||||
m_Player->SendExperience();
|
||||
|
||||
// Send gamemode (1.6.1 movementSpeed):
|
||||
SendGameMode(m_Player->GetGameMode());
|
||||
|
||||
m_Player->Initialize(World);
|
||||
m_State = csAuthenticated;
|
||||
|
||||
@ -489,6 +486,9 @@ void cClientHandle::HandleCreativeInventory(short a_SlotNum, const cItem & a_Hel
|
||||
|
||||
void cClientHandle::HandlePlayerAbilities(bool a_CanFly, bool a_IsFlying, float FlyingSpeed, float WalkingSpeed)
|
||||
{
|
||||
UNUSED(FlyingSpeed); // Ignore the client values for these
|
||||
UNUSED(WalkingSpeed);
|
||||
|
||||
m_Player->SetCanFly(a_CanFly);
|
||||
m_Player->SetFlying(a_IsFlying);
|
||||
}
|
||||
|
@ -1500,6 +1500,24 @@ bool cPlayer::LoadFromDisk()
|
||||
//SetExperience(root.get("experience", 0).asInt());
|
||||
|
||||
m_GameMode = (eGameMode) root.get("gamemode", eGameMode_NotSet).asInt();
|
||||
|
||||
if (m_GameMode == eGameMode_Creative)
|
||||
{
|
||||
m_CanFly = true;
|
||||
}
|
||||
else if (m_GameMode == eGameMode_NotSet)
|
||||
{
|
||||
cWorld * World = cRoot::Get()->GetWorld(GetLoadedWorldName());
|
||||
if (World == NULL)
|
||||
{
|
||||
World = cRoot::Get()->GetDefaultWorld();
|
||||
}
|
||||
|
||||
if (World->GetGameMode() == eGameMode_Creative)
|
||||
{
|
||||
m_CanFly = true;
|
||||
}
|
||||
}
|
||||
|
||||
m_Inventory.LoadFromJson(root["inventory"]);
|
||||
|
||||
|
@ -490,6 +490,7 @@ void cProtocol172::SendPlayerAbilities(void)
|
||||
if (m_Client->GetPlayer()->IsGameModeCreative())
|
||||
{
|
||||
Flags |= 0x01;
|
||||
Flags |= 0x08; // Godmode, used for creative
|
||||
}
|
||||
if (m_Client->GetPlayer()->IsFlying())
|
||||
{
|
||||
@ -499,7 +500,6 @@ void cProtocol172::SendPlayerAbilities(void)
|
||||
{
|
||||
Flags |= 0x04;
|
||||
}
|
||||
// TODO: Other flags (god mode)
|
||||
Pkt.WriteByte(Flags);
|
||||
// TODO: Pkt.WriteFloat(m_Client->GetPlayer()->GetMaxFlyingSpeed());
|
||||
Pkt.WriteFloat(0.05f);
|
||||
@ -1291,23 +1291,16 @@ void cProtocol172::HandlePacketPlayerAbilities(cByteBuffer & a_ByteBuffer)
|
||||
HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, FlyingSpeed);
|
||||
HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, WalkingSpeed);
|
||||
|
||||
bool IsFlying, CanFly;
|
||||
bool IsFlying = false, CanFly = false;
|
||||
if ((Flags & 2) != 0)
|
||||
{
|
||||
IsFlying = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
IsFlying = false;
|
||||
}
|
||||
if ((Flags & 4) != 0)
|
||||
{
|
||||
CanFly = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
CanFly = false;
|
||||
}
|
||||
|
||||
m_Client->HandlePlayerAbilities(CanFly, IsFlying, FlyingSpeed, WalkingSpeed);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user