summaryrefslogtreecommitdiffstats
path: root/src/Protocol
diff options
context:
space:
mode:
authorTycho <work.tycho+git@gmail.com>2014-09-17 19:47:33 +0200
committerTycho <work.tycho+git@gmail.com>2014-09-17 19:47:33 +0200
commit045d54e0e28a9338b171c93c5bbc9ccba4c79ef1 (patch)
tree58e083f5b1f97baf6de712485d3629bdcac275a8 /src/Protocol
parentAdded first test to show the object can be created (diff)
parentBungeeCord compatibility: don't overwrite UUID / properties. (diff)
downloadcuberite-045d54e0e28a9338b171c93c5bbc9ccba4c79ef1.tar
cuberite-045d54e0e28a9338b171c93c5bbc9ccba4c79ef1.tar.gz
cuberite-045d54e0e28a9338b171c93c5bbc9ccba4c79ef1.tar.bz2
cuberite-045d54e0e28a9338b171c93c5bbc9ccba4c79ef1.tar.lz
cuberite-045d54e0e28a9338b171c93c5bbc9ccba4c79ef1.tar.xz
cuberite-045d54e0e28a9338b171c93c5bbc9ccba4c79ef1.tar.zst
cuberite-045d54e0e28a9338b171c93c5bbc9ccba4c79ef1.zip
Diffstat (limited to 'src/Protocol')
-rw-r--r--src/Protocol/Protocol17x.cpp19
-rw-r--r--src/Protocol/ProtocolRecognizer.cpp2
2 files changed, 17 insertions, 4 deletions
diff --git a/src/Protocol/Protocol17x.cpp b/src/Protocol/Protocol17x.cpp
index ac7a180d4..3b8800867 100644
--- a/src/Protocol/Protocol17x.cpp
+++ b/src/Protocol/Protocol17x.cpp
@@ -100,6 +100,19 @@ cProtocol172::cProtocol172(cClientHandle * a_Client, const AString & a_ServerAdd
m_IsEncrypted(false),
m_LastSentDimension(dimNotSet)
{
+ // BungeeCord handling:
+ // If BC is setup with ip_forward == true, it sends additional data in the login packet's ServerAddress field:
+ // hostname\00ip-address\00uuid\00profile-properties-as-json
+ AStringVector Params;
+ if (SplitZeroTerminatedStrings(a_ServerAddress, Params) && (Params.size() == 4))
+ {
+ LOGD("Player at %s connected via BungeeCord", Params[1].c_str());
+ m_ServerAddress = Params[0];
+ m_Client->SetIPString(Params[1]);
+ m_Client->SetUUID(cMojangAPI::MakeUUIDShort(Params[2]));
+ m_Client->SetProperties(Params[3]);
+ }
+
// Create the comm log file, if so requested:
if (g_ShouldLogCommIn || g_ShouldLogCommOut)
{
@@ -1033,9 +1046,9 @@ void cProtocol172::SendExperienceOrb(const cExpOrb & a_ExpOrb)
cPacketizer Pkt(*this, 0x11);
Pkt.WriteVarInt(a_ExpOrb.GetUniqueID());
- Pkt.WriteInt((int) a_ExpOrb.GetPosX());
- Pkt.WriteInt((int) a_ExpOrb.GetPosY());
- Pkt.WriteInt((int) a_ExpOrb.GetPosZ());
+ Pkt.WriteFPInt(a_ExpOrb.GetPosX());
+ Pkt.WriteFPInt(a_ExpOrb.GetPosY());
+ Pkt.WriteFPInt(a_ExpOrb.GetPosZ());
Pkt.WriteShort(a_ExpOrb.GetReward());
}
diff --git a/src/Protocol/ProtocolRecognizer.cpp b/src/Protocol/ProtocolRecognizer.cpp
index 8b395230a..d836291c3 100644
--- a/src/Protocol/ProtocolRecognizer.cpp
+++ b/src/Protocol/ProtocolRecognizer.cpp
@@ -27,7 +27,7 @@
cProtocolRecognizer::cProtocolRecognizer(cClientHandle * a_Client) :
super(a_Client),
m_Protocol(NULL),
- m_Buffer(512)
+ m_Buffer(8192) // We need a larger buffer to support BungeeCord - it sends one huge packet at the start
{
}