提供: Minecraft Modding Wiki
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
70行目: | 70行目: | ||
// Turtle UpgradeのID | // Turtle UpgradeのID | ||
− | private | + | private ResourceLocation upgradeID = new ResourceLocation(SampleUpgradeCore.MOD_ID, "sample"); |
// Turtle Upgradeの装着に必要なアイテム。ここではバニラアイテムの棒 | // Turtle Upgradeの装着に必要なアイテム。ここではバニラアイテムの棒 | ||
− | private | + | private ItemStack upgradeItem = new ItemStack(Items.stick); |
// Turtle UpgradeのIDをResourceLocationで指定 | // Turtle UpgradeのIDをResourceLocationで指定 | ||
88行目: | 88行目: | ||
} | } | ||
− | // | + | // Turtle Upgradeを装着したTurtleのアイテム名に付加される形容詞を返す |
− | |||
@Override | @Override | ||
public String getUnlocalisedAdjective() { | public String getUnlocalisedAdjective() { | ||
− | return " | + | // この例では"Sample Turtle"になる |
+ | return "Sample"; | ||
} | } | ||
128行目: | 128行目: | ||
} | } | ||
− | // | + | // 上に対応する動作が無かったとき「失敗」とメッセージを返す(CC1.76の時点でこのサンプルでは到達しないはず) |
return TurtleCommandResult.failure("Undefined command"); | return TurtleCommandResult.failure("Undefined command"); | ||
} | } | ||
137行目: | 137行目: | ||
@SideOnly(Side.CLIENT) | @SideOnly(Side.CLIENT) | ||
public Pair<IBakedModel, Matrix4f> getModel(ITurtleAccess turtle, TurtleSide side) { | public Pair<IBakedModel, Matrix4f> getModel(ITurtleAccess turtle, TurtleSide side) { | ||
− | // | + | // アイテムモデルをTurtleの左または右側に描画するための変形行列を作成 |
float xOffset = (side == TurtleSide.Left) ? -0.40625F : 0.40625F; | float xOffset = (side == TurtleSide.Left) ? -0.40625F : 0.40625F; | ||
Matrix4f transform = new Matrix4f( | Matrix4f transform = new Matrix4f( | ||
145行目: | 145行目: | ||
0.0F, 0.0F, 0.0F, 1.0F); | 0.0F, 0.0F, 0.0F, 1.0F); | ||
Minecraft mc = Minecraft.getMinecraft(); | Minecraft mc = Minecraft.getMinecraft(); | ||
− | // | + | // ItemStackからアイテムモデルを取得 |
IBakedModel model = mc.getRenderItem().getItemModelMesher().getItemModel(upgradeItem); | IBakedModel model = mc.getRenderItem().getItemModelMesher().getItemModel(upgradeItem); | ||
− | |||
return Pair.of(model, transform); | return Pair.of(model, transform); | ||
} | } | ||
154行目: | 153行目: | ||
@Override | @Override | ||
public void update(ITurtleAccess turtle, TurtleSide side) { | public void update(ITurtleAccess turtle, TurtleSide side) { | ||
− | + | ||
− | |||
− | |||
} | } | ||
176行目: | 173行目: | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== 解説 === | === 解説 === | ||
==== TurtleSample.java ==== | ==== TurtleSample.java ==== | ||
− | + | このクラスで定義されTurtleに装着されたTurtle Upgradeの処理はすべてComputerCraftに登録された単一のインスタンス内で行われます。 | |
− | |||
− | |||
− | |||
*getUnlocalisedAdjective()の戻り値と言語ファイルによる翻訳 | *getUnlocalisedAdjective()の戻り値と言語ファイルによる翻訳 | ||
− | + | 戻り値はゲーム内で表示される前にComputerCraftによってStatCollector#translateToLocalで処理されるため、langファイルによる翻訳も可能です。<br /> | |
− | 例えば、以下のようなlangファイル(UTF-8で保存)を assets\<mod_id>\lang\ja_JP.lang に置いて" | + | 例えば、以下のようなlangファイル(UTF-8で保存)を assets\<mod_id>\lang\ja_JP.lang に置いて"Sample"を返した場合、Minecraftの言語設定が日本語のときに「サンプル Turtle」のように表示されます。 |
| | ||
− | + | Sample=サンプル | |
− | *useTool() | + | *useTool()の戻り値について |
− | + | 戻り値は行動成功時にはTurtleCommandResult.success()、失敗時にはTurtleCommandResult.failure()を返します。<br> | |
+ | TurtleCommandResult.success()ではObject[]で追加パラメータ(値はIPeripheral#callMethodと同様にLuaの型へ変換されます)を、TurtleCommandResult.failure()では文字列で失敗理由を同時に返すことも可能です。 | ||
− | + | *update() | |
− | + | Turtle UpgradeがTurtleに装着されている間、毎tick呼び出されます。<br> | |
+ | 前述の通り、ロードされているチャンク内で装着されている数だけ呼び出されますが、各パラメータでどれに対する呼び出しなのかが判別可能です。<br> | ||
+ | また、サーバ側とクライアント側でそれぞれ別に呼び出されますが、どちら側の呼び出しなのかはturtle.getWorld().isRemoteの値で判別可能です。 |