mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-05 09:39:56 +00:00
fixing ClientboundMapItemDataPacket
This commit is contained in:
parent
a6c0f1512c
commit
9f44b2ed75
@ -48,6 +48,9 @@ class ClientboundMapItemDataPacket extends DataPacket{
|
|||||||
public $eids = [];
|
public $eids = [];
|
||||||
/** @var int */
|
/** @var int */
|
||||||
public $scale;
|
public $scale;
|
||||||
|
|
||||||
|
/** @var int[] */
|
||||||
|
public $decorationEntityUniqueIds = [];
|
||||||
/** @var array */
|
/** @var array */
|
||||||
public $decorations = [];
|
public $decorations = [];
|
||||||
|
|
||||||
@ -79,17 +82,18 @@ class ClientboundMapItemDataPacket extends DataPacket{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(($this->type & self::BITFLAG_DECORATION_UPDATE) !== 0){
|
if(($this->type & self::BITFLAG_DECORATION_UPDATE) !== 0){
|
||||||
$count = $this->getUnsignedVarInt();
|
for($i = 0, $count = $this->getUnsignedVarInt(); $i < $count; ++$i){
|
||||||
for($i = 0; $i < $count; ++$i){
|
$this->decorationEntityUniqueIds[] = $this->getEntityUniqueId();
|
||||||
$weird = $this->getVarInt();
|
}
|
||||||
$this->decorations[$i]["rot"] = $weird & 0x0f;
|
|
||||||
$this->decorations[$i]["img"] = $weird >> 4;
|
|
||||||
|
|
||||||
|
for($i = 0, $count = $this->getUnsignedVarInt(); $i < $count; ++$i){
|
||||||
|
$this->decorations[$i]["rot"] = $this->getByte();
|
||||||
|
$this->decorations[$i]["img"] = $this->getByte();
|
||||||
$this->decorations[$i]["xOffset"] = $this->getByte();
|
$this->decorations[$i]["xOffset"] = $this->getByte();
|
||||||
$this->decorations[$i]["yOffset"] = $this->getByte();
|
$this->decorations[$i]["yOffset"] = $this->getByte();
|
||||||
$this->decorations[$i]["label"] = $this->getString();
|
$this->decorations[$i]["label"] = $this->getString();
|
||||||
|
|
||||||
$this->decorations[$i]["color"] = Color::fromARGB($this->getLInt()); //already BE, don't need to reverse it again
|
$this->decorations[$i]["color"] = Color::fromABGR($this->getUnsignedVarInt());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,6 +102,10 @@ class ClientboundMapItemDataPacket extends DataPacket{
|
|||||||
$this->height = $this->getVarInt();
|
$this->height = $this->getVarInt();
|
||||||
$this->xOffset = $this->getVarInt();
|
$this->xOffset = $this->getVarInt();
|
||||||
$this->yOffset = $this->getVarInt();
|
$this->yOffset = $this->getVarInt();
|
||||||
|
|
||||||
|
$count = $this->getUnsignedVarInt();
|
||||||
|
assert($count === $this->width * $this->height);
|
||||||
|
|
||||||
for($y = 0; $y < $this->height; ++$y){
|
for($y = 0; $y < $this->height; ++$y){
|
||||||
for($x = 0; $x < $this->width; ++$x){
|
for($x = 0; $x < $this->width; ++$x){
|
||||||
$this->colors[$y][$x] = Color::fromABGR($this->getUnsignedVarInt());
|
$this->colors[$y][$x] = Color::fromABGR($this->getUnsignedVarInt());
|
||||||
@ -135,14 +143,21 @@ class ClientboundMapItemDataPacket extends DataPacket{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(($type & self::BITFLAG_DECORATION_UPDATE) !== 0){
|
if(($type & self::BITFLAG_DECORATION_UPDATE) !== 0){
|
||||||
|
$this->putUnsignedVarInt(count($this->decorationEntityUniqueIds));
|
||||||
|
foreach($this->decorationEntityUniqueIds as $id){
|
||||||
|
$this->putEntityUniqueId($id);
|
||||||
|
}
|
||||||
|
|
||||||
$this->putUnsignedVarInt($decorationCount);
|
$this->putUnsignedVarInt($decorationCount);
|
||||||
foreach($this->decorations as $decoration){
|
foreach($this->decorations as $decoration){
|
||||||
$this->putVarInt(($decoration["rot"] & 0x0f) | ($decoration["img"] << 4));
|
$this->putByte($decoration["rot"]);
|
||||||
|
$this->putByte($decoration["img"]);
|
||||||
$this->putByte($decoration["xOffset"]);
|
$this->putByte($decoration["xOffset"]);
|
||||||
$this->putByte($decoration["yOffset"]);
|
$this->putByte($decoration["yOffset"]);
|
||||||
$this->putString($decoration["label"]);
|
$this->putString($decoration["label"]);
|
||||||
|
|
||||||
assert($decoration["color"] instanceof Color);
|
assert($decoration["color"] instanceof Color);
|
||||||
$this->putLInt($decoration["color"]->toARGB());
|
$this->putUnsignedVarInt($decoration["color"]->toABGR());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,6 +166,9 @@ class ClientboundMapItemDataPacket extends DataPacket{
|
|||||||
$this->putVarInt($this->height);
|
$this->putVarInt($this->height);
|
||||||
$this->putVarInt($this->xOffset);
|
$this->putVarInt($this->xOffset);
|
||||||
$this->putVarInt($this->yOffset);
|
$this->putVarInt($this->yOffset);
|
||||||
|
|
||||||
|
$this->putUnsignedVarInt($this->width * $this->height); //list count, but we handle it as a 2D array... thanks for the confusion mojang
|
||||||
|
|
||||||
for($y = 0; $y < $this->height; ++$y){
|
for($y = 0; $y < $this->height; ++$y){
|
||||||
for($x = 0; $x < $this->width; ++$x){
|
for($x = 0; $x < $this->width; ++$x){
|
||||||
$this->putUnsignedVarInt($this->colors[$y][$x]->toABGR());
|
$this->putUnsignedVarInt($this->colors[$y][$x]->toABGR());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user