mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-19 01:16:38 +00:00
Require ext-chunkutils ^0.3.0
This commit is contained in:
parent
c605b54591
commit
11d2e1ef08
@ -7,7 +7,7 @@
|
|||||||
"require": {
|
"require": {
|
||||||
"php": "^8.0",
|
"php": "^8.0",
|
||||||
"php-64bit": "*",
|
"php-64bit": "*",
|
||||||
"ext-chunkutils2": "^0.2.0",
|
"ext-chunkutils2": "^0.3.0",
|
||||||
"ext-crypto": "^0.3.1",
|
"ext-crypto": "^0.3.1",
|
||||||
"ext-ctype": "*",
|
"ext-ctype": "*",
|
||||||
"ext-curl": "*",
|
"ext-curl": "*",
|
||||||
|
4
composer.lock
generated
4
composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "009abb4d28399a27dc9d059bfd849aee",
|
"content-hash": "ad6be987e3e2228abcb23e169f139d29",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "adhocore/json-comment",
|
"name": "adhocore/json-comment",
|
||||||
@ -3532,7 +3532,7 @@
|
|||||||
"platform": {
|
"platform": {
|
||||||
"php": "^8.0",
|
"php": "^8.0",
|
||||||
"php-64bit": "*",
|
"php-64bit": "*",
|
||||||
"ext-chunkutils2": "^0.2.0",
|
"ext-chunkutils2": "^0.3.0",
|
||||||
"ext-crypto": "^0.3.1",
|
"ext-crypto": "^0.3.1",
|
||||||
"ext-ctype": "*",
|
"ext-ctype": "*",
|
||||||
"ext-curl": "*",
|
"ext-curl": "*",
|
||||||
|
@ -129,7 +129,7 @@ namespace pocketmine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$chunkutils2_version = phpversion("chunkutils2");
|
$chunkutils2_version = phpversion("chunkutils2");
|
||||||
$wantedVersionLock = "0.2";
|
$wantedVersionLock = "0.3";
|
||||||
$wantedVersionMin = "$wantedVersionLock.0";
|
$wantedVersionMin = "$wantedVersionLock.0";
|
||||||
if($chunkutils2_version !== false && (
|
if($chunkutils2_version !== false && (
|
||||||
version_compare($chunkutils2_version, $wantedVersionMin) < 0 ||
|
version_compare($chunkutils2_version, $wantedVersionMin) < 0 ||
|
||||||
|
@ -32,8 +32,10 @@ use pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext;
|
|||||||
use pocketmine\utils\Binary;
|
use pocketmine\utils\Binary;
|
||||||
use pocketmine\utils\BinaryStream;
|
use pocketmine\utils\BinaryStream;
|
||||||
use pocketmine\world\format\Chunk;
|
use pocketmine\world\format\Chunk;
|
||||||
|
use pocketmine\world\format\PalettedBlockArray;
|
||||||
use pocketmine\world\format\SubChunk;
|
use pocketmine\world\format\SubChunk;
|
||||||
use function count;
|
use function count;
|
||||||
|
use function str_repeat;
|
||||||
|
|
||||||
final class ChunkSerializer{
|
final class ChunkSerializer{
|
||||||
|
|
||||||
@ -81,8 +83,17 @@ final class ChunkSerializer{
|
|||||||
$stream->putByte(count($layers));
|
$stream->putByte(count($layers));
|
||||||
|
|
||||||
foreach($layers as $blocks){
|
foreach($layers as $blocks){
|
||||||
$stream->putByte(($blocks->getBitsPerBlock() << 1) | ($persistentBlockStates ? 0 : 1));
|
if($blocks->getBitsPerBlock() === 0){
|
||||||
$stream->put($blocks->getWordArray());
|
//TODO: we use these in memory, but the game doesn't support them yet
|
||||||
|
//polyfill them with 1-bpb instead
|
||||||
|
$bitsPerBlock = 1;
|
||||||
|
$words = str_repeat("\x00", PalettedBlockArray::getExpectedWordArraySize(1));
|
||||||
|
}else{
|
||||||
|
$bitsPerBlock = $blocks->getBitsPerBlock();
|
||||||
|
$words = $blocks->getWordArray();
|
||||||
|
}
|
||||||
|
$stream->putByte(($bitsPerBlock << 1) | ($persistentBlockStates ? 0 : 1));
|
||||||
|
$stream->put($words);
|
||||||
$palette = $blocks->getPalette();
|
$palette = $blocks->getPalette();
|
||||||
|
|
||||||
//these LSHIFT by 1 uvarints are optimizations: the client expects zigzag varints here
|
//these LSHIFT by 1 uvarints are optimizations: the client expects zigzag varints here
|
||||||
|
@ -446,8 +446,15 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{
|
|||||||
$layers = $subChunk->getBlockLayers();
|
$layers = $subChunk->getBlockLayers();
|
||||||
$subStream->putByte(count($layers));
|
$subStream->putByte(count($layers));
|
||||||
foreach($layers as $blocks){
|
foreach($layers as $blocks){
|
||||||
$subStream->putByte($blocks->getBitsPerBlock() << 1);
|
if($blocks->getBitsPerBlock() !== 0){
|
||||||
$subStream->put($blocks->getWordArray());
|
$subStream->putByte($blocks->getBitsPerBlock() << 1);
|
||||||
|
$subStream->put($blocks->getWordArray());
|
||||||
|
}else{
|
||||||
|
//TODO: we use these in-memory, but they aren't supported on disk by the game yet
|
||||||
|
//polyfill them with a zero'd 1-bpb instead
|
||||||
|
$subStream->putByte(1 << 1);
|
||||||
|
$subStream->put(str_repeat("\x00", PalettedBlockArray::getExpectedWordArraySize(1)));
|
||||||
|
}
|
||||||
|
|
||||||
$palette = $blocks->getPalette();
|
$palette = $blocks->getPalette();
|
||||||
$subStream->putLInt(count($palette));
|
$subStream->putLInt(count($palette));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user