(ITurtleAccess.updateUpgradeNBTDataの説明を少し修正) |
(解説文を修正) |
||
(同じ利用者による、間の2版が非表示) | |||
3行目: | 3行目: | ||
== UpgradeNBTDataの利用 == | == UpgradeNBTDataの利用 == | ||
− | + | Turtleより提供されるUpgrade用のNBTTagCompound(以下UpgradeNBTData)の利用方法について解説します。 | |
*UpgradeNBTDataの取得 | *UpgradeNBTDataの取得 | ||
*UpgradeNBTDataの同期 | *UpgradeNBTDataの同期 | ||
+ | |||
=== UpgradeNBTDataの取得 === | === UpgradeNBTDataの取得 === | ||
14行目: | 15行目: | ||
NBTTagCompound nbt = turtle.getUpgradeNBTData(side); | NBTTagCompound nbt = turtle.getUpgradeNBTData(side); | ||
</source> | </source> | ||
− | + | 引数でUpgradeNBTDataを取得するTurtle Upgradeの装着方向を指定します。<br> | |
− | + | 各TurtleのUpgradeNBTDataは左右で独立しており、それぞれ別のデータを保存することができます。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 周辺機器タイプのTurtleで、周辺機器実装クラス側でもUpgradeNBTDataを利用したい場合は、以下のようにITurtleAccessとTurtleSideのインスタンスを周辺機器側で保存しておきます。 | |
<source lang = "java"> | <source lang = "java"> | ||
public class TurtleSample implements ITurtleUpgrade { | public class TurtleSample implements ITurtleUpgrade { | ||
46行目: | 35行目: | ||
public SamplePeripheral(ITurtleAccess turtle, TurtleSide side) { | public SamplePeripheral(ITurtleAccess turtle, TurtleSide side) { | ||
// コンストラクタで渡されたITurtleAccessとTurtleSideのインスタンスを保存 | // コンストラクタで渡されたITurtleAccessとTurtleSideのインスタンスを保存 | ||
− | // turtleAccess.getUpgradeNBTData(turtleSide) | + | // UpgradeNBTDataは turtleAccess.getUpgradeNBTData(turtleSide) のようにして取得 |
turtleAccess = turtle; | turtleAccess = turtle; | ||
turtleSide = side; | turtleSide = side; | ||
} | } | ||
</source> | </source> | ||
+ | |||
+ | |||
+ | === UpgradeNBTDataの利用 === | ||
+ | ITurtleAccess.getUpgradeNBTData()で取得したUpgradeNBTDataは(TileEntityやItemStackで利用できるNBTTagCompoundと同じように)データの保存や取得が可能です。<br> | ||
+ | NBTTagCompoundの詳しい取り扱い方については、ForgeチュートリアルのNBTに関するページを参照してください。 | ||
+ | |||
+ | Minecraftの構造上、(シングル・マルチを問わず)UpgradeNBTDataにも「サーバ側」と「クライアント側」が存在します。<br> | ||
+ | ツールや周辺機器の動作などで基本的にはサーバ側のUpgradeNBTDataを利用することになりますが、保存したデータを元にTurtle Upgradeの外観を変更する等の場合はクライアント側のUpgradeNBTDataを利用する必要があります。<br> | ||
+ | サーバ側のUpgradeNBTDataの状態をクライアント側へ即時に反映させる(同期させる)ためには、後述の ITurtleAccess.updateUpgradeNBTData() を呼び出します。 | ||
+ | |||
+ | サーバ側のUpgradeNBTDataに保存したデータはゲームを終了しても消去されず、ゲーム再開後に再び取得することができます。<br> | ||
+ | ただし、以下の場合は保存したデータが消去されます。 | ||
+ | *Turtle Upgradeを取り外す(取り外された方向のUpgradeNBTDataのみ消去されます) | ||
+ | *別のTurtle Upgradeと交換する(交換された方向のUpgradeNBTDataのみ消去されます) | ||
+ | *Turtleを破壊する(両方のUpgradeNBTDataが消去されます。ラベルを付けたTurtleでも消去されます) | ||
=== UpgradeNBTDataの同期 === | === UpgradeNBTDataの同期 === | ||
61行目: | 65行目: | ||
サーバ側からの呼び出しのみ有効で、クライアント側で呼び出してもクライアント側のUpgradeNBTDataがサーバ側に反映されるということはありません。 | サーバ側からの呼び出しのみ有効で、クライアント側で呼び出してもクライアント側のUpgradeNBTDataがサーバ側に反映されるということはありません。 | ||
− | + | UpgradeNBTDataはTurtleがワールドへロードされた時などにも同期されますが、このメソッドを呼び出すと即時に同期されます。 |
2017年3月18日 (土) 06:36時点における最新版
この記事は"Minecraft Forge Universal 10.13.x.x~"及び"ComputerCraft 1.65~"を前提MODとしています。 |
UpgradeNBTDataの利用[編集]
Turtleより提供されるUpgrade用のNBTTagCompound(以下UpgradeNBTData)の利用方法について解説します。
- UpgradeNBTDataの取得
- UpgradeNBTDataの同期
UpgradeNBTDataの取得[編集]
UpgradeNBTDataは ITurtleAccess.getUpgradeNBTData() で取得します。
// NBTTagCompound ITurtleAccess.getUpgradeNBTData( TurtleSide side ); NBTTagCompound nbt = turtle.getUpgradeNBTData(side);
引数でUpgradeNBTDataを取得するTurtle Upgradeの装着方向を指定します。
各TurtleのUpgradeNBTDataは左右で独立しており、それぞれ別のデータを保存することができます。
周辺機器タイプのTurtleで、周辺機器実装クラス側でもUpgradeNBTDataを利用したい場合は、以下のようにITurtleAccessとTurtleSideのインスタンスを周辺機器側で保存しておきます。
public class TurtleSample implements ITurtleUpgrade { @Override public IPeripheral createPeripheral(ITurtleAccess turtle, TurtleSide side) { return new SamplePeripheral(turtle, side); // 周辺機器側にITurtleAccessとTurtleSideのインスタンスを渡す }
public class SamplePeripheral implements IPeripheral { private final ITurtleAccess turtleAccess; private final TurtleSide turtleSide; public SamplePeripheral(ITurtleAccess turtle, TurtleSide side) { // コンストラクタで渡されたITurtleAccessとTurtleSideのインスタンスを保存 // UpgradeNBTDataは turtleAccess.getUpgradeNBTData(turtleSide) のようにして取得 turtleAccess = turtle; turtleSide = side; }
UpgradeNBTDataの利用[編集]
ITurtleAccess.getUpgradeNBTData()で取得したUpgradeNBTDataは(TileEntityやItemStackで利用できるNBTTagCompoundと同じように)データの保存や取得が可能です。
NBTTagCompoundの詳しい取り扱い方については、ForgeチュートリアルのNBTに関するページを参照してください。
Minecraftの構造上、(シングル・マルチを問わず)UpgradeNBTDataにも「サーバ側」と「クライアント側」が存在します。
ツールや周辺機器の動作などで基本的にはサーバ側のUpgradeNBTDataを利用することになりますが、保存したデータを元にTurtle Upgradeの外観を変更する等の場合はクライアント側のUpgradeNBTDataを利用する必要があります。
サーバ側のUpgradeNBTDataの状態をクライアント側へ即時に反映させる(同期させる)ためには、後述の ITurtleAccess.updateUpgradeNBTData() を呼び出します。
サーバ側のUpgradeNBTDataに保存したデータはゲームを終了しても消去されず、ゲーム再開後に再び取得することができます。
ただし、以下の場合は保存したデータが消去されます。
- Turtle Upgradeを取り外す(取り外された方向のUpgradeNBTDataのみ消去されます)
- 別のTurtle Upgradeと交換する(交換された方向のUpgradeNBTDataのみ消去されます)
- Turtleを破壊する(両方のUpgradeNBTDataが消去されます。ラベルを付けたTurtleでも消去されます)
UpgradeNBTDataの同期[編集]
サーバ側で変更したUpgradeNBTDataをクライアント側へ反映させるには ITurtleAccess.updateUpgradeNBTData() を呼び出します。
// void ITurtleAccess.updateUpgradeNBTData( TurtleSide side ) turtle.updateUpgradeNBTData(side);
引数でUpgradeNBTDataを同期したいTurtle Upgradeの装着方向を指定します。
サーバ側からの呼び出しのみ有効で、クライアント側で呼び出してもクライアント側のUpgradeNBTDataがサーバ側に反映されるということはありません。
UpgradeNBTDataはTurtleがワールドへロードされた時などにも同期されますが、このメソッドを呼び出すと即時に同期されます。