FEAT: New proto check
This commit is contained in:
@@ -16,9 +16,8 @@ namespace SharedConstants
|
|||||||
{
|
{
|
||||||
// 0.5.0 uses NPv8
|
// 0.5.0 uses NPv8
|
||||||
// 0.6.0 uses NPv9
|
// 0.6.0 uses NPv9
|
||||||
// TODO: Better proto check
|
const int NetworkProtocolVersion = 9;
|
||||||
const int NetworkProtocolVersion = 10;
|
const int NetworkProtocolLowestSupportedVersion = 9;
|
||||||
const int NetworkProtocolLowestSupportedVersion = 10;
|
|
||||||
const int GameProtocolVersion = 1;
|
const int GameProtocolVersion = 1;
|
||||||
const int GameProtocolLowestSupportedVersion = 1;
|
const int GameProtocolLowestSupportedVersion = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ void ClientSideNetworkHandler::onConnect(const RakNet::RakNetGUID& hostGuid)
|
|||||||
serverGuid = hostGuid;
|
serverGuid = hostGuid;
|
||||||
|
|
||||||
clearChunksLoaded();
|
clearChunksLoaded();
|
||||||
LoginPacket packet(minecraft->options.getStringValue(OPTIONS_USERNAME).c_str(), SharedConstants::NetworkProtocolVersion);
|
LoginPacket packet(minecraft->options.getStringValue(OPTIONS_USERNAME).c_str(), SharedConstants::NetworkProtocolVersion, true);
|
||||||
raknetInstance->send(packet);
|
raknetInstance->send(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -194,7 +194,6 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, LoginPac
|
|||||||
|
|
||||||
LOGI("LoginPacket\n");
|
LOGI("LoginPacket\n");
|
||||||
|
|
||||||
printf("%d", packet->clientNetworkVersion);
|
|
||||||
int loginStatus = LoginStatus::Success;
|
int loginStatus = LoginStatus::Success;
|
||||||
//
|
//
|
||||||
// Bad/incompatible client version
|
// Bad/incompatible client version
|
||||||
@@ -204,6 +203,9 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, LoginPac
|
|||||||
if (oldClient || oldServer)
|
if (oldClient || oldServer)
|
||||||
loginStatus = oldClient? LoginStatus::Failed_ClientOld : LoginStatus::Failed_ServerOld;
|
loginStatus = oldClient? LoginStatus::Failed_ClientOld : LoginStatus::Failed_ServerOld;
|
||||||
|
|
||||||
|
if (packet->newProto) {
|
||||||
|
printf("New proto! \n");
|
||||||
|
}
|
||||||
RakNet::BitStream bitStream;
|
RakNet::BitStream bitStream;
|
||||||
LoginStatusPacket(loginStatus).write(&bitStream);
|
LoginStatusPacket(loginStatus).write(&bitStream);
|
||||||
rakPeer->Send(&bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, source, false);
|
rakPeer->Send(&bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, source, false);
|
||||||
@@ -214,7 +216,8 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, LoginPac
|
|||||||
//
|
//
|
||||||
// Valid client version
|
// Valid client version
|
||||||
//
|
//
|
||||||
Player* newPlayer = new ServerPlayer(minecraft, level);
|
|
||||||
|
Player* newPlayer = new ServerPlayer(minecraft, level, packet->newProto);
|
||||||
|
|
||||||
minecraft->gameMode->initAbilities(newPlayer->abilities);
|
minecraft->gameMode->initAbilities(newPlayer->abilities);
|
||||||
newPlayer->owner = source;
|
newPlayer->owner = source;
|
||||||
@@ -366,7 +369,7 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, MovePlay
|
|||||||
float vectorDist = sqrt( (packet->x - entity->x) * (packet->x - entity->x) +
|
float vectorDist = sqrt( (packet->x - entity->x) * (packet->x - entity->x) +
|
||||||
(packet->y - entity->y) * (packet->y - entity->y) +
|
(packet->y - entity->y) * (packet->y - entity->y) +
|
||||||
(packet->z - entity->z) * (packet->z - entity->z));
|
(packet->z - entity->z) * (packet->z - entity->z));
|
||||||
float speed = vectorDist / (minecraft->getTicks() - player->lastMoveTicks);
|
float speed = vectorDist / (minecraft->getTicks() - player->getLastMoveTicks());
|
||||||
|
|
||||||
if (speed < 2.5f) {
|
if (speed < 2.5f) {
|
||||||
entity->xd = entity->yd = entity->zd = 0;
|
entity->xd = entity->yd = entity->zd = 0;
|
||||||
@@ -376,7 +379,7 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, MovePlay
|
|||||||
redistributePacket(packet, source);
|
redistributePacket(packet, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
player->lastMoveTicks = minecraft->getTicks();
|
player->setLastMoveTicks(minecraft->getTicks());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -512,7 +515,7 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, PlayerAr
|
|||||||
if (!player) return;
|
if (!player) return;
|
||||||
if (rakPeer->GetMyGUID() == player->owner) return;
|
if (rakPeer->GetMyGUID() == player->owner) return;
|
||||||
|
|
||||||
LOGI("Equip armor: %i %i %i %i\n", packet->head, packet->torso, packet->legs, packet->feet);
|
// LOGI("Equip armor: %i %i %i %i\n", packet->head, packet->torso, packet->legs, packet->feet);
|
||||||
|
|
||||||
packet->fillIn(player);
|
packet->fillIn(player);
|
||||||
redistributePacket(packet, source);
|
redistributePacket(packet, source);
|
||||||
|
|||||||
@@ -9,17 +9,20 @@ public:
|
|||||||
RakNet::RakString clientName;
|
RakNet::RakString clientName;
|
||||||
int clientNetworkVersion;
|
int clientNetworkVersion;
|
||||||
int clientNetworkLowestSupportedVersion;
|
int clientNetworkLowestSupportedVersion;
|
||||||
|
bool newProto;
|
||||||
|
|
||||||
LoginPacket()
|
LoginPacket()
|
||||||
: clientNetworkVersion(-1),
|
: clientNetworkVersion(-1),
|
||||||
clientNetworkLowestSupportedVersion(-1)
|
clientNetworkLowestSupportedVersion(-1),
|
||||||
|
newProto(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
LoginPacket(const RakNet::RakString& clientName, int clientVersion)
|
LoginPacket(const RakNet::RakString& clientName, int clientVersion, bool newProto)
|
||||||
: clientName(clientName),
|
: clientName(clientName),
|
||||||
clientNetworkVersion(clientVersion),
|
clientNetworkVersion(clientVersion),
|
||||||
clientNetworkLowestSupportedVersion(clientVersion)
|
clientNetworkLowestSupportedVersion(clientVersion),
|
||||||
|
newProto(newProto)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,6 +32,7 @@ public:
|
|||||||
bitStream->Write(clientName);
|
bitStream->Write(clientName);
|
||||||
bitStream->Write(clientNetworkVersion);
|
bitStream->Write(clientNetworkVersion);
|
||||||
bitStream->Write(clientNetworkLowestSupportedVersion);
|
bitStream->Write(clientNetworkLowestSupportedVersion);
|
||||||
|
bitStream->Write(newProto);
|
||||||
}
|
}
|
||||||
|
|
||||||
void read(RakNet::BitStream* bitStream)
|
void read(RakNet::BitStream* bitStream)
|
||||||
@@ -39,6 +43,11 @@ public:
|
|||||||
if (bitStream->GetNumberOfUnreadBits() > 0) {
|
if (bitStream->GetNumberOfUnreadBits() > 0) {
|
||||||
bitStream->Read(clientNetworkVersion);
|
bitStream->Read(clientNetworkVersion);
|
||||||
bitStream->Read(clientNetworkLowestSupportedVersion);
|
bitStream->Read(clientNetworkLowestSupportedVersion);
|
||||||
|
|
||||||
|
// Checking for new proto
|
||||||
|
if (bitStream->GetNumberOfUnreadBits() > 0) {
|
||||||
|
bitStream->Read(newProto);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,11 +22,12 @@
|
|||||||
#include "network/packet/SendInventoryPacket.h"
|
#include "network/packet/SendInventoryPacket.h"
|
||||||
#include "world/entity/player/Inventory.h"
|
#include "world/entity/player/Inventory.h"
|
||||||
|
|
||||||
ServerPlayer::ServerPlayer( Minecraft* minecraft, Level* level )
|
ServerPlayer::ServerPlayer( Minecraft* minecraft, Level* level, bool proto)
|
||||||
: super(level, minecraft->isCreativeMode()),
|
: super(level, minecraft->isCreativeMode()),
|
||||||
_mc(minecraft),
|
_mc(minecraft),
|
||||||
_prevHealth(-999),
|
_prevHealth(-999),
|
||||||
_containerCounter(0)
|
_containerCounter(0),
|
||||||
|
isNewProto(proto)
|
||||||
{
|
{
|
||||||
// hasFakeInventory = true;
|
// hasFakeInventory = true;
|
||||||
footSize = 0;
|
footSize = 0;
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class ServerPlayer: public Player,
|
|||||||
{
|
{
|
||||||
typedef Player super;
|
typedef Player super;
|
||||||
public:
|
public:
|
||||||
ServerPlayer(Minecraft* minecraft, Level* level);
|
ServerPlayer(Minecraft* minecraft, Level* level, bool proto);
|
||||||
|
|
||||||
~ServerPlayer();
|
~ServerPlayer();
|
||||||
|
|
||||||
@@ -44,10 +44,14 @@ public:
|
|||||||
|
|
||||||
void completeUsingItem();
|
void completeUsingItem();
|
||||||
|
|
||||||
// Getter and setter? Doesnt hear about that
|
void setLastMoveTicks(int lastMoveTicks) { this->lastMoveTicks = lastMoveTicks; }
|
||||||
// TODO: Getter and setter :trollface:
|
int getLastMoveTicks() { return lastMoveTicks; }
|
||||||
int lastMoveTicks = 0;
|
|
||||||
int ticksInAir = 0;
|
void setTicksInAir(int ticksInAir) { this->ticksInAir = ticksInAir; }
|
||||||
|
int getTicksInAir() { return ticksInAir; }
|
||||||
|
|
||||||
|
void setNewProto(bool proto) { isNewProto = proto; }
|
||||||
|
bool getProto() { return isNewProto; }
|
||||||
private:
|
private:
|
||||||
void nextContainerCounter();
|
void nextContainerCounter();
|
||||||
void setContainerMenu( BaseContainerMenu* menu );
|
void setContainerMenu( BaseContainerMenu* menu );
|
||||||
@@ -55,6 +59,11 @@ private:
|
|||||||
Minecraft* _mc;
|
Minecraft* _mc;
|
||||||
int _prevHealth;
|
int _prevHealth;
|
||||||
int _containerCounter;
|
int _containerCounter;
|
||||||
|
|
||||||
|
int lastMoveTicks = 0;
|
||||||
|
int ticksInAir = 0;
|
||||||
|
|
||||||
|
bool isNewProto = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*ServerPlayer_H__*/
|
#endif /*ServerPlayer_H__*/
|
||||||
|
|||||||
Reference in New Issue
Block a user