提供: Minecraft Modding Wiki
移動先: 案内検索

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
70行目: 70行目:
  
 
// Turtle UpgradeのID
 
// Turtle UpgradeのID
private final ResourceLocation upgradeID = new ResourceLocation(SampleUpgradeCore.MOD_ID, "sample_tool");
+
private ResourceLocation upgradeID = new ResourceLocation(SampleUpgradeCore.MOD_ID, "sample");
 
// Turtle Upgradeの装着に必要なアイテム。ここではバニラアイテムの棒
 
// Turtle Upgradeの装着に必要なアイテム。ここではバニラアイテムの棒
private final ItemStack upgradeItem = new ItemStack(Items.stick);
+
private ItemStack upgradeItem = new ItemStack(Items.stick);
  
 
// Turtle UpgradeのIDをResourceLocationで指定
 
// Turtle UpgradeのIDをResourceLocationで指定
88行目: 88行目:
 
}
 
}
  
// 装着したTurtleのアイテム名に付加される形容詞を返す(『○○ Turtle』の○○の部分)
+
// Turtle Upgradeを装着したTurtleのアイテム名に付加される形容詞を返す
// 戻り値は(設定されていれば)langファイルによる翻訳を経てゲーム内に表示される
 
 
@Override
 
@Override
 
public String getUnlocalisedAdjective() {
 
public String getUnlocalisedAdjective() {
return "turtle.sample_tool.adjective";
+
// この例では"Sample Turtle"になる
 +
return "Sample";
 
}
 
}
  
128行目: 128行目:
 
}
 
}
  
// 対応する動作が無かったとき「失敗」とメッセージを返す(CC1.76の時点でこのサンプルでは到達しないはず)
+
// 上に対応する動作が無かったとき「失敗」とメッセージを返す(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の左または右側に描画するための変形行列を作成
+
// アイテムモデルを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);
// 返したモデルはTurtleのTileEntitySpecialRenderer内で描画される
 
 
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) {
// 毎tickこのクラスで定義したTurtle Upgradeの装着数×2(Server側とClient側の分)回呼び出される
+
 
// どのTurtle Upgradeに対するupdateなのかはパラメータのturtleとsideで判別可能
 
// またServerとClientのどちら側の呼び出しなのかはturtle.getWorld().isRemoteの値で判別可能
 
 
}
 
}
  
176行目: 173行目:
  
 
</source>
 
</source>
 
==== en_US.lang ====
 
アメリカ英語(デフォルト言語)のlangファイル<br />
 
assets\sampleupgrademod\lang ディレクトリに設置します。
 
<source lang="ini">
 
 
turtle.sample_tool.adjective=Sample
 
</source>
 
 
このTurtle UpgradeをTurtleに装着した際、そのTurtleのアイテム名が「Sample Turtle」のようになります。
 
  
 
=== 解説 ===
 
=== 解説 ===
 
==== TurtleSample.java ====
 
==== TurtleSample.java ====
*ComputerCraftに登録したTurtle UpgradeのインスタンスとTurtle Upgradeの処理について
+
このクラスで定義されTurtleに装着されたTurtle Upgradeの処理はすべてComputerCraftに登録された単一のインスタンス内で行われます。
ここで定義したTurtle Upgradeの処理は、すべてComputerCraftに登録した単一のインスタンス内で行われます(ブロックやアイテムの定義クラスと似たような感じです)。<br />
 
Turtleに装着した個々のTurtle Upgradeごとにインスタンスが作られるわけではないので、一部のメソッドではパラメータのITurtleAccessとTurtleSideの値からどのTurtle Upgradeに対する呼び出しなのかを判別して処理を行う必要があります。<br />
 
個々のTurtle Upgrade固有のデータを保存するためには[[ComputerCraft_API/1.65/UpgradeNBTDataの利用|UpgradeNBTData]]を利用することもできます。
 
  
 
*getUnlocalisedAdjective()の戻り値と言語ファイルによる翻訳
 
*getUnlocalisedAdjective()の戻り値と言語ファイルによる翻訳
戻り値はlangファイルによる翻訳も可能です(ゲーム内で表示される前にComputerCraftによってStatCollector#translateToLocalで処理されるため)。<br />
+
戻り値はゲーム内で表示される前にComputerCraftによってStatCollector#translateToLocalで処理されるため、langファイルによる翻訳も可能です。<br />
例えば、以下のようなlangファイル(UTF-8で保存)を assets\<mod_id>\lang\ja_JP.lang に置いて"turtle.sample_tool.adjective"を返した場合、Minecraftの言語設定が日本語のときに「サンプル Turtle」のように表示されます。
+
例えば、以下のようなlangファイル(UTF-8で保存)を assets\<mod_id>\lang\ja_JP.lang に置いて"Sample"を返した場合、Minecraftの言語設定が日本語のときに「サンプル Turtle」のように表示されます。
 
  &nbsp;
 
  &nbsp;
  turtle.sample_tool.adjective=サンプル
+
  Sample=サンプル
  
*useTool()と戻り値について
+
*useTool()の戻り値について
useTool()はゲーム内で実行されたluaプログラムに従って呼び出されますが、例えばブロックを掘ったりmobを攻撃したりというような処理はすべて自分で実装する必要があります(逆に言えば、「掘る」「攻撃する」にとらわれず自由に実装できるということでもあります)。<br />
+
戻り値は行動成功時にはTurtleCommandResult.success()、失敗時にはTurtleCommandResult.failure()を返します。<br>
 +
TurtleCommandResult.success()ではObject[]で追加パラメータ(値はIPeripheral#callMethodと同様にLuaの型へ変換されます)を、TurtleCommandResult.failure()では文字列で失敗理由を同時に返すことも可能です。
  
戻り値は行動成功時にはTurtleCommandResult.success()、失敗時にはTurtleCommandResult.failure()を返します。<br />
+
*update()
TurtleCommandResult.success()ではObject[]で追加のパラメータ(値はIPeripheral#callMethodと同様にLuaの型へ変換されます)を、TurtleCommandResult.failure()では文字列で失敗理由を同時に返すことも可能です。
+
Turtle UpgradeがTurtleに装着されている間、毎tick呼び出されます。<br>
 +
前述の通り、ロードされているチャンク内で装着されている数だけ呼び出されますが、各パラメータでどれに対する呼び出しなのかが判別可能です。<br>
 +
また、サーバ側とクライアント側でそれぞれ別に呼び出されますが、どちら側の呼び出しなのかはturtle.getWorld().isRemoteの値で判別可能です。

Minecraft Modding Wikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMinecraft Modding Wiki:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート: