|
17 | 17 | use pocketmine\event\player\PlayerKickEvent;
|
18 | 18 | use pocketmine\event\player\PlayerQuitEvent;
|
19 | 19 | use pocketmine\event\entity\EntityTeleportEvent;
|
| 20 | +use pocketmine\network\Network; |
20 | 21 |
|
21 | 22 | class MagicCarpet extends BaseCommand implements Listener {
|
22 | 23 | protected $block;
|
@@ -63,16 +64,27 @@ public function onCommand(CommandSender $sender,Command $cmd,$label, array $args
|
63 | 64 | }
|
64 | 65 | private function deSpawn(Player $pl,array &$blocks) {
|
65 | 66 | $l = $pl->getLevel();
|
66 |
| - foreach($blocks as $i=>$block){ |
67 |
| - list($x,$y,$z)=array_map("intval", explode(".", $i)); |
68 |
| - $pk = new UpdateBlockPacket(); |
69 |
| - $pk->x = $x; |
70 |
| - $pk->y = $y; |
71 |
| - $pk->z = $z; |
72 |
| - $pk->block = $block->getId(); |
73 |
| - $pk->meta = $block->getDamage(); |
74 |
| - Server::broadcastPacket($l->getUsingChunk($pk->x >> 4,$pk->z >> 4), |
75 |
| - $pk); |
| 67 | + if (version_compare($this->owner->getServer()->getApiVersion(),"1.12.0") >= 0) { |
| 68 | + $sndblks = []; |
| 69 | + foreach($blocks as $i=>$block){ |
| 70 | + list($x,$y,$z)=array_map("intval", explode(".", $i)); |
| 71 | + $sndblks[] = Block::get($block->getId(),$block->getDamage(), |
| 72 | + new Position($x,$y,$z,$l)); |
| 73 | + } |
| 74 | + $l->sendBlocks($l->getChunkPlayers($pl->getX()>>4,$pl->getZ()>>4), |
| 75 | + $sndblks, UpdateBlockPacket::FLAG_ALL_PRIORITY); |
| 76 | + } else { |
| 77 | + foreach($blocks as $i=>$block){ |
| 78 | + list($x,$y,$z)=array_map("intval", explode(".", $i)); |
| 79 | + $pk = new UpdateBlockPacket(); |
| 80 | + $pk->x = $x; |
| 81 | + $pk->y = $y; |
| 82 | + $pk->z = $z; |
| 83 | + $pk->block = $block->getId(); |
| 84 | + $pk->meta = $block->getDamage(); |
| 85 | + Server::broadcastPacket($l->getUsingChunk($pk->x >> 4,$pk->z >> 4), |
| 86 | + $pk); |
| 87 | + } |
76 | 88 | }
|
77 | 89 | }
|
78 | 90 | private function carpet(Player $pl) {
|
|
0 commit comments