Vivadoのライセンス更新
こういう作業が一番めんどくさい
環境は前までの記事を読んでもらえればと思います。
時間がないので箇条書きで
- https://account.amd.com/en/forms/license/license-form.htmlに飛ぶ。
- ライセンスを所有するアカウントでログインする。
- 「購入済みライセンスについて」の「ザイリンクス製品ライセンス取得ページ」をクリックして移動。
- 欲しいライセンスを選択して「Generate Floating License」を選択。
【追記】Floating Licenseでは動かなかった。nodeのほうが安全かと
- Requested seats を1に設定。
- 2 SYSTEM INFORMATIONにHOSTを追加する。入力する内容は以下の手順で得る。
- ターミナルで$ vlm
- View Host informationを選択。
- 記述されたHost NameとNetwork interface Cardの情報をそのまま設定にコピペする。
- Next
- 生成してCongratulationsが出たら完了DLする
- メールに来ない場合はhttps://japan.xilinx.com/getlicenseに移動する
- Manage Licensesからさっき作ったホストを選んで左下(かなり左下)の↓マークのボタンを推してライセンスをDL
- ターミナルで$ vlm
- Get Licenseのload Licenseを選択してCopy License...を押して先程DLしたXilinx.licを選択して読み込む。
完了。
個人的に使うLinuxコマンド
自分用のメモです。毎回調べるようなコマンドを追記していきます。
目次
Linuxコマンド
作業系
sudo権限を付与する
rootのパスが必要
$ su
$ sudo visudo
nanoが開くので%sudoの下に
username ALL=(ALL) ALL
を書き加える。ctrl + X , y , Enterで保存して終了できる。
$ exit
でrootから抜ける。
$ sudo pwd
を実行してみる。パスワードが求められた後実行できたら成功。
Git関連
ステータス確認
$ git status
git clone
$ git clone [ここにURLなど]
現在いるブランチ確認
$ git branch
ブランチ生成
$ git branch [ブランチ名]
ブランチ移動
$ git checkout -b [ブランチ名]
Git関連 fork編
upstreamの設定
$ git remote add upstream [fork元のssh]
$ git fetch upstream
フォーク元のブランチ(B)からブランチ(A)を生成
$ git pull upstream B
$ git checkout -b A upstream/B
$ git push (リモートに反映させる場合)
環境設定
shell確認
$ cat /etc/passwd | grep [username]
PetaLinuxでSSH接続
※完全に自分のメモ用です。説明を省略した部分が多いです。
※前回の続きです
berota.hatenablog.com
はじめに
Zybo Z7-10にLinuxを入れたからにはSSH接続で色々やりたい。
将来的には入力をFPGA側で制御して、タイムスタンプ付きでテキストにまとめてホストしてるUbuntuに送る。みたいなことをしたい。
PetaLinuxは最低限のバイナリしか用意されていないのでconfigで色々設定してからProjectをビルドする必要がある。
どうやらdropbearが初期設定で登録されているようなので、これを無効化した上でsshを有効化する。
今回は同一LAN内、というよりVirtualBox内のUbuntuとボードの間のssh通信を試みる。一応同一LAN内の他のサーバーにも接続できたのでこの方法でやれば問題ないはず。
PetaLinuxでSSH接続
一度やってしまえば楽なのだが、何かと設定が多い。
…というより、この手順を明確にした公式ドキュメントないのかな…探すの疲れた
それはそうと、ボードにLANケーブルを刺してネットワークに接続する必要があるので注意。
※PetaLinuxのバージョンは前回に引き続き2022.1です。
PetaLinux projectの設定
projectのフォルダに移動する。
$ cd /home/username/project_1/peta_project
SSHの設定とdropbear無効化
Exitを1回押して
SaveしてExit
- console > network > openssh
- openssh, openssh-sshd, openssh-sftp-server, openssh-scpを有効化
- Save > OK > Exit×5
・Packageの設定(これ必要?詳しい人教えてください)
- Image Features
- package-management 有効化
Petalinuxを再ビルド
$ LANG=C petalinux-build
$ petalinux-package --boot --force --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/system.bit --u-boot
$ sudo mount /dev/sdb1 /home/username/BOOT
$ sudo mount /dev/sdb2 /home/username/ROOT
ここでread only(読み込み専用)と出る場合、SDカードのLockが付いてる場合があります。要注意。
$ cd /home/username/project_1/peta_project/images/linux/
$ sudo cp BOOT.BIN boot.scr image.ub /home/username/BOOT/
$ sudo tar xf rootfs.tar.gz -C /home/username/ROOT/
$ sync
gtktermの起動
前回行った手順と同じ。USBのポートが異なる場合は対応するポートで設定してください。
$ sudo gtkterm
- gtktermが起動したらConfigration>portを選択。
- Portを/dev/tty/USB1
- Band Rateを115200
- Parityをnone
- Bitsを8
- Stopbitsを1
- Flow controlをnoneに設定。
- OKで設定が完了したら、Zyboの電源をONする。
- 一斉に文字が流れてPetaLinuxが起動する。
Zybo Z7-10にLinuxを入れる
※完全に自分のメモ用です。説明を省略した部分が多いです。
はじめに
FPGAに触れる機会があり、Vivadoでの開発をそこそこやってみた。
Verilogに慣れてきたところで、Zybo Z7-10を弄ってみることにした、Zybo Z7-10はFPGAだけでなくCPUが搭載されており、ネットワークに接続して通信も可能。
ここまで聞いてLinuxを入れないことがあるだろうか。いやない。(反語)
いろいろ調べてみるとAMDデバイス用にLinuxディストリビューションが用意されていて、その名もPetaLinuxというらしい。今回の目標はPetaLinuxをZybo Z7-10上で動かしてみること。そのための手順を数カ月後に記憶喪失した自分に向けてメモしておく。
(追記) どうやらPetalinuxという名称はコンパイラの名前であって、FPGAに実装するLinuxの名前は"embedded linux"が正式名称らしい、ただこの呼び方はあまりにも抽象的すぎるので"Zynq linux"と呼ばれる場合もある。記事の修正が面倒なので本文中の"Petalinux"は"embedded linux"のことなのだと脳内変換しておいてください。
参考元の内容と、自分の環境でうまくいかなかった部分の補足を付け加えた内容です。細かいコマンドの意味などは殆ど書かずに手順だけかいています。
株式会社ピクセラ様のホームページを""大い""に参考にさせていただきました。本当にありがとうございます。画像付きで見やすい解説です。オススメです。
https://www.pixela.co.jp/products/pickup/dev/petalinux/p1_1_environment.htmlwww.pixela.co.jp
使用したソフトなどのバージョンを記載しておきます。
- VirtualBox 7.0.8
- Ubuntu 20.04.1
- PetaLinux 2022.1
- Vivado 2022.1
目次
Zybo Z7-10にLinuxを入れる
Virtual boxでUbuntu環境を構築してPetaLinuxをビルドしてZybo Z7-10でLinuxを起動します。
準備
必要なもの
- Zybo Z7-10 もしくは Zybo Z7-20
- AMDアカウント
- ホストPC (Windows11を想定)
- microSDカード (4GB以上)
- microSDカードリーダー (ホストPCに刺さるやつ)
- ACアダプタ (5.5mm-2.1mmピンで5V3Aが理想)
ACアダプターの入手難易度が高いので要注意。店頭で入手は難しいと思う。秋月に売ってるやつを買うのが無難。
akizukidenshi.com
ちなみにZyboボードは最後まで出てこないのでPCに接続する必要はないです。
VirtualBoxを入手する。
まずは下記のサイトに飛んで「VirtualBox 7.0.8 platform package」のWindows hostをDLする。ついでにExtension PackもDLする。
DLしたインストーラを起動してVirtualBoxとExtensionのインストールが完了したらUbuntuを入手する。
UbuntuのISOイメージのダウンロード
どうせなら日本語環境でUbuntuを使ってみたいので下記のサイトに飛んでUbuntu 20.04.1 LTSのISOイメージをDLする。
このサイト、何故かクリックだけではダウンロードできない。右クリックして、新しいウィンドウで開いてそのウィンドウをリロードするとDLが始まる。(私の環境が悪い可能性もある)
DLしたUbuntu20.04.1のISOイメージはわかり易い場所に入れておく。後ほど使うので場所がわからないのは避けたい。
https://www.ubuntulinux.jp/News/ubuntu2004-ja-remix
Virtual boxでUbuntuを起動
VirtualBoxを起動すると右側のメニューに「新規」とあるのでクリック。
名前は適当で良い。Ubuntu20.04.1とかがオススメ。空白を入れるのはあまり良くない。
Folderは何でもいい。ここに今から作る仮想環境のUbuntuが格納される。
ISO Imageの右にある▽をクリックして「その他」をクリック。エクスプローラーが開くので先程DLした「ubuntu-ja-20.04.1-desktop-amd64.iso」を選択。次へ
Usernameをわかりやすい名前に設定する。今後コマンドで現れる"username"にはここで設定した名前を入力する。
Passwordの横にある目玉マークを押してパスワードを変更する。何度も入力するのでわかりやすいものにしておく。 次へ
メインメモリーを設定する。4096MBはあったほうがいいけど、ホストPCのメモリが16GB未満の場合は2048MB程度にしたほうが良い。ただし動作に時間がかかるので注意。
Processoursも設定する。4コアあれば十分だけど。やはりホストのCPUコア数を見て考えるべき。 次へ
次にDiskSizeを決めますが、200GB以上で設定すること。Vivadoのインストールで150GBの空きを要求されるので必須です。少なめに設定した場合は後ほど変更できるが、GPartedを使ってパーティションをリサイズする必要があるので初めから多めにとっておくのが無難。 次へ
一覧が表示されるので完了を押す。しばらく待てばUbuntuが起動して構築を数分間行う(自動)
デスクトップが表示されたら左のタスクバーからFirefoxとフォルダー意外全部削除しておくとよい。左下のアプリ一覧から端末(terminal)をお気に入り登録しておく。
コピペの設定
ホストからゲストにコピペができると嬉しい。なぜならコピペができるから。
Ubuntuを起動した状態で上部メニューの「デバイス」から「Guest Additions CDイメージの挿入…」を選択。
ポップアップが出るので「実行する」を選択。
パスワードを入力して認証するとターミナルが起動する。しばらく放置して「Press Return~」と表示されたらEnterを押して終了。
左のタスクバーにCDが表示されるので右クリックして「取り出す」を選択。
上部メニューの「仮想マシン」から「設定」を選択。
一般>高度>クリップボードの共有>ホストOSからゲストOSへ に設定。双方向でも良い。OKを押して設定完了するのを忘れずに。
上部メニューの「ファイル」から 閉じる>シャットダウン シグナルを送信 を実行。
次に起動するときにはコピペができるようになります。
大いに参考にしました。画像あるしこっち見たほうがいい!!
sudo権限を付与する
ターミナルを開いて次のコマンドを実行する。念の為断っておくが、先頭の$ はターミナルに入力しなくていい。
$ su
$ sudo visudo
nanoが開くので%sudoの下に
username ALL=(ALL) ALL
を書き加える。ctrl + X , y , Enterで保存して終了できる。
$ exit
でrootから抜ける。
$ sudo pwd
を実行してみる。パスワードが求められた後実行できたら成功。
PetaLinuxとVivadoのDL
先ほど作成したUbuntuを起動する。ここから先はUbuntu内での作業。
DL時に「You have chosen to open:」と表示されるので「Save File」にチェックを入れる。
Firefoxを使って
ここからPetaLinux2022.1 インストーラーをDLする。
同様に
ここから「ザイリンクス統合インストーラー2022.1:Linux用自己解凍型ウェブ インストーラー」をDL
何があってもPetaLinuxツールとVivadoのバージョンは合わせる
DLしたPetaLinuxツールと統合インストーラーは後ほど使う。おそらくダウンロードフォルダに入っているのでファイルを開いてホーム(/home/username)に移動しておく。
PetaLinuxの準備
PetaLinuxツールをインストール
権限を付与
$ chmod +x ./petalinux-v2022.1-04191534-installer.run
必要なパッケージをインストール
$sudo dpkg --add-architecture i386
$sudo apt install gawk build-essential net-tools xterm autoconf libtool libtinfo5 texinfo zlib1g-dev gcc-multilib libncurses5-dev libncursesw5-dev zlib1g:i386
インストールを実行
$ ./petalinux-v2022.1-04191534-installer.run --dir ~/Petalinux
しばらく眺めてるとライセンスに承諾するか聞かれるのでEnterを押す。ライセンスを読んだらqで離脱してyを押してEnter。
承諾する必要があるライセンスは2つ。
PetaLinuxのパスを設定
$ source ~/Petalinux/settings.sh
WARNING出るけど
$ echo $PETALINUX
を実行して/home/username/Petalinuxと出ればOK
.bashrcにパスの設定を打ち込む
毎回sourceコマンドを打つのは面倒なのでターミナル起動時に自動実行してくれるように設定する。
$ nano ~/.bashrc
で、.bashrcを開く。
一番下の何もない行に
source ~/Petalinux/settings.sh
を追加する。(ctrl + X → y →Enterで完了)
これでPetalinux 開発環境のセットアップは完了
Vivadoのインストール
権限を付与
$sudo chmod +x Xilinx_Unified_2022.1_0420_0327_Lin64.bin
不足しているパッケージをインストール (これをしないとLinux版のインストールはスタックする*1
$sudo apt install libtinfo5
$sudo apt install libncurses5
インストーラを実行
$sudo ./Xilinx_Unified_2022.1_0420_0327_Lin64.bin
GUIが開くので順番に入力していく。
- Next、アカウントのメアドとパスワードを入力してNext
- VivadoにチェックNext
- Vivado ML Standrdを選択Next
- Next
- ライセンスは全部Agree、Next
- Nextを押してOK押してInstallを実行。
容量が足りないとここで文字が赤く表示される。200GB用意しておけば余計なことをしない限り足りるはず。ここからの所要時間はメモリとコアの割当によるけどかなり掛かる。2時間ぐらいかかることもある。
Vivadoでプロジェクトの作成
Digilentボードファイルをインストールする。
https://github.com/Digilent/vivado-boards/archive/master.zip
zipを解凍したやつをホーム(/home/username)においておく
ZyboのボードファイルをVivadoのフォルダにつっこむ。
$ sudo mkdir ../../tools/Xilinx/Vivado/2022.1/data/boards/board_files
$ sudo cp -r vivado-boards-master/new/board_files/* ../../tools/Xilinx/Vivado/2022.1/data/boards/board_files
Create Project
ボードファイルをつっこんだらvivadoを再起動してcreate projectを選択する。設定は以下の通り。
- フォルダの場所はここではhome直下とした(デフォルト)
- プロジェクトの名前はproject_1(デフォルト)
- Default Partで左上のBordsを選択Vendorでdigilentinc.com
- Zybo Z7-10を選択
複数のwindowからなるGUIが出てきたらprojectの作成完了。
PetaLinux をビルドする
Vivadoを起動して"Create Project"を選択。
フォルダの場所はここではhome直下とした(デフォルト)
Default Partで左上のBordsを選択Vendorでdigilentinc.comを選び、Zybo Z7-10を選択
Vivadoでブロックデザインの作成
- AddSourceでCreateSourceを選択。名前はここでは"test"にした。
- 左のメニューからCreate Block Designを実行。名前はここではdesign_1にした。
- DiagramのAdd(+マーク)を押してZYNQ7 Prosessing Systemを選択,Run Block Automationをクリック
- M_AXI_GP0_ACLKとFCLK_CLK0をつなげる(直接クリック&ドラッグでつなげる)
- Sourcesタブの(ないならWindowから選択)design_1を右クリックしてCreate HDL Wrapperを行う。
- 左下のGenerate Bitstreamを実行。
- 実行が完了したらFileからExport、Export HardwareでInclude bitstreamにチェックを入れて実行
PetaLinux プロジェクト作成
プロジェクトを生成する。
$cd /home/username/project_1
$petalinux-create --type project --template zynq --name peta_project
$cd peta_project
$petalinux-config --get-hw-description=../design_1_wrapper.xsa
メニューが表示されるので
PetaLinuxをビルドする。
$petalinux-build
失敗してもめげずに再実行。数回やってダメならエラーの原因を特定して直しましましょう(適当)
[INFO] Successfully built projectと出れば成功!
USBを認識させる
参考にしました。
qiita.com
- ゲストOSをシャットダウンする。
- 認識させたいUSB端子をホストに指す。
- VirtualBoxのゲストOSの設定でUSBを選択
- 右のUSBに+のマークで認識させたいUSB端子を選択する。
- 追加したUSB端子を右クリックで編集。メーカー、製品名、シリアルNo.を削除してOK
- OKを押して認識させたいUSB端子を抜いてゲストOSを起動。
- その後認識させたいUSB端子を挿せば認識する。
PetaLinuxの実行
$ cd /home/username/project_1/peta_project
$ petalinux-package --boot --force --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/system.bit --u-boot
Bootimage generated successfullyが出れば成功。WARNINGは無視していい。
microSDカードのパーティション設定
今回は32GBのSDカードを使用。
SDカードの所在を確認する。
$lsblk
わからない場合はUSBを抜いてもう一度実行。前後の違いで判別できる。大抵sdbにある。
今回はsdbにあった場合の実行を記す。
fdiskを実行する。パーティションの編集ができる。
$sudo fdisk /dev/sdb
既存のパーティションを削除する。
"d"でパーティションを削除する。複数パーティションがある場合番号を聞かれる。全削除したいので1,2,3,...と1回ずつ行う。"i"を実行して「パーティションは何も設定されていません」と表示されれば完了。
新しいパーティションの設定
BOOT(200MB)とROOT(余りの部分に分ける。
- "n"を実行。パーティションの作成を行う。
- "p"を選択。
- "1"を選択。
- "2048"を入力
- "411648"を入力
- "n"を実行。
- "p"を選択。
- "2"を選択。
- 入力せずエンターを2回押す。
"w"で保存。$reboot で再起動する。
再起動後
$sudo fdisk /dev/sdb
で"i"を実行してパーティション1,2をチェックする。1が200MiBになってて、2も設定できてそうなら完了。
"w"でfdiskを完了。
$lsblk
を実行してsdbのツリーがsdb1,sdb2(デフォルトではこうなる)であることを確認する。今後はそれを前提にコマンドを実行する。異なる場合はその都度パスを変更する。
microSDカードに PetaLinux イメージを書き込む
いよいよmicroSDにマウントする。
$ sudo mkdir /home/username/BOOT
$ sudo mount /dev/sdb1 /home/username/BOOT
$ sudo mkdir /home/username/ROOT
$ sudo mount /dev/sdb2 /home/username/ROOT
$ cd /home/username/project_1/peta_project/images/linux/
$ sudo cp BOOT.BIN boot.scr image.ub /home/username/BOOT/
$ sudo tar xf rootfs.tar.gz -C /home/username/ROOT/
$ sync
これでSDカードにマウントは完了。Ubuntuを落としてSDカードリーダーを引っこ抜いて良い。
次の段階に移る前に、ボードとACアダプタを手元に用意する。
ボードのジャンパーピンをWALL-VU5VOとSD-QSPIでそれぞれショートさせる。
ACアダプタを接続してボードの電源スイッチをONにする。
必ずACアダプタのVとWを確認する。5Vで12.5W以上が必要だが、VやWが大きすぎると故障の原因となる。
ランプが光れば準備完了。
Linuxの起動
一旦ボードの電源をOFFにする。
ゲストOSのUbuntuを一旦終了する。
ボードとPCをUSB-micro USBケーブルでつなぐ。
Virtual Boxの設定を開き、USBを認識させる。
gtktermのインストールと設定
Ubuntuを起動し
dmesg | tail -f
を実行してボードとPCをつなぐUSBのポートを確認する。デフォルトでは /dev/tty/USB1
gtktermをインストールする。
$ sudo apt install gtkterm
gtktermを実行する。
$ sudo gtkterm
gtktermが起動したらConfigration > portを選択。
以下の設定に変更する。
- Portを/dev/tty/USB1
- Band Rateを115200
- Parityをnone
- Bitsを8
- Stopbitsを1
- Flow controlをnoneに設定。
OKで設定が完了。
PetaLinuxの起動
Zyboの電源をONする。
一斉に文字が流れてPetaLinuxが起動する。
peta_project login: が表示される。ログイン名はpetalinux。
パスワードを設定すれば完了。
$ echo Hello_World
と実行して"Hello_Worldと表示されれば成功!!お疲れ様でした。
(sudo権限は付与されてるけどrootに入れない。まだまだ検証が必要かも)
*1:無警告)なんだこれ…
VScodeのssh接続でXserverが使えなくなったが何とか直した話
自分用のメモです。
研究室内のサーバーにVScodeでssh接続して解析ツールを使っていました。
実験で習得したデータが正しいか、ヒストグラムを書いて確認…
だがXserverが機能せず…GUIが出てこない!!
ということで解決法をメモしておきます。
使用したサーバーとPCは同一のLANにあります。
私の環境でしか動かない可能性があります。念のためね。
1.環境変数を設定する。
export DISPLAY=IPアドレス:0.0
赤文字には自身のIPアドレスを入力してください。arp -aとかで確認できます。
これを打つだけ。いかがでしたか!!!
・・・と言っても、毎回起動するたびにIPを確認するのは面倒。
固定IPを使えば解決するが、ssh接続したタイミングでコマンドを(IPを自動取得した上で)実行してくれれば言うことがない。
2.bashrcにシェルスクリプトを書く
たったの1行です。
export DISPLAY=$(arp -a | grep MACアドレス | echo $(cut -b 4-14):0.0)
MACアドレスは機種に固有の名前です。物理アドレスと呼ばれることもあります。どこかのAppleとは無関係です。
MACアドレスの調べ方はOSによって異なるので各自調べてください。すぐに見つかります。
XX:XX:XX:XX:XX:XX のように、12桁のアルファベットと数字で構成されています。
何やってるか一応書きます。
- arpでネットワーク内のIPと対応するMACアドレスを調べます。
- 実行結果を | で右のgrepに渡し、grepはこの機種のMACアドレスのある行を切り取ります。
- 結果を | でcutに渡します。4バイト目から14バイトまでを切り取ってIPを習得します。(IPの長さによってはバイト数変わるかも…)
- それに:0.0をくっつけてDISPLAYにexport
いかがでしたか!
他の解決方法
MobaXtermを使えば解決!!でもVScode使いたいよね、分かる。
最後に
このシェルスクリプトは7割以上友人に書いてもらいました。感謝
同様の現象はVScode以外でも確認されています。役に立てば幸いです。
読んでくれてありがと、ではまた。
コマブロだけで疑似的にレシピを追加する Minecraft(JE)
ふと、コマブロだけでクラフトレシピが追加できないか思い立ち、色々試したので共有。
本+エメラルドでエンチャントされた本をクラフトしてみます。
コマンドの作成にはMCstacker様を使わせていただきました。
レシピの設定
上向きのドロッパーを2つ用意します。
説明のためにA,Bと呼びます。

ドロッパーAの横に赤石ブロックを置きます。Bに入力が入らないように注意します。

それではドロッパーAにアイテムを入れます。
これがそのままレシピになります。


Bには完成品を入れます。

次にコマンドです。リピートコマンドブロックを用意して以下のコマンドをコピペします。
/execute as @e[tag=craft] at @s if blocks [座標A] [座標A] ~ ~-1 ~ masked run clone [座標B] [座標B] ~ ~-1 ~ replace
[座標A]にはドロッパーAの座標を、[座標B]にはドロッパーBの座標を入力します。

レシピの設定は以上です。
作業台の設定
レシピを作りましたが、肝心の作業台がありません。
もちろん、普通の作業台を使ってもクラフトはできません。
そこで特殊な作業台を作りたいと思います。
以下のコマンドを先ほどのリピートコマブロにチェーンしてください。
/execute at @e[type=item,nbt={Item:{id:"minecraft:magma_cream",Count:1b,tag:{craft_ball:0}}}] run summon armor_stand ~ ~ ~ {Tags:["craft"]}

次のコマンドをチャットで実行してください。
/give @p magma_cream{HideFlags:1,craft_ball:0,Enchantments:[{id:"minecraft:infinity",lvl:1s}]} 1

このアイテムを捨てて、アーマースタンドが召喚されればOKです。
アーマースタンドを透明にしてもよいですが、サバイバルで破壊できなくなります。
実際にクラフトする
さきほど手に入れたマグマクリームをもって上向きドロッパーの上に乗ります。
マグマクリームを捨ててアーマースタンドをドロッパーの上に召喚します。
アーマースタンドが乗ってる間、このドロッパーが特殊作業台になります。

ドロッパーの側面にレバーを付けておきます。
クラフトしてみましょう!!
作ったレシピ通りにアイテムを並べて…

レバーを引くと…

できた!!!
ということで完成です。
レシピの追加はドロッパーA,Bを追加するだけです。
おまけ
マグマクリームからアマスタをわざわざ召喚したのは、交易でアイテム交換→それを使って作業台を作る。とやりたかったからです。
もちろん、アマスタをsummonしても使えます。
/summon armor_stand ~ ~ ~ {Tags:["craft"]}
村人のコマンドも一応置いておきます。
/summon villager ~ ~ ~ {Invulnerable:1b,Tags:["craft"],VillagerData:{profession:"minecraft:nitwit"},Offers:{Recipes:[{rewardExp:0b,maxUses:10000000,xp:0,buy:{id:"minecraft:emerald",Count:1b},sell:{id:"minecraft:magma_cream",Count:1b,tag:{HideFlags:1,craft_ball:0,Enchantments:[{id:"minecraft:infinity",lvl:1s}]}}}]}}
最初にドロッパーAの横に赤石ブロックを置いたやつですが、アレがないと動きません。
どうやらマイクラのバグでドロッパーをcloneでドロッパーに置き換えた時、中身が読み込まれないみたいです。
そこで強制的に読み込みを行わせるために
赤石入力ONのA→赤石入力OFFのB
とcloneして、レバーの赤石入力で更新させることで中身を読み込ませています。
まぁ…おまじないだと思っておきましょう!
ここまで読んでくれてありがとう!またね!