Fixed PlayerAbilities and creative
This commit is contained in:
parent
53e8c067ea
commit
03a8dfc4a8
@ -264,9 +264,6 @@ void cClientHandle::Authenticate(void)
|
|||||||
// Send experience
|
// Send experience
|
||||||
m_Player->SendExperience();
|
m_Player->SendExperience();
|
||||||
|
|
||||||
// Send gamemode (1.6.1 movementSpeed):
|
|
||||||
SendGameMode(m_Player->GetGameMode());
|
|
||||||
|
|
||||||
m_Player->Initialize(World);
|
m_Player->Initialize(World);
|
||||||
m_State = csAuthenticated;
|
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)
|
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->SetCanFly(a_CanFly);
|
||||||
m_Player->SetFlying(a_IsFlying);
|
m_Player->SetFlying(a_IsFlying);
|
||||||
}
|
}
|
||||||
|
@ -1500,6 +1500,24 @@ bool cPlayer::LoadFromDisk()
|
|||||||
//SetExperience(root.get("experience", 0).asInt());
|
//SetExperience(root.get("experience", 0).asInt());
|
||||||
|
|
||||||
m_GameMode = (eGameMode) root.get("gamemode", eGameMode_NotSet).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"]);
|
m_Inventory.LoadFromJson(root["inventory"]);
|
||||||
|
|
||||||
|
@ -490,6 +490,7 @@ void cProtocol172::SendPlayerAbilities(void)
|
|||||||
if (m_Client->GetPlayer()->IsGameModeCreative())
|
if (m_Client->GetPlayer()->IsGameModeCreative())
|
||||||
{
|
{
|
||||||
Flags |= 0x01;
|
Flags |= 0x01;
|
||||||
|
Flags |= 0x08; // Godmode, used for creative
|
||||||
}
|
}
|
||||||
if (m_Client->GetPlayer()->IsFlying())
|
if (m_Client->GetPlayer()->IsFlying())
|
||||||
{
|
{
|
||||||
@ -499,7 +500,6 @@ void cProtocol172::SendPlayerAbilities(void)
|
|||||||
{
|
{
|
||||||
Flags |= 0x04;
|
Flags |= 0x04;
|
||||||
}
|
}
|
||||||
// TODO: Other flags (god mode)
|
|
||||||
Pkt.WriteByte(Flags);
|
Pkt.WriteByte(Flags);
|
||||||
// TODO: Pkt.WriteFloat(m_Client->GetPlayer()->GetMaxFlyingSpeed());
|
// TODO: Pkt.WriteFloat(m_Client->GetPlayer()->GetMaxFlyingSpeed());
|
||||||
Pkt.WriteFloat(0.05f);
|
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, FlyingSpeed);
|
||||||
HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, WalkingSpeed);
|
HANDLE_READ(a_ByteBuffer, ReadBEFloat, float, WalkingSpeed);
|
||||||
|
|
||||||
bool IsFlying, CanFly;
|
bool IsFlying = false, CanFly = false;
|
||||||
if ((Flags & 2) != 0)
|
if ((Flags & 2) != 0)
|
||||||
{
|
{
|
||||||
IsFlying = true;
|
IsFlying = true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
IsFlying = false;
|
|
||||||
}
|
|
||||||
if ((Flags & 4) != 0)
|
if ((Flags & 4) != 0)
|
||||||
{
|
{
|
||||||
CanFly = true;
|
CanFly = true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
CanFly = false;
|
|
||||||
}
|
|
||||||
m_Client->HandlePlayerAbilities(CanFly, IsFlying, FlyingSpeed, WalkingSpeed);
|
m_Client->HandlePlayerAbilities(CanFly, IsFlying, FlyingSpeed, WalkingSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user