Botcraft 1.21.4
Loading...
Searching...
No Matches
NetworkPosition.hpp
Go to the documentation of this file.
1#pragma once
2
4
5namespace ProtocolCraft
6{
8 {
12
15
16 protected:
17 virtual void ReadImpl(ReadIterator& iter, size_t& length) override
18 {
19 const unsigned long long int value = ReadData<unsigned long long int>(iter, length);
20
21 const int x = value >> 38;
22 SetX(x >= 33554432 ? (x - 67108864) : x);
23
24#if PROTOCOL_VERSION < 442 /* < 1.14 */
25 const int y = (value >> 26) & 0xFFF;
26 const int z = value << 38 >> 38;
27#else
28 const int y = value & 0xFFF;
29 const int z = value << 26 >> 38;
30#endif
31 SetY(y >= 2048 ? (y - 4096) : y);
32 SetZ(z >= 33554432 ? (z - 67108864) : z);
33 }
34
35 virtual void WriteImpl(WriteContainer& container) const override
36 {
37
38#if PROTOCOL_VERSION < 442 /* < 1.14 */
39 const unsigned long long int value = (((long long int)GetX() & 0x3FFFFFF) << 38) | (((long long int)GetY() & 0xFFF) << 26) | ((long long int)GetZ() & 0x3FFFFFF);
40#else
41 const unsigned long long int value = (((long long int)GetX() & 0x3FFFFFF) << 38) | (((long long int)GetZ() & 0x3FFFFFF) << 12) | ((long long int)GetY() & 0xFFF);
42#endif
43 WriteData<unsigned long long int>(value, container);
44 }
45 };
46}
virtual void ReadImpl(ReadIterator &iter, size_t &length) override
virtual void WriteImpl(WriteContainer &container) const override
std::vector< unsigned char > WriteContainer
std::vector< unsigned char >::const_iterator ReadIterator