Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Redstone #1

Open
wants to merge 621 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
621 commits
Select commit Hold shift + click to select a range
45cbbdd
385 protocol base support
alleskos Aug 27, 2019
a457544
385 protocol player spawning
alleskos Aug 27, 2019
5436f8e
craft for 385 protocol
alleskos Aug 28, 2019
8eed3dd
respawn for 385 protocol
alleskos Aug 29, 2019
03682cb
Merge pull request #888 from Hydreon/master
vchibikov Aug 29, 2019
27431ee
fix for shift craft client crash
alleskos Sep 3, 2019
8c43fcb
persona skin support
alleskos Sep 9, 2019
c9ad83e
1.13 enchant
alleskos Sep 10, 2019
eb6f023
Merge pull request #895 from Hydreon/master
vchibikov Sep 10, 2019
a43b67a
small enchant fix
alleskos Sep 12, 2019
d7f00e6
386 protocol support
alleskos Sep 13, 2019
c8140d9
possibility for set experience in ExperienceOrb
alleskos Sep 17, 2019
56bc783
Merge pull request #902 from Hydreon/master
vchibikov Sep 17, 2019
5430f41
remove experience on enchant
alleskos Sep 17, 2019
99702d9
Merge pull request #905 from Hydreon/master
vchibikov Sep 17, 2019
d9f3ad5
some craft recipes fix
alleskos Sep 18, 2019
0be1add
Merge pull request #906 from Hydreon/master
vchibikov Sep 18, 2019
7b5775c
kick players for spam packets(hack clients)
alleskos Sep 20, 2019
fb79934
387 protocol support
alleskos Sep 23, 2019
60db46b
Merge pull request #908 from Hydreon/master
vchibikov Sep 23, 2019
150b41d
change max available count packets in batch
alleskos Sep 26, 2019
888c327
max available packets count in batch
alleskos Sep 26, 2019
76f03c0
1.13.0.18
alleskos Oct 2, 2019
776f0cd
add enchant table to craft recipes
alleskos Oct 2, 2019
5924343
Merge pull request #910 from Hydreon/master
vchibikov Oct 3, 2019
f933756
fix for enchanted bow
alleskos Oct 7, 2019
4143dd1
388 protocol
alleskos Oct 9, 2019
100f91d
Merge pull request #913 from Hydreon/master
vchibikov Oct 9, 2019
9397d7e
390 protocol
alleskos Oct 10, 2019
4de2925
getter for level updateQueue
alleskos Oct 11, 2019
b67646c
for custom level in plugins
alleskos Oct 15, 2019
4716012
disable kick on incorrect adventure settings
alleskos Oct 15, 2019
2bb3ed4
Merge pull request #918 from Hydreon/master
vchibikov Oct 15, 2019
495d944
fix wood in pallet for 370+ protocols
alleskos Oct 16, 2019
10719ac
change tickChunks in level to protected
alleskos Oct 17, 2019
77d904d
item frame in pallet fix
alleskos Oct 29, 2019
2ad8393
1.13 skin geometry name fix
alleskos Oct 30, 2019
0fa68a9
for old skins
alleskos Oct 30, 2019
78c40ac
fix for checkSkinGeometry
alleskos Oct 30, 2019
64996e3
drop only players arrows
alleskos Oct 31, 2019
373000e
Merge branch 'master' into redstone
alleskos Nov 6, 2019
ff004fe
resend inventories on client mismatch transaction
alleskos Nov 11, 2019
4c38d6e
decode packet add some exceptions
alleskos Nov 13, 2019
a8a1531
some error handler
alleskos Nov 19, 2019
a9efba8
hack for prevent client bug with skin names
alleskos Nov 21, 2019
0cf58c2
invisible skins fix
alleskos Nov 22, 2019
94c876a
possibility for register inventory type
alleskos Nov 26, 2019
6c5b66f
small fix
alleskos Dec 2, 2019
c496208
small fix
alleskos Dec 2, 2019
79b24b4
Revert "small fix"
alleskos Dec 3, 2019
1c453a7
check sending PlayerSkinPacket
alleskos Dec 6, 2019
5bcffb7
add some craft recipes
alleskos Dec 6, 2019
4eb70fb
Merge branch 'master' into redstone
alleskos Dec 6, 2019
26d6cdd
isClosed method in level
alleskos Dec 9, 2019
ac5b88e
small fix
alleskos Dec 9, 2019
32c5830
Merge branch 'master' into redstone
alleskos Dec 9, 2019
34e89c2
leaves small fix
alleskos Dec 10, 2019
5d01101
small fix for default Alex skin
alleskos Dec 11, 2019
610cbf2
small pallet fix
alleskos Dec 23, 2019
e7238cd
Prismarine small fix
alleskos Dec 23, 2019
6fb68df
explode sound fix
alleskos Dec 23, 2019
f50ee53
fix for buckets
alleskos Dec 23, 2019
0a36058
fix bread craft recipe
alleskos Dec 24, 2019
3a3bc5c
FIRE_IMMUNE flag
alleskos Dec 24, 2019
1f37004
fix display amor durability
alleskos Dec 24, 2019
ec3096d
fix false kicking for hacking
alleskos Dec 25, 2019
fd44344
right click armor equip fix
alleskos Dec 25, 2019
3f71d41
small pallet fix
alleskos Dec 25, 2019
69186c1
fix for invisible fire
alleskos Dec 26, 2019
9ba8830
small fix
alleskos Dec 26, 2019
8f8d0d1
Merge branch 'master' into redstone
alleskos Dec 26, 2019
ae8459a
fix suffocation in stair block
alleskos Dec 26, 2019
29f9525
fix potions consume
alleskos Dec 26, 2019
5c3e97d
fix cobweb breaking time
alleskos Dec 26, 2019
953329f
Merge pull request #934 from Hydreon/master
vchibikov Dec 26, 2019
c44d637
small fix for custom skins
alleskos Dec 27, 2019
524b312
fix offhand black textures
alleskos Dec 27, 2019
b022a27
Merge branch 'master' into redstone
alleskos Dec 27, 2019
b7fb41b
merge fix
alleskos Dec 28, 2019
369609f
change level blockStates to protected
alleskos Jan 15, 2020
b95cb4a
fix redstone ore onUpdate
alleskos Jan 17, 2020
c35ddd2
Merge branch 'master' into redstone
alleskos Jan 17, 2020
faa5a7f
prevent packets spam by hacking client
alleskos Jan 20, 2020
33ca2c6
block place\break range check
alleskos Jan 22, 2020
38f9685
ChangeDimensionPacket
alleskos Jan 24, 2020
d931811
fireball name fix
alleskos Jan 24, 2020
2efb1d6
for change dimension
alleskos Jan 27, 2020
0f3e434
small fix for double chest inventory
alleskos Jan 28, 2020
0f33d89
cooked mutton and rabbit recipes
alleskos Jan 28, 2020
c0e6212
block place in fly small fix
alleskos Jan 29, 2020
481996e
merge master
alleskos Jan 31, 2020
2d702e9
small fix nbt check on add item
alleskos Feb 4, 2020
ed3d349
NetherQuartzOre
alleskos Feb 4, 2020
782f0a5
nether quartz craft recipe
alleskos Feb 6, 2020
973a1c2
Merge branch 'master' into redstone
alleskos Feb 6, 2020
205de74
some nether blocks
alleskos Feb 13, 2020
a66f183
unbreaking enchant
alleskos Feb 13, 2020
fc70cce
prevent fall into block after teleport
alleskos Feb 14, 2020
6f9f8a3
protocol 392 base support
alleskos Feb 19, 2020
a53d7fb
protocol 392 some progress
alleskos Feb 20, 2020
c9019b8
Merge branch 'master' into redstone
alleskos Feb 20, 2020
5999307
protocol 393
alleskos Feb 21, 2020
7e5b928
Merge branch 'master' into redstone
alleskos Feb 21, 2020
ebcec3f
fix item register
alleskos Feb 21, 2020
7e722b5
Merge branch 'master' into redstone
alleskos Feb 21, 2020
8e4e7b8
protocol 394
alleskos Feb 28, 2020
3afbed0
fix player onGround detections
alleskos Mar 4, 2020
ae4ce7a
merge master
dexdurable Mar 5, 2020
539c5ed
double inventory crash
dishrex Mar 5, 2020
1036ede
added proto 395
dishrex Mar 5, 2020
fe85ad9
check night time
dishrex Mar 5, 2020
cfcc744
fix for signed nbt short
alleskos Mar 10, 2020
bd8941b
396 protocol
alleskos Mar 12, 2020
234a5e5
Merge branch 'master' into redstone
alleskos Mar 12, 2020
72fbc1c
fix ench table cheat
dexdurable Mar 16, 2020
29771ee
Merge pull request #941 from Hydreon/master
vchibikov Mar 16, 2020
252b224
lava problem fix
dexdurable Mar 17, 2020
f2b0863
Merge branch 'redstone' of https://github.com/Hydreon/Steadfast2 into…
dexdurable Mar 17, 2020
f4369e3
updates protocol 400
dexdurable Mar 18, 2020
03cbc0d
fix explode problem
dexdurable Mar 19, 2020
ce9b0dc
Merge pull request #943 from Hydreon/protocol_400
vchibikov Mar 19, 2020
db7e067
Merge pull request #945 from Hydreon/master
vchibikov Mar 19, 2020
6a28588
fix breaking block in ladder
dexdurable Mar 20, 2020
4b4941f
protocol 390
dexdurable Mar 31, 2020
36ea1a0
Merge pull request #953 from Hydreon/master
vchibikov Mar 31, 2020
2bcad23
protocol 401 start
dexdurable Apr 1, 2020
311bca0
Revert "protocol 401 start"
dexdurable Apr 1, 2020
f83f2e4
trapdoor active update
dexdurable Apr 14, 2020
557e58d
fix bucket to slab problem
dexdurable Apr 17, 2020
377cd53
persona skins support
dexdurable Apr 20, 2020
1e838b7
disable persona skins for all device
dexdurable Apr 21, 2020
427f9d3
Merge branch 'master' into redstone
dexdurable Apr 21, 2020
7b8f096
disable persona skins for only switch
dexdurable Apr 22, 2020
0552602
Merge pull request #960 from Hydreon/master
vchibikov Apr 22, 2020
0fcebc0
entity with not damage for tool
dexdurable Apr 27, 2020
72dbf4a
start 407
dexdurable Jun 15, 2020
32eb2db
Merge branch 'master' into redstone
dexdurable Jun 23, 2020
ad9f0b5
disable enchatment table in protocol 407
dexdurable Jun 25, 2020
6dcc23d
lock settings
dexdurable Jun 30, 2020
5bdf768
Merge pull request #968 from Hydreon/protocol_407_final
vchibikov Jul 1, 2020
c5615b5
Merge pull request #970 from Hydreon/master
vchibikov Jul 1, 2020
4a7953e
enable ench table
dexdurable Jul 7, 2020
cb79a2a
Merge pull request #973 from Hydreon/master
vchibikov Jul 7, 2020
780ca73
disable ench table
dexdurable Jul 9, 2020
11a26f1
408 protocol
dexdurable Jul 21, 2020
231a329
Merge pull request #976 from Hydreon/master
vchibikov Jul 21, 2020
e781f32
start 409 commit
dexdurable Aug 5, 2020
ebc79ea
protocol 410 start
dexdurable Aug 13, 2020
805c5ae
invenory problem
dexdurable Aug 31, 2020
e3c329d
check equals
dexdurable Aug 31, 2020
a1b3dd7
enebled compaction
dexdurable Sep 1, 2020
2a6841d
clean code
dexdurable Sep 1, 2020
2b29a10
task for inventory transactions
dexdurable Sep 2, 2020
1ee2469
protocol 414 start
dexdurable Sep 11, 2020
7004c03
Revert "check equals"
dexdurable Sep 22, 2020
1e744eb
Revert "invenory problem"
dexdurable Sep 22, 2020
a1b6d42
Revert "task for inventory transactions"
dexdurable Sep 22, 2020
99e6618
no send slot to holder
dexdurable Sep 22, 2020
ff54a3f
protocol 415
dexdurable Sep 23, 2020
499b76d
solution for problem with quick craft
dexdurable Sep 28, 2020
c0cc3ad
change number to const
dexdurable Sep 29, 2020
14ccfc7
Merge pull request #981 from Hydreon/no_send_slot_to_holder
vchibikov Sep 29, 2020
606b200
Merge pull request #983 from Hydreon/master
vchibikov Sep 29, 2020
b147764
fix slot send problem
dexdurable Sep 30, 2020
7e802fd
protocol 417 start
dexdurable Oct 1, 2020
a6b7ff5
changes for protocol 415
dexdurable Oct 5, 2020
9bfb371
ResourcePackStackPacket
dexdurable Oct 6, 2020
e3d60ff
change player list packet
dexdurable Oct 7, 2020
8df7218
packets update
dexdurable Oct 8, 2020
c46abe6
startGamePacket progress
dexdurable Oct 9, 2020
65bdbae
startGamePacket changes
dexdurable Oct 12, 2020
e497e51
startGamepacket progress
dexdurable Oct 16, 2020
b802888
items list
dexdurable Oct 22, 2020
7180a38
protocol 418
dexdurable Oct 26, 2020
e660fe6
start game packet changes
dexdurable Oct 26, 2020
36221db
protocol 419
dexdurable Oct 26, 2020
b11e11d
startGamePacket work
dexdurable Oct 28, 2020
1b4d26a
UpdateAttributesPacket and pallet
dexdurable Oct 28, 2020
7e86636
ItemComponentPacket
dexdurable Oct 28, 2020
a224376
try a different item list
dishrex Oct 28, 2020
710724a
fix item list mistake
dishrex Oct 28, 2020
2e7fd57
CreativeContentPacket
dexdurable Oct 30, 2020
cf92afe
some 419 work
dishrex Nov 2, 2020
55f4ebc
fix conflicts
dishrex Nov 2, 2020
fe6f02c
remove some debug
dishrex Nov 2, 2020
f93991b
ids from Item.php
dexdurable Nov 2, 2020
195609c
couple proto 19 changes
dishrex Nov 2, 2020
9a92532
ids from MC site
dexdurable Nov 3, 2020
ff577b8
change some ids
dexdurable Nov 3, 2020
f5094a0
change some ids
dexdurable Nov 3, 2020
967c1c2
start commit for new pallet
dexdurable Nov 4, 2020
6e39c8a
pallet 419 work
dexdurable Nov 4, 2020
19c71b7
get rid of asserts in item list
dishrex Nov 4, 2020
249ea1e
ContainerClosePacket
dexdurable Nov 5, 2020
2abee92
frames meta
dexdurable Nov 6, 2020
d0a9bff
corretion condition
dexdurable Nov 6, 2020
dd5249d
leave meta
dexdurable Nov 6, 2020
634701c
remove AnimationExpression
dexdurable Nov 11, 2020
60bf081
Merge pull request #988 from Hydreon/protocol_409
vchibikov Nov 11, 2020
f331f2b
Merge pull request #989 from Hydreon/no_send_slot_to_holder
vchibikov Nov 11, 2020
57d423c
persona and custom geo corrections
dexdurable Nov 12, 2020
94e8950
Merge pull request #991 from Hydreon/protocol_409
vchibikov Nov 12, 2020
5f266b8
recipes hotfix
dexdurable Nov 17, 2020
5819423
Merge pull request #993 from Hydreon/protocol_409
vchibikov Nov 17, 2020
4570c51
add protocol
dexdurable Nov 17, 2020
8c028c1
Merge pull request #996 from Hydreon/protocol_409
vchibikov Nov 17, 2020
c8fbcf1
protocol 422 start
dexdurable Nov 30, 2020
70f7de1
ItemStackResponsePacket
dexdurable Dec 1, 2020
97a0c51
changes from proxy branch
dexdurable Dec 2, 2020
bf57873
fix use problem
dexdurable Dec 2, 2020
e60eb17
Merge branch 'master' into protocol_422
dexdurable Dec 2, 2020
8383d35
revert recipes
dexdurable Dec 4, 2020
ba81b92
Merge branch 'master' into protocol_422
dexdurable Dec 4, 2020
92d5db1
no crash inventory
dexdurable Dec 4, 2020
2059ae0
temporally solution in CreativeContentPacket
dexdurable Dec 7, 2020
56f474b
Merge pull request #1003 from Hydreon/protocol_422
vchibikov Dec 7, 2020
9255fb7
creative content packet
dexdurable Dec 8, 2020
1a74089
423 start
dexdurable Dec 8, 2020
e18e8b7
Fixing entity unique IDs encoding mess
dktapps Dec 8, 2020
047cd31
Merge pull request #1004 from dktapps/entity-ids-fix
dishrex Dec 9, 2020
b757002
Merge branch 'master' into redstone
dexdurable Dec 9, 2020
3584486
ResourcePacksInfoPacket
dexdurable Dec 9, 2020
9661ebf
Merge branch 'master' of https://github.com/Hydreon/Steadfast2
dexdurable Dec 9, 2020
836d07f
Merge pull request #1005 from Hydreon/protocol_423
vchibikov Dec 9, 2020
a547bae
add const RECORD_MELLOHI
dexdurable Dec 14, 2020
beaf79c
add const FIRE_CHARGE
dexdurable Dec 14, 2020
6a2508d
start buckets
dexdurable Jan 10, 2021
6b68b8c
solution for water bucket and lava bucket
dexdurable Jan 11, 2021
8bbeef5
Merge pull request #1009 from Hydreon/bucketsProblem
vchibikov Jan 11, 2021
6f2ecf0
add still water and still lava
dexdurable Jan 11, 2021
33fdc8a
delete test code
dexdurable Jan 11, 2021
efc3604
Merge pull request #1011 from Hydreon/bucketsProblem
vchibikov Jan 12, 2021
a415e3c
start 428
dexdurable Feb 18, 2021
c92f607
movements settings
dexdurable Feb 20, 2021
1163891
add fabid
dexdurable Feb 24, 2021
9d77650
support old version
dexdurable Mar 2, 2021
88d8cff
refactoring StartGamePacket
dexdurable Mar 2, 2021
7963666
new pallet
dexdurable Mar 2, 2021
549e648
remove pallet
dexdurable Mar 5, 2021
3d20354
Merge pull request #1014 from Hydreon/protocol_428
vchibikov Mar 5, 2021
5e7b2fc
Merge branch 'protocol_428' into redstone
dexdurable Mar 5, 2021
bbb6193
pallet 428
dexdurable Mar 9, 2021
33db61b
platFabId
dexdurable Mar 9, 2021
2f1e2b2
Merge pull request #1016 from Hydreon/protocol_428
vchibikov Mar 9, 2021
370468e
playFabId changes
dexdurable Mar 10, 2021
e09a4c3
Revert "playFabId changes"
dexdurable Mar 22, 2021
feb308d
some changes in BinaryStream
dexdurable Mar 22, 2021
49c16d5
refactor Start game packet
dexdurable Mar 22, 2021
5293c1d
Merge branch 'protocol_428'
dexdurable Mar 22, 2021
bcc6d52
Merge branch 'master' into redstone
dexdurable Mar 22, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ white-list.txt
start.sh
mods/
launcher.sh
checker.sh
checker.sh
*.DS_Store
81 changes: 21 additions & 60 deletions src/pocketmine/ChunkStorage.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,79 +56,40 @@ protected function sendFromCache($data) {

protected function doChunk($data) {
$protocol = $data['protocol'];
$sectionsData = [];
if (isset($data['isAnvil']) && $data['isAnvil'] == true) {
$chunkData = chr(count($data['chunk']['sections']));
foreach ($data['chunk']['sections'] as $y => $sections) {
if ($sections['empty'] == true) {
if ($protocol >= Info::PROTOCOL_120) {
$blockData = "\x00" . str_repeat("\x00", 6144);
$chunkData .= $blockData;
} else {
$chunkData .= "\x00" . str_repeat("\x00", 10240);
}
$blockData = "\x00" . str_repeat("\x00", 6144);
$chunkData .= $blockData;
} else {
if ($protocol >= Info::PROTOCOL_120) {
if (isset($data['isSorted']) && $data['isSorted'] == true) {
$blockData = "\x00" . $sections['blocks'] . $sections['data'];
} else {
$blockData = "\x00" . $this->sortData($sections['blocks']) . $this->sortHalfData($sections['data']);
}
$chunkData .= $blockData;
if (isset($data['isSorted']) && $data['isSorted'] == true) {
$blockData = "\x00" . $sections['blocks'] . $sections['data'];
} else {
if (isset($data['isSorted']) && $data['isSorted'] == true) {
$blockData = "\x00" . $sections['blocks'] . $sections['data'];
$lightData = $sections['skyLight'] . $sections['blockLight'];
} else {
$blockData = "\x00" . $this->sortData($sections['blocks']) . $this->sortHalfData($sections['data']);
$lightData = $this->sortHalfData($sections['skyLight']) . $this->sortHalfData($sections['blockLight']);
}
$chunkData .= $blockData . $lightData;
$blockData = "\x00" . $this->sortData($sections['blocks']) . $this->sortHalfData($sections['data']);
}
$chunkData .= $blockData;
}
}
if ($protocol < Info::PROTOCOL_360) {
$chunkData .= $data['chunk']['heightMap'];
}
$chunkData .= $data['chunk']['biomeColor'] . Binary::writeByte(0) . Binary::writeSignedVarInt(0) . implode('', $data['tiles']);
} else {
if ($protocol >= Info::PROTOCOL_120) {
$blockIdArray = $data['blocks'];
$blockDataArray = $data['data'];
$countBlocksInChunk = 8;
$chunkData = chr($countBlocksInChunk);
for ($blockIndex = 0; $blockIndex < $countBlocksInChunk; $blockIndex++) {
$blockIdData = '';
$blockDataData = '';
for ($i = 0; $i < 256; $i++) {
$startIndex = ($blockIndex + ($i << 3)) << 3;
$blockIdData .= substr($blockIdArray, $startIndex << 1, 16);
$blockDataData .= substr($blockDataArray, $startIndex, 8);
}
$blockData = "\x00" . $blockIdData . $blockDataData;
$chunkData .= $blockData;
}
} else {
$blockIdArray = $data['blocks'];
$blockDataArray = $data['data'];
$skyLightArray = $data['skyLight'];
$blockLightArray = $data['blockLight'];
$countBlocksInChunk = 8;
$chunkData = chr($countBlocksInChunk);
for ($blockIndex = 0; $blockIndex < $countBlocksInChunk; $blockIndex++) {
$blockIdData = '';
$blockDataData = '';
$skyLightData = '';
$blockLightData = '';
for ($i = 0; $i < 256; $i++) {
$startIndex = ($blockIndex + ($i << 3)) << 3;
$blockIdData .= substr($blockIdArray, $startIndex << 1, 16);
$blockDataData .= substr($blockDataArray, $startIndex, 8);
$skyLightData .= substr($skyLightArray, $startIndex, 8);
$blockLightData .= substr($blockLightArray, $startIndex, 8);
}
$chunkData .= "\x00" . $blockIdData . $blockDataData . $skyLightData . $blockLightData;
$blockIdArray = $data['blocks'];
$blockDataArray = $data['data'];
$countBlocksInChunk = 8;
$chunkData = chr($countBlocksInChunk);
for ($blockIndex = 0; $blockIndex < $countBlocksInChunk; $blockIndex++) {
$blockIdData = '';
$blockDataData = '';
for ($i = 0; $i < 256; $i++) {
$startIndex = ($blockIndex + ($i << 3)) << 3;
$blockIdData .= substr($blockIdArray, $startIndex << 1, 16);
$blockDataData .= substr($blockDataArray, $startIndex, 8);
}
$blockData = "\x00" . $blockIdData . $blockDataData;
$chunkData .= $blockData;
}
$chunkData .= $data['heightMap'] . $data['biomeColor'] . Binary::writeLInt(0) . implode('', $data['tiles']);
}
Expand All @@ -141,8 +102,8 @@ protected function doChunk($data) {
$pk->encode($protocol);
$buffer = $pk->getBuffer();
$decodedBuffer = Binary::writeVarInt(strlen($buffer)) . $buffer;
$buffer = zlib_encode($decodedBuffer, ZLIB_ENCODING_DEFLATE, 7);
$this->server->sendData($data['identifier'], $buffer);
$buffer = zlib_encode($decodedBuffer, Player::getCompressAlg($protocol), 7);
$this->server->sendData($data['identifier'], $buffer);
$this->setCache(Level::chunkHash($data['chunkX'], $data['chunkZ']), ($protocol << 4) | $subClientId, $buffer);
}

Expand Down
76 changes: 35 additions & 41 deletions src/pocketmine/PacketMaker.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,50 +70,44 @@ protected function tick() {
}

protected function checkPacket($data) {
foreach ($data['moveData'] as $identifier => $moveData) {
$moveStr = "";
foreach ($moveData['data'] as $singleMoveData) {
if ($singleMoveData[7]) {
$pk = new MovePlayerPacket();
$pk->eid = $singleMoveData[0];
$pk->x = $singleMoveData[1];
$pk->y = $singleMoveData[2];
$pk->z = $singleMoveData[3];
$pk->pitch = $singleMoveData[6];
$pk->yaw = $singleMoveData[5];
$pk->bodyYaw = $singleMoveData[4];
} else {
$pk = new MoveEntityPacket();
$pk->entities = [$singleMoveData];
$moveData = $data['data'];
$playersData = $data['player'];
$encodedPackets = [];
foreach ($playersData as $identifier => $playerData) {
$moveStr = '';
foreach ($playerData['subIds'] as $subClientId => $entityIds) {
$playerIndex = ($playerData['playerProtocol'] << 4) | $subClientId;
foreach ($entityIds as $eid) {
if (!isset($encodedPackets[$eid][$playerIndex])) {
if (!isset($moveData[$eid])) {
continue;
}
$singleMoveData = $moveData[$eid];
if ($singleMoveData[7]) {
$pk = new MovePlayerPacket();
$pk->eid = $singleMoveData[0];
$pk->x = $singleMoveData[1];
$pk->y = $singleMoveData[2];
$pk->z = $singleMoveData[3];
$pk->pitch = $singleMoveData[6];
$pk->yaw = $singleMoveData[5];
$pk->bodyYaw = $singleMoveData[4];
} else {
$pk = new MoveEntityPacket();
$pk->entities = [$singleMoveData];
}
$pk->senderSubClientID = $subClientId;
$pk->encode($playerData['playerProtocol']);
$buffer = $pk->getBuffer();
$encodedPackets[$eid][$playerIndex] = Binary::writeVarInt(strlen($buffer)) . $buffer;
}
$moveStr .= $encodedPackets[$eid][$playerIndex];
}
$pk->senderSubClientID = $singleMoveData[8];
$pk->encode($moveData['playerProtocol']);
$buffer = $pk->getBuffer();
$moveStr .= Binary::writeVarInt(strlen($buffer)) . $buffer;
}
$buffer = zlib_encode($moveStr, ZLIB_ENCODING_DEFLATE, 7);
$pkBatch = new BatchPacket();
$pkBatch->payload = $buffer;
$pkBatch->encode($moveData['playerProtocol']);
$pkBatch->isEncoded = true;
$this->sendData($identifier, $pkBatch->getBuffer());
}
foreach ($data['motionData'] as $identifier => $motionData) {
$motionStr = "";
foreach ($motionData['data'] as $singleMotionData) {
$pk = new SetEntityMotionPacket();
$pk->entities = [$singleMotionData];
$pk->senderSubClientID = $singleMotionData[4];
$pk->encode($motionData['playerProtocol']);
$buffer = $pk->getBuffer();
$motionStr .= Binary::writeVarInt(strlen($buffer)) . $buffer;
if (!empty($moveStr)) {
$buffer = zlib_encode($moveStr, Player::getCompressAlg($playerData['playerProtocol']), 7);
$this->sendData($identifier, $buffer);
}
$buffer = zlib_encode($motionStr, ZLIB_ENCODING_DEFLATE, 7);
$pkBatch = new BatchPacket();
$pkBatch->payload = $buffer;
$pkBatch->encode($motionData['playerProtocol']);
$pkBatch->isEncoded = true;
$this->sendData($identifier, $pkBatch->getBuffer());
}
}

Expand Down
Loading