[チュートリアル]アイテム追加MODの作り方[初級][1.1.0]

クライアント/サーバーMODの開発に関する話題、技術交換はこちらで。質問は質問フォーラムへお願いします。
  • (PostNo.11615)

[チュートリアル]アイテム追加MODの作り方[初級][1.1.0]

投稿記事by laco0416 » 2011年11月04日(金) 12:03

ModLoaderを利用しています。
MOD製作環境についてはWikiのMOD製作のページ(こちら)を参考にしてください。

・機能なし単純アイテムの追加
・用意するもの
mod_Tutorial.java
ItemTutorial.java
ttritem.png(.png形式,16×16)

mod_Tutorial.java
コード: 全て選択
package net.minecraft.src; //MCPのパッケージを読み込む

public class mod_Tutorial extends BaseMod { //クラス本体 BaseMod(ModLoaderのMOD製作API)を継承
   
   public String getVersion() { //MODのバージョン
      return "1.0.0";
   }

   public static Item ttrItem;//Itemクラス型の変数を宣言します
   public static int itemID = 5000; //ItemIDを設定。既存IDとかぶらなければ何でも。

   public void load() { //mod_Nameクラスのコンストラクタ。ここで大体の処理を行います

      ttrItem = new ItemTutorial(itemID).setItemName("ttrItem");
      //ItemTutorialクラスのオブジェクトttrItemを作る。
      ttrItem.iconIndex = ModLoader.addOverride("/gui/items.png", "/ttr/ttritem.png");
         //テクスチャを設定(ファイルパスについては後述)
      ModLoader.AddName(ttrItem, "Tutorial Item");//ゲーム内で表示する名前を設定
      
      ModLoader.AddRecipe(new ItemStack(ttrItem, 4),
            new Object[]{ "X","X",
         Character.valueOf('X'),Block.dirt });
      //アイテムのレシピを設定(詳しいレシピの作り方は別のチュートリアルで)
   }   
}


ItemTutorial.java
コード: 全て選択
package net.minecraft.src;

public class ItemTutorial extends Item //Itemクラスを継承したItemTutorialを宣言
{
   public ItemTutorial(int i)
   {
      super(i); //初期化
      maxStackSize = 64; //スタックできる最大数を設定
   }
}


・ttrItem.pngをMCPフォルダのbin/minecraftの中にttrフォルダを作り、その中に入れてください

・食料の追加
・用意するもの
mod_Tutorial.java
ItemTutorial.java

mod_Tutorial.java
コード: 全て選択
package net.minecraft.src;

public class mod_Tutorial extends BaseMod {
   
   public String getVersion() {
      return "1.0.0";
   }

   public static Item ttrItem;
   public static int itemID = 5000;

   public void load() {

      ttrItem = new ItemTutorial(itemID, 3, false).setItemName("ttrItem");
      ttrItem.iconIndex = ModLoader.addOverride("/gui/items.png", "/ttr/ttritem.png");
      ModLoader.AddName(ttrItem, "Tutorial Item");      
      ModLoader.AddRecipe(new ItemStack(ttrItem, 4),
            new Object[]{ "X","X",
         Character.valueOf('X'),Block.dirt });
   }   
}

解説
ItemTutorial(itemID, 3, false)
回復量3(空腹ゲージ一つが2なので1.5ゲージ回復)
true/falseで狼をなつかせるのに使えるかどうかを設定する。falseなら使えない

ItemTutorial.java
コード: 全て選択
package net.minecraft.src;

public class ItemTutorial extends ItemFood
{
   public ItemTutorial(int i, int j , boolean flag)
   {
      super(i, j, flag); //初期化
      maxStackSize = 64; //スタックできる最大数を設定
   }
}

解説
extends ItemFood
ItemFoodクラスを継承して、食料として使えるようにします

わからないことがあれば質問どうぞ
最後に編集したユーザー tsuttsu305 [ 2013年3月18日(月) 20:59 ], 累計 8 回
理由: トピック主の申請により閉鎖(申請理由: 情報が古いため)
MOD作ったりしてます。らこと呼んでください
http://forum.minecraftuser.jp/viewtopic.php?f=13&t=1047
アバター
laco0416
ID:f991a69e
石炭掘り
 
記事: 150
登録日時: 2011年9月17日(土) 19:58

  • (PostNo.11774)

Re: [チュートリアル]アイテム追加MODの作り方

投稿記事by sm716 » 2011年11月06日(日) 00:55

わかりやすい!!
本当に助かります
:sig:
sm716
ID:21b58ee0
水から上がったとこ
 
記事: 1
登録日時: 2011年9月18日(日) 10:11

  • (PostNo.23170)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by yykimoto » 2012年2月05日(日) 17:07

これをMCPでレコンバイルしたのですが・・・
コード: 全て選択
== MCP 5.6 (data: 5.6, client: 1.1, server: 1.1) ==
> Recompiling client...
'javac.exe -g -source 1.6 -target 1.6 -classpath "lib;lib\*;jars\bin\minecraft.j
ar;jars\bin\jinput.jar;jars\bin\lwjgl.jar;jars\bin\lwjgl_util.jar" -sourcepath s
rc\minecraft -d bin\minecraft src\minecraft\net\minecraft\client\*.java src\mine
craft\net\minecraft\isom\*.java src\minecraft\net\minecraft\src\*.java conf\patc
hes\ga.java conf\patches\Start.java' failed : 1

== ERRORS FOUND ==

警告:[options] ブートストラップ・クラスパスが-source 1.6と一緒に設定されていませ

src\minecraft\net\minecraft\src\ItemTutrial.java:3: エラー: \12288は不正な文字で

public class ItemTutorial extends Item //Itemクラスを継承したItemTutorialを宣言

                                      ^

エラー1個
警告1個
==================

FATAL ERROR
Traceback (most recent call last):
  File "runtime\recompile.py", line 31, in recompile
    commands.recompile(CLIENT)
  File "C:\Users\yuto\MCP\MCP2\runtime\commands.py", line 736, in recompile
    self.runcmd(forkcmd)
  File "C:\Users\yuto\MCP\MCP2\runtime\commands.py", line 779, in runcmd
    raise CalledProcessError(returncode, forkcmd, output)
CalledProcessError: Command 'javac.exe -g -source 1.6 -target 1.6 -classpath "li
b;lib\*;jars\bin\minecraft.jar;jars\bin\jinput.jar;jars\bin\lwjgl.jar;jars\bin\l
wjgl_util.jar" -sourcepath src\minecraft -d bin\minecraft src\minecraft\net\mine
craft\client\*.java src\minecraft\net\minecraft\isom\*.java src\minecraft\net\mi
necraft\src\*.java conf\patches\ga.java conf\patches\Start.java' returned non-ze
ro exit status 1

というメッセージが出てきてしまい、エラーとなってしまいました。
1.1用MCPでやったので、それでエラーが起きたのかもしれません。1.1用のものも用意してくれませんか?
画像
アバター
yykimoto
ID:45112fe7
石掘り
 
記事: 133
登録日時: 2011年10月15日(土) 06:15

  • (PostNo.23176)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by koyobai4892 » 2012年2月05日(日) 17:40

yykimoto さんが書きました:これをMCPでレコンバイルしたのですが・・・
コード: 全て選択
== MCP 5.6 (data: 5.6, client: 1.1, server: 1.1) ==
> Recompiling client...
'javac.exe -g -source 1.6 -target 1.6 -classpath "lib;lib\*;jars\bin\minecraft.j
ar;jars\bin\jinput.jar;jars\bin\lwjgl.jar;jars\bin\lwjgl_util.jar" -sourcepath s
rc\minecraft -d bin\minecraft src\minecraft\net\minecraft\client\*.java src\mine
craft\net\minecraft\isom\*.java src\minecraft\net\minecraft\src\*.java conf\patc
hes\ga.java conf\patches\Start.java' failed : 1

== ERRORS FOUND ==

警告:[options] ブートストラップ・クラスパスが-source 1.6と一緒に設定されていませ

src\minecraft\net\minecraft\src\ItemTutrial.java:3: エラー: \12288は不正な文字で

public class ItemTutorial extends Item //Itemクラスを継承したItemTutorialを宣言

                                      ^

エラー1個
警告1個
==================

FATAL ERROR
Traceback (most recent call last):
  File "runtime\recompile.py", line 31, in recompile
    commands.recompile(CLIENT)
  File "C:\Users\yuto\MCP\MCP2\runtime\commands.py", line 736, in recompile
    self.runcmd(forkcmd)
  File "C:\Users\yuto\MCP\MCP2\runtime\commands.py", line 779, in runcmd
    raise CalledProcessError(returncode, forkcmd, output)
CalledProcessError: Command 'javac.exe -g -source 1.6 -target 1.6 -classpath "li
b;lib\*;jars\bin\minecraft.jar;jars\bin\jinput.jar;jars\bin\lwjgl.jar;jars\bin\l
wjgl_util.jar" -sourcepath src\minecraft -d bin\minecraft src\minecraft\net\mine
craft\client\*.java src\minecraft\net\minecraft\isom\*.java src\minecraft\net\mi
necraft\src\*.java conf\patches\ga.java conf\patches\Start.java' returned non-ze
ro exit status 1

というメッセージが出てきてしまい、エラーとなってしまいました。
1.1用MCPでやったので、それでエラーが起きたのかもしれません。1.1用のものも用意してくれませんか?


自分も試して見ましたが、Itemの後に、全角スペースが入っているようです。
Itemとコメントアウトの間をなくしてもう一度起動してみてください。
koyobai4892
ID:fb70b3b7
 

  • (PostNo.23183)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by SpringMine » 2012年2月05日(日) 19:17

どうもリコンパイル時にマルチバイトがソースにあるとエラーを出すことがあるみたいですね。
Ecripseなどでやってるときに「// TODO 自動生成されたメソッド・スタブ」の行を消し忘れてエラー吐かれたりしますからねぇ・・・まぁ、Javaのソースとマルチバイトの相性が悪いのは今に始まったことじゃないですけど。

基本、ネット公開されている過去バージョンのソースはエラーがあるものと割り切って、それを動くようにしてこそ自らのスキルになっていくという点もあります。
蛇足:
丸コピペして「動きません!直して!」って、もしそのソースの内容がHDD全消去とかだったらどうすんのよ。。。
SpringMine
ID:7bacda2c
石炭掘り
 
記事: 177
登録日時: 2011年12月07日(水) 22:14

  • (PostNo.23184)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by yykimoto » 2012年2月05日(日) 19:25

ありがとうございます。できました。
半角スペースが全角になっただけで動かなくなっちゃうんですね。。。おそろしい
画像
アバター
yykimoto
ID:45112fe7
石掘り
 
記事: 133
登録日時: 2011年10月15日(土) 06:15

  • (PostNo.23233)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by koyobai4892 » 2012年2月06日(月) 00:09

きのこシチューのような、アイテムを使用した際に、皿が戻ってくるようなコードを書きたいので、
ItemSoupを見ながら書きました。

このアイテムが使用された時(onFoodEaten)にnew ItemStackを返すのですが、
追加したアイテムは、item.~の様には追加できませんので、別クラスから呼ぶ際のアイテム名はどう指定すればいいのでしょうか。
koyobai4892
ID:fb70b3b7
 

  • (PostNo.23314)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by SpringMine » 2012年2月06日(月) 19:44

koyobai4892 さんが書きました:きのこシチューのような、アイテムを使用した際に、皿が戻ってくるようなコードを書きたいので、
ItemSoupを見ながら書きました。

このアイテムが使用された時(onFoodEaten)にnew ItemStackを返すのですが、
追加したアイテムは、item.~の様には追加できませんので、別クラスから呼ぶ際のアイテム名はどう指定すればいいのでしょうか。


viewtopic.php?f=21&t=1679
こちらのように クラス名.アイテム名 でできませんか?
SpringMine
ID:7bacda2c
石炭掘り
 
記事: 177
登録日時: 2011年12月07日(水) 22:14

  • (PostNo.23345)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by koyobai4892 » 2012年2月06日(月) 23:14

SpringMine さんが書きました:http://forum.minecraftuser.jp/viewtopic.php?f=21&t=1679
こちらのように クラス名.アイテム名 でできませんか?


ありがとうございます、解決できました。
とりあえずトピックのレスの隅々まで見なければいけませんね・・・以後既存のことに対して気をつけます。
koyobai4892
ID:fb70b3b7
 

  • (PostNo.23689)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by jelly » 2012年2月09日(木) 20:18

こんにちわ。色々なチュートリアルを参考にさせてもらっています。
ブロックの基本的な作り方がわかったので、同じ容量でアイテムも追加してみようと思ったのですが、いまいちよくわかりません。
もしよければ、ドア・柵・半ブロック・ベッド・たいまつ 以上5種類の作り方を教えて頂けませんか?
厚かましいお願いだと思いますが、ご教授の方よろしくおねがいします。
jelly
ID:d0e12104
 

  • (PostNo.23691)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by laco0416 » 2012年2月09日(木) 20:26

jelly さんが書きました:こんにちわ。色々なチュートリアルを参考にさせてもらっています。
ブロックの基本的な作り方がわかったので、同じ容量でアイテムも追加してみようと思ったのですが、いまいちよくわかりません。
もしよければ、ドア・柵・半ブロック・ベッド・たいまつ 以上5種類の作り方を教えて頂けませんか?
厚かましいお願いだと思いますが、ご教授の方よろしくおねがいします。

自力でやって躓いたところでエラーメッセージとソースを添えて質問してください。
ここはソース代筆依頼の場所じゃないです。
MOD作ったりしてます。らこと呼んでください
http://forum.minecraftuser.jp/viewtopic.php?f=13&t=1047
アバター
laco0416
ID:513716d0
石炭掘り
 
記事: 150
登録日時: 2011年9月17日(土) 19:58

  • (PostNo.23714)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by jelly » 2012年2月09日(木) 21:51

lacoさん大変申し訳ありませんでした。
最初から全て任せるというのは間違いでした。
今チュートリアルどおりにドアを作っているところです。
そしてリコンパイルをすると、

GoldenDoor = new ItemGoldenDoor(itemID).setItemName("GoldenDoor");

シンボル:変数 itemID

と上記の一行にだけエラーが出てしまうのですが、どのように修正を行えばよろしいでしょうか?
jelly
ID:d0e12104
 

  • (PostNo.23717)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by denpa » 2012年2月09日(木) 22:01

横からですが、
itemIDにエラーがでたのなら、itemIDに数値代入しているか、その数値は既存IDと重なっていないか、そもそも宣言しているか。
あとはもっとソース見ないと分かりません。
自作MODトピック:http://forum.minecraftuser.jp/viewtopic.php?f=13&t=2686
久しぶりにマイクラ再開したら、見事に砂漠寺院で吹っ飛びました。
アバター
denpa
ID:7e0aa23a
石掘り
 
記事: 92
登録日時: 2012年1月07日(土) 03:35

  • (PostNo.23721)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by jelly » 2012年2月09日(木) 22:17

denpaさん返信ありがとうございます。
【mod_Goldendoor】

public class mod_Goldendoor extends BaseMod {

public String getVersion() {
return "Goldendoor v1.0";
}

public static Item Goldendoor;
public static int blockID = 3000;

public void load() {

Goldendoor = new ItemGoldendoor(itemID).setItemName("Goldendoor");
Goldendoor.iconIndex = ModLoader.addOverride("/gui/items.png", "/item/Goldendoor.png");
ModLoader.AddName(Goldendoor, "Goldendoor");
}
}

【ItemGoldendoor】

ItemDoor.javaと同じソースを使っています。

上記の内容でリコンパイルすると、
Goldendoor = new ItemGoldendoor(itemID).setItemName("Goldendoor");
の一行にエラーが出て、シンボルが見つかりませんと出ました。
itemIDを何かに変えれば大丈夫なのでしょうか?
ご回答よろしくお願いします。
jelly
ID:d0e12104
 

  • (PostNo.23726)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by denpa » 2012年2月09日(木) 22:49

見てのとおりitemID宣言してないのでは?指摘したことは確認しましょう。
あとMOD開発はeclipse使うことをおすすめします。上記のようなミスはすぐに自分で解決できるようになります。
導入はwikiなど見て自分で調べてください。
自作MODトピック:http://forum.minecraftuser.jp/viewtopic.php?f=13&t=2686
久しぶりにマイクラ再開したら、見事に砂漠寺院で吹っ飛びました。
アバター
denpa
ID:7e0aa23a
石掘り
 
記事: 92
登録日時: 2012年1月07日(土) 03:35

  • (PostNo.23746)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by jelly » 2012年2月10日(金) 00:30

denpaさん回答ありがとうございます。
導入してみたのですが、エラーがある所に色が表示されるだけで何が原因かということがわかりませんでした(汗)

そのあとはドアのソースが書かれているItem.java、ItemDoor.java、BlockDoor.javaのソースを読み、
元々ある木のドアと鉄のドアは、

if(doorMaterial == Material.wood)
{
block = Block.doorWood;
} else
{
block = Block.doorSteel;
}
おそらくこの部分で区別していると思うのですが、ここに新しく「Goldendoor」という宣言を加えようとしたさい、どのような記述をすれば良いのでしょうか?
jelly
ID:d0e12104
 

  • (PostNo.23750)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by denpa » 2012年2月10日(金) 00:50

おっしゃってる意味が分かりかねます。またこのトピックで話す内容ではなくなってきた気がします。
ドアを追加したいならドアを追加しているModを探して参考にするのがいいかと思います。
自作MODトピック:http://forum.minecraftuser.jp/viewtopic.php?f=13&t=2686
久しぶりにマイクラ再開したら、見事に砂漠寺院で吹っ飛びました。
アバター
denpa
ID:7e0aa23a
石掘り
 
記事: 92
登録日時: 2012年1月07日(土) 03:35

  • (PostNo.23753)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by jelly » 2012年2月10日(金) 01:10

ご回答ありがとうございます。
自分でも頭がゴチャゴチャとなってきて何を言ってるかよくわからなくなってきました。
色々と申し訳ありませんでした。
jelly
ID:d0e12104
 

  • (PostNo.24701)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by yykimoto » 2012年2月16日(木) 17:25

すいません。
このチュートリアルで作られたアイテムをつかったレシピを追加したのですが、うまくいきません。ItemクラスのsmsItemが見つかりませんみたいなことをいわれます。一応ttrItemの名前はsmsItemにしたり、変数名・関数名をいじっています
画像
アバター
yykimoto
ID:45112fe7
石掘り
 
記事: 133
登録日時: 2011年10月15日(土) 06:15

  • (PostNo.24790)

Re: [チュートリアル]アイテム追加MODの作り方[初級][1.0.0]

投稿記事by SpringMine » 2012年2月16日(木) 22:56

yykimoto さんが書きました:すいません。
このチュートリアルで作られたアイテムをつかったレシピを追加したのですが、うまくいきません。ItemクラスのsmsItemが見つかりませんみたいなことをいわれます。一応ttrItemの名前はsmsItemにしたり、変数名・関数名をいじっています


いじった場所がおかしいのでしょう、としか答えようがありませんが・・・
どちらかといえばここより、こちらのほうの話題ですかね。
http://www.javaroad.jp/
SpringMine
ID:7bacda2c
石炭掘り
 
記事: 177
登録日時: 2011年12月07日(水) 22:14

次へ

Return to 開発関連

x