提供: Minecraft Modding Wiki
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
3行目: | 3行目: | ||
== UpgradeNBTDataの利用 == | == UpgradeNBTDataの利用 == | ||
− | + | Turtleより提供されるTurtle Upgrade用のNBTTagCompound(UpgradeNBTData)の利用方法について解説します。 | |
*UpgradeNBTDataの取得 | *UpgradeNBTDataの取得 | ||
*UpgradeNBTDataの同期 | *UpgradeNBTDataの同期 | ||
− | |||
=== UpgradeNBTDataの取得 === | === UpgradeNBTDataの取得 === | ||
15行目: | 14行目: | ||
NBTTagCompound nbt = turtle.getUpgradeNBTData(side); | NBTTagCompound nbt = turtle.getUpgradeNBTData(side); | ||
</source> | </source> | ||
− | + | 引数では、UpgradeNBTDataを取得したいTurtle Upgradeの装着方向を指定します。 | |
− | + | ||
+ | 各Turtleは左のTurtle Upgrade用のUpgradeNBTDataと右のTurtle Upgrade用のUpgradeNBTDataを持っていて、それぞれのUpgradeNBTDataは独立しています。<br> | ||
+ | このメソッドで取得したNBTTagCompoundは(TileEntityやItemStackのNBTTagCompoundと同じように)データの保存や取得が可能です。詳しくはForgeチュートリアルのNBTに関するページを参照してください。 | ||
+ | |||
+ | Minecraftの構造上、(シングル・マルチを問わず)NBTTagCompoundにも「サーバ側」と「クライアント側」が存在します。<br> | ||
+ | 基本的にはサーバ側のNBTTagCompoundを利用することになりますが、NBTTagCompoundのデータを元にTurtle Upgradeの外観を変えたりなどする場合はクライアント側のNBTTagCompoundを利用する必要があります。<br> | ||
+ | サーバ側のNBTTagCompoundの状態をクライアント側のNBTTagCompoundへ反映させる(同期する)には後述するITurtleAccess.updateUpgradeNBTData()を利用します。 | ||
− | + | サーバ側のUpgradeNBTDataに保存したデータはゲームを終了しても消去されず、ゲームを再開したときに再び取得することができます。<br> | |
+ | ただし、以下の場合は保存したデータが消去されます。 | ||
+ | *Turtle Upgradeを取り外す(取り外されたTurtle Upgradeの方のUpgradeNBTDataのみ消去されます) | ||
+ | *別のTurtle Upgradeと交換する(交換されたTurtle Upgradeの方のUpgradeNBTDataのみ消去されます) | ||
+ | *Turtleを破壊する(両方のUpgradeNBTDataが消去されます。ラベルを付けたTurtleでも消去されます) | ||
+ | |||
+ | 周辺機器タイプのTurtleで周辺機器実装クラスでもUpgradeNBTDataを利用したい場合は、以下のように周辺機器側でITurtleAccessとTurtleSideのインスタンスを保存しておきます。 | ||
<source lang = "java"> | <source lang = "java"> | ||
public class TurtleSample implements ITurtleUpgrade { | public class TurtleSample implements ITurtleUpgrade { | ||
35行目: | 46行目: | ||
public SamplePeripheral(ITurtleAccess turtle, TurtleSide side) { | public SamplePeripheral(ITurtleAccess turtle, TurtleSide side) { | ||
// コンストラクタで渡されたITurtleAccessとTurtleSideのインスタンスを保存 | // コンストラクタで渡されたITurtleAccessとTurtleSideのインスタンスを保存 | ||
− | // | + | // turtleAccess.getUpgradeNBTData(turtleSide) のようにしてUpgradeNBTDataを取得 |
turtleAccess = turtle; | turtleAccess = turtle; | ||
turtleSide = side; | turtleSide = side; | ||
} | } | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== UpgradeNBTDataの同期 === | === UpgradeNBTDataの同期 === | ||
62行目: | 58行目: | ||
turtle.updateUpgradeNBTData(side); | turtle.updateUpgradeNBTData(side); | ||
</source> | </source> | ||
− | + | UpgradeNBTDataはTurtleがワールドへロードされた時などにも同期されますが、このメソッドを呼び出すと即座に同期されます。 | |
− | |||
− | |||
− |