Skip to content

Instantly share code, notes, and snippets.

@wakame0731
Last active May 6, 2018 15:04
Show Gist options
  • Save wakame0731/8e645932e8f8530c93a8fd5716454158 to your computer and use it in GitHub Desktop.
Save wakame0731/8e645932e8f8530c93a8fd5716454158 to your computer and use it in GitHub Desktop.
WrittenBookに画像を載せる方法

本に画像を載せる方法

1.2.5で使用できなくなりました。

ここに書いてあるコード、情報に誤りがあり、あなたにいかなる損害を与えたとしても私は責任を負わないものとします。 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);
  }

このコードはプレイヤーがログインした時に画像が載った本を渡すものです。
大体コメントで書いてあるので分かると信じています。
何かあったらコメントなりツイッターなりで…

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment