[チュートリアル]レシピ追加MODの作り方[初級][1.1.0]

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

[チュートリアル]レシピ追加MODの作り方[初級][1.1.0]

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

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

・通常レシピ追加
・用意するもの
mod_Tutorial.java

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 void load() {

      ModLoader.AddRecipe(new ItemStack(Item.diamond,1),
            new Object[]{"XXX","XXX","XXX",
         Character.valueOf('X'),Block.dirt });
   }   
}

解説
ModLoader.AddRecipe(new ItemStack(Item.diamond,1)
Itemクラスのdiamondを1個作るレシピを宣言しています。
既存アイテムは全てItemクラス、既存ブロックは全てBlockクラスにインスタンス化されてるので
例えばダイヤブロックなら Block.blockDiamond になります。Block.javaやItem.javaを参照してください。

"XXX","XXX","XXX"
レシピの形を決めています。同じ文字は同じ素材を示します。
例えばつるはしは "XXX"," Y "," Y "(半角スペースを忘れずに)で、ベッドは"XXX","YYY"です。
階段は"X ","XX ","XXX"としておけば左右反対のレシピでも作れます。

Character.valueOf('X'),Block.dirt
先ほど使ったアルファベットに素材を割り当てます。
2つ以上素材がある場合は
Character.valueOf('X'),Block.dirt, Character.valueOf('Y'),Block.stone のようにカンマでつなげてください。

・不定形レシピ追加(染色など)
・用意するもの
mod_Tutorial.java

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

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

      ModLoader.AddShapelessRecipe(new ItemStack(Item.diamond,1),
            new Object[]{
         new ItemStack(Block.dirt, 1), new ItemStack(Block.sand, 1)});
   }   
}

解説
ModLoader.AddShapelessRecipe(new ItemStack(Item.diamond,1)
Itemクラスのdiamondを1個作る不定形レシピを宣言しています。
不定形レシピとは、その素材がどんな配置でも作れるレシピのことです

new ItemStack(Block.dirt, 1), new ItemStack(Block.sand, 1)
レシピの素材を決めています。
(Block.dirt, 1)の1は気にしないで下さい。

・ダメージ指定レシピ追加(木炭と石炭、羊毛、染料など)
・用意するもの
mod_Tutorial.java

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

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

      ModLoader.AddRecipe(new ItemStack(Item.diamond,1),
            new Object[]{"XXX","XXX","XXX",
         Character.valueOf('X'),new ItemStack(Item.coal, 1, 0) });
   }   
}

解説
Character.valueOf('X'),new ItemStack(Item.coal, 1, 0)
Item.coalではcoalとcharcoalの二種類がダメージという値によって区別されています。
つまりItem.charcoalという指定はできません。
(Item.coal, 1, 0)の0がダメージ値にあたり、0だとcoal、1だとcharcoalを指定します。その前の1は気にしないでください。
ダメージ指定レシピは不定形レシピでも使えます。
また、羊毛や染料の色もダメージ値0~15で指定されています。
最後に編集したユーザー tsuttsu305 [ 2013年3月18日(月) 23:59 ], 累計 7 回
理由: トピック主の申請により閉鎖(申請理由: 情報が古いため)
MOD作ったりしてます。らこと呼んでください
http://forum.minecraftuser.jp/viewtopic.php?f=13&t=1047
アバター
laco0416
ID:f991a69e
石炭掘り
 
記事: 150
登録日時: 2011年9月17日(土) 19:58

  • (PostNo.11723)

Re: [チュートリアル]レシピ追加MODの作り方

投稿記事by tae0617 » 2011年11月05日(土) 18:04

Block.diamond に変えて入力するとエラーを出すのですがなぜなんでしょうか?
※Block.diamond以外変えてません。
tae0617
ID:1c143e2c
木を殴ってる
 
記事: 11
登録日時: 2011年10月27日(木) 17:24

  • (PostNo.11727)

Re: [チュートリアル]レシピ追加MODの作り方

投稿記事by laco0416 » 2011年11月05日(土) 18:19

tae0617 さんが書きました:Block.diamond に変えて入力するとエラーを出すのですがなぜなんでしょうか?
※Block.diamond以外変えてません。

申し訳ありません。ダイヤブロックはBlock.blockDiamondでしたので訂正しておきました
報告ありがとうございます。
MOD作ったりしてます。らこと呼んでください
http://forum.minecraftuser.jp/viewtopic.php?f=13&t=1047
アバター
laco0416
ID:f991a69e
石炭掘り
 
記事: 150
登録日時: 2011年9月17日(土) 19:58

  • (PostNo.11735)

Re: [チュートリアル]レシピ追加MODの作り方

投稿記事by tae0617 » 2011年11月05日(土) 19:35

ダイヤモンドブロックが、block.blockDiamondだったので
鉄ブロックは、block.blockIronと入力したらエラーを出してしまったのですが
なんと入力すればよろしいのでしょうか?
tae0617
ID:1c143e2c
木を殴ってる
 
記事: 11
登録日時: 2011年10月27日(木) 17:24

  • (PostNo.11736)

Re: [チュートリアル]レシピ追加MODの作り方

投稿記事by uniunichan » 2011年11月05日(土) 19:42

tae0617 さんが書きました:ダイヤモンドブロックが、block.blockDiamondだったので
鉄ブロックは、block.blockIronと入力したらエラーを出してしまったのですが
なんと入力すればよろしいのでしょうか?


Blockの名称はBlock.javaの下部に記載されているブロック名から参照されています。
よって、鉄ブロックの場合はblockSteelとなります。
Itemをレシピに用いる場合にも、Item.javaを参考にしてみてください。
うにうにちゃんです。
アバター
uniunichan
ID:255a64bb
鉄鉱掘り
 
記事: 343
登録日時: 2011年6月21日(火) 18:40

  • (PostNo.11887)

Re: [チュートリアル]レシピ追加MODの作り方

投稿記事by tae0617 » 2011年11月06日(日) 23:22

ケーキのレシピように作ったあとに、バケツが残るような
レシピは、どのようにすればできますか?
何度もお聞きしてすいません。
tae0617
ID:1c143e2c
木を殴ってる
 
記事: 11
登録日時: 2011年10月27日(木) 17:24

  • (PostNo.11894)

Re: [チュートリアル]レシピ追加MODの作り方

投稿記事by laco0416 » 2011年11月06日(日) 23:43

tae0617 さんが書きました:ケーキのレシピように作ったあとに、バケツが残るような
レシピは、どのようにすればできますか?
何度もお聞きしてすいません。

何度でもわからなければ質問してくださってかまいませんよ。作った甲斐があるというものです。

バケツのようにクラフティングのあと残るアイテムは、レシピで設定してるのではなく、そのアイテムにコンテナ(Container)という物を設定しています。
アイテムのコンストラクタでsetContainerItemを呼び出すと、消費したあと何に変わるかを設定できます

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

public class ItemTutorial extends Item
{
   public ItemTutorial(int i)
   {
      super(i);
      maxStackSize = 1;
    setContainerItem(this);
   }
}

setContainerItem(this);
thisはItemTutorialを指します。 自分自身になる=消費されない ですね。

この時、スタックサイズは1でないといけません。

わかりましたでしょうか?
最後に編集したユーザー laco0416 [ 2011年11月07日(月) 00:48 ], 累計 2 回
MOD作ったりしてます。らこと呼んでください
http://forum.minecraftuser.jp/viewtopic.php?f=13&t=1047
アバター
laco0416
ID:f991a69e
石炭掘り
 
記事: 150
登録日時: 2011年9月17日(土) 19:58

  • (PostNo.11898)

Re: [チュートリアル]レシピ追加MODの作り方

投稿記事by tae0617 » 2011年11月07日(月) 00:12

さっき教えていただいた方法でやってみたのですが、
recompileは、うまくいくのですが
テストプレイをしてみると、Minecraftがエラーを出して
うまくできません。どうしたらできるでしょうか。
エラー内容:Max stack size must be 1 for items with crafting results
tae0617
ID:1c143e2c
木を殴ってる
 
記事: 11
登録日時: 2011年10月27日(木) 17:24

  • (PostNo.11904)

Re: [チュートリアル]レシピ追加MODの作り方

投稿記事by laco0416 » 2011年11月07日(月) 00:49

tae0617 さんが書きました:さっき教えていただいた方法でやってみたのですが、
recompileは、うまくいくのですが
テストプレイをしてみると、Minecraftがエラーを出して
うまくできません。どうしたらできるでしょうか。
エラー内容:Max stack size must be 1 for items with crafting results

すみませんでした。トップ記事も訂正しましたが、
maxStackSizeを1にすることで解決するはずです。
MOD作ったりしてます。らこと呼んでください
http://forum.minecraftuser.jp/viewtopic.php?f=13&t=1047
アバター
laco0416
ID:f991a69e
石炭掘り
 
記事: 150
登録日時: 2011年9月17日(土) 19:58

  • (PostNo.15580)

Re: [チュートリアル]レシピ追加MODの作り方[初級][1.8.1]

投稿記事by const » 2011年12月05日(月) 20:09

質問です、
modで追加したアイテムを、同modの他のクラスでレシピに使うにはどうすればいいでしょうか?
(アイテム名の書き方が問題のようで、 クラス名.アイテム名 というように書いてもリコンパイルは通るんですが、クライアントを起動した際にエラー落ちしてしまうようです)
const
ID:76e93c05
水から上がったとこ
 
記事: 2
登録日時: 2011年12月02日(金) 19:48

  • (PostNo.15582)

Re: [チュートリアル]レシピ追加MODの作り方[初級][1.8.1]

投稿記事by laco0416 » 2011年12月05日(月) 20:14

const さんが書きました:質問です、
modで追加したアイテムを、同modの他のクラスでレシピに使うにはどうすればいいでしょうか?
(アイテム名の書き方が問題のようで、 クラス名.アイテム名 というように書いてもリコンパイルは通るんですが、クライアントを起動した際にエラー落ちしてしまうようです)


同じMODなのにレシピを書く場所を分けるのですか?
よく状況がわからないのでmod本体のクラスと、そのレシピを追加するクラスのソースを見せてもらえますか?
MOD作ったりしてます。らこと呼んでください
http://forum.minecraftuser.jp/viewtopic.php?f=13&t=1047
アバター
laco0416
ID:513716d0
石炭掘り
 
記事: 150
登録日時: 2011年9月17日(土) 19:58

  • (PostNo.15597)

Re: [チュートリアル]レシピ追加MODの作り方[初級][1.8.1]

投稿記事by const » 2011年12月05日(月) 22:00

laco0416 さんが書きました:同じMODなのにレシピを書く場所を分けるのですか?
よく状況がわからないのでmod本体のクラスと、そのレシピを追加するクラスのソースを見せてもらえますか?

すいません、自己解決しました。
返信を見てmod_XXのjavaファイルはこの場合分割しないという事に気づき、プログラムを修正してみたところエラー落ちせずに、追加アイテム自体も普通に作れる状態になりました。
お騒がせしました。ありがとうございました
const
ID:76e93c05
水から上がったとこ
 
記事: 2
登録日時: 2011年12月02日(金) 19:48

  • (PostNo.15949)

Re: [チュートリアル]レシピ追加MODの作り方[初級][1.8.1]

投稿記事by kudoCF » 2011年12月08日(木) 21:33

役に立つか分かりませんが今後の参考用に・・・
耐久度の減ったダイヤ剣を元の作った状態の剣に戻すレシピを追加するMOD例
コード: 全て選択
package net.minecraft.src;

public class mod_Test_Repair extends BaseMod{
public void load()
   {
   }
   public String Version() { //MODのバージョン
      return "[1.0.0]";
   }
   public String getVersion() { //MODのバージョン
      return "[1.0.0]";
   }
   public mod_Test_Repair(){
   
      ModLoader.AddShapelessRecipe(new ItemStack(Item.swordDiamond,1),//ダイヤ剣(新品)
            new Object[]{
         new ItemStack(Item.swordDiamond, 1,-1)});//ダイヤ剣(耐久数表示)
   }
}

AddShapelessRecipeのItem.swordDiamond, 1,-1 のところの-1がダメージ値と同じ役割を持っていると思われる(たぶん)。
以下のサンプルファイルをmodフォルダに入れれば起動するようにしました。修復modなんかに応用できれば幸いです。
添付ファイル
Test_Repair.zip
(1.18 KiB) ダウンロード数: 102 回
活動再開しましたが、もう学生ではないので作る時間が限られてます。 (´・ω・`)ショボーン
アバター
kudoCF
ID:cf1ae03d
石掘り
 
記事: 107
登録日時: 2011年11月08日(火) 20:45

  • (PostNo.16060)

Re: [チュートリアル]レシピ追加MODの作り方[初級][1.8.1]

投稿記事by Sino_ku » 2011年12月10日(土) 06:15

はじめまして。
MODを作ろうと思いこちらのチュートリアルを参考にしているのですが、
「net.minecraft.srd.mod_Tutorial は abstract でなく、
net.minecraft.srd.BaseMod 内の abstract メソッド lord() をオーバーライドしません。」
というエラーがでました。
(チュートリアルそのまま使っています)

どうすればよいでしょうか?
Sino_ku
ID:4bbc8cd7
木を殴ってる
 
記事: 24
登録日時: 2011年12月10日(土) 06:01

  • (PostNo.16073)

Re: [チュートリアル]レシピ追加MODの作り方[初級][1.8.1]

投稿記事by kudoCF » 2011年12月10日(土) 09:15

Sino_ku さんが書きました:はじめまして。
MODを作ろうと思いこちらのチュートリアルを参考にしているのですが、
「net.minecraft.srd.mod_Tutorial は abstract でなく、
net.minecraft.srd.BaseMod 内の abstract メソッド lord() をオーバーライドしません。」
というエラーがでました。
(チュートリアルそのまま使っています)

どうすればよいでしょうか?


ここ読んでみるといいよ
http://forum.minecraftuser.jp/viewtopic.php?f=21&t=2009
活動再開しましたが、もう学生ではないので作る時間が限られてます。 (´・ω・`)ショボーン
アバター
kudoCF
ID:cf1ae03d
石掘り
 
記事: 107
登録日時: 2011年11月08日(火) 20:45

  • (PostNo.16127)

Re: [チュートリアル]レシピ追加MODの作り方[初級][1.8.1]

投稿記事by Sino_ku » 2011年12月10日(土) 18:18

kudoCF さんが書きました:ここ読んでみるといいよ
http://forum.minecraftuser.jp/viewtopic.php?f=21&t=2009


そんなトピが立ってたんですね、気づきませんでした…。
ありがとうございます、参考にしてみます。
Sino_ku
ID:4bbc8cd7
木を殴ってる
 
記事: 24
登録日時: 2011年12月10日(土) 06:01

  • (PostNo.20037)

Re: [チュートリアル]レシピ追加MODの作り方[初級][1.0.0]

投稿記事by kudoCF » 2012年1月14日(土) 17:42

とりあえず1.1.0でもこの方法でmodが起動できるみたいですね。
活動再開しましたが、もう学生ではないので作る時間が限られてます。 (´・ω・`)ショボーン
アバター
kudoCF
ID:cf1ae03d
石掘り
 
記事: 107
登録日時: 2011年11月08日(火) 20:45

  • (PostNo.20878)

Re: [チュートリアル]レシピ追加MODの作り方[初級][1.0.0]

投稿記事by みどりぃ » 2012年1月21日(土) 18:15

MODで追加したアイテムと丸石x4から土を作成する不定形レシピを書いたのですがリコンパイル時にエラーが出てしまいます。
試しにチュートリアルの不定形レシピをコピペしてリコンパイルしてもエラーが出てしまいました。
MCPは5.6、ModLoaderとMCForgeをインストールしています。
どのようにすれば良いのでしょうか?
みどりぃ
ID:ace4c4c4
石掘り
 
記事: 115
登録日時: 2011年11月03日(木) 06:57

  • (PostNo.20888)

Re: [チュートリアル]レシピ追加MODの作り方[初級][1.0.0]

投稿記事by laco0416 » 2012年1月21日(土) 19:48

みどりぃ さんが書きました:MODで追加したアイテムと丸石x4から土を作成する不定形レシピを書いたのですがリコンパイル時にエラーが出てしまいます。
試しにチュートリアルの不定形レシピをコピペしてリコンパイルしてもエラーが出てしまいました。
MCPは5.6、ModLoaderとMCForgeをインストールしています。
どのようにすれば良いのでしょうか?

失敗したソースコードを併記してもらわないとなんとも言えないです
MOD作ったりしてます。らこと呼んでください
http://forum.minecraftuser.jp/viewtopic.php?f=13&t=1047
アバター
laco0416
ID:513716d0
石炭掘り
 
記事: 150
登録日時: 2011年9月17日(土) 19:58

  • (PostNo.20956)

Re: [チュートリアル]レシピ追加MODの作り方[初級][1.0.0]

投稿記事by みどりぃ » 2012年1月22日(日) 00:55

申し訳ありません、自己解決しました。
かなり初歩的なミスでした。お恥ずかしい・・・。
みどりぃ
ID:ace4c4c4
石掘り
 
記事: 115
登録日時: 2011年11月03日(木) 06:57

次へ

Return to 開発関連

x