ここに書いてあるコード、情報に誤りがあり、あなたにいかなる損害を与えたとしても私は責任を負わないものとします。 2017/10/09 wakame0731
※今回はPMMP向けのコードです。
1.2で追加された本と羽ペン、記入済みの本には上の画像のように本の中に画像を表示させることができます。
それでは説明していきます。
プラグインのコードと同じディレクトリに、表示する画像を置いてください。
今回の画像出す画像はこんな感じです。周囲がかなり切り取られるので注意してください。
ちなみにpngかjpegであれば問題ないようです。
use pocketmine\Player;
use pocketmine\item\Item;
use pocketmine\item\ItemFactory;
use pocketmine\item\WrittenBook;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\network\mcpe\protocol\PhotoTransferPacket;
use pocketmine\nbt\tag\LongTag;
public function onJoin(PlayerJoinEvent $e){
$player = $e->getPlayer();
$inventory = $player->getInventory();
//画像の読み込み
$path = __FILE__ ;
$dir = dirname($path);
$fullPath = $dir.'\image.png';
$ImgData = file_get_contents($fullPath);
//画像データを送信
$photo = new PhotoTransferPacket;
$photo->photoName = "image.png";
$photo->photoData = $ImgData;
$photo->bookId = "0";//本のIDを指定
$player->dataPacket($photo);
//本の準備
$book=ItemFactory::get(Item::WRITTEN_BOOK, 0, 1);
$book->setTitle("タイトル");//本のタイトル
$book->setAuthor("著者");//著者名
$book->addPage(0);//ページ追加(1ページ目)
$namedTag = $book->getNamedTag();
$namedTag->id = new LongTag("id", 0);//本のIDを設定(上のbookIdと同じ)
$namedTag->pages->{0}->photoname->setValue("image.png");//画像を指定(上のphotonameと同じ)
$book->setNamedTag($namedTag);
//プレイヤーにアイテムを渡す
$inventory->setItem(0, $book);
}
このコードはプレイヤーがログインした時に画像が載った本を渡すものです。
大体コメントで書いてあるので分かると信じています。
何かあったらコメントなりツイッターなりで…