【質問】レシピで出来上がるアイテムのダメージ値

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.37274)

【質問】レシピで出来上がるアイテムのダメージ値

投稿記事by qwebnm » 2012年5月06日(日) 19:25

出来上がるアイテムにダメージ値を付ける場合
コード: 全て選択
ModLoader.addRecipe(new ItemStack(dyePowder,1,2),

↑ではエラーが起きてしまいます
コード: 全て選択
(dyePowder,1,2)

↑の部分をどの様にすればいいのでしょうか?

それとも他にバグがあるのでしょうか?
qwebnm
ID:9c15c1b0
木を殴ってる
 
記事: 19
登録日時: 2012年4月06日(金) 11:30

  • (PostNo.37444)

Re: 【質問】レシピで出来上がるアイテムのダメージ値

投稿記事by アルゴ » 2012年5月08日(火) 04:18

この記事の内容では何がしたいのか全く判断ができません。

実際に発生したエラーメッセージのコピーと、こちらでそのまま実行して再現できる最低限のソースコードを提示してください。
アルゴ
ID:5c81c08e
石炭掘り
 
記事: 218
登録日時: 2011年12月26日(月) 03:13

  • (PostNo.37446)

Re: 【質問】レシピで出来上がるアイテムのダメージ値

投稿記事by qwebnm » 2012年5月08日(火) 05:38

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

public class mod_ItemBlockRecipePLUS extends BaseMod {

   public String getVersion() {
      return "1.2.5";
   }
   public static Item greenscr;

   public void load() {

      greenscr = new Item(28743).setItemName("greenscr");
      greenscr.iconIndex = ModLoader.addOverride("/gui/items.png", "/takumod/greenscr.png");
      ModLoader.addName(greenscr,"Leaves Scrap");

      ModLoader.addRecipe(new ItemStack(greenscr,1),
            new Object[]{ "A","X","X",
         Character.valueOf('A'),Item.stick,
         Character.valueOf('X'),Block.leaves});

      ここからModLoader.addRecipe(new ItemStack(dyePowder,1,2),
            new Object[]{ "AAA","XXX","AAA",
         Character.valueOf('A'),Item.greenscr,
         Character.valueOf('X'),Item.stick});ここまで
   }
}

とりあえずMODってどんなものなのか作ってみただけなので簡単なやつです

ちなみにここから~ここまでのコードを取り除いたら、実行・アイテム製作できました。
qwebnm
ID:9c15c1b0
木を殴ってる
 
記事: 19
登録日時: 2012年4月06日(金) 11:30

  • (PostNo.37453)

Re: 【質問】レシピで出来上がるアイテムのダメージ値

投稿記事by アルゴ » 2012年5月08日(火) 08:06

まず、どんなプログラム言語を使う場合でも、ソースコード内にプログラムと関係ない注釈などを書き込む場合はコメントを使ってください。
バグの原因になります。(特に全角スペースが)

それでエラーの原因ですが、21行目の変数dyePowderがmod_ItemBlockRecipePLUSクラス内で宣言されていません。
Item.dyePowderの間違いであるように見えます。
また、23行目の変数Item.greenscrもItemクラス内に存在しません。
これもおそらくgreenscrの間違いでしょう。

あと、エラーメッセージについてですが、recompile.batでのメッセージは
http://www.relief.jp/itnote/archives/002157.phpの方法でコピーできます。
eclipseを使ってる場合は右下のウィンドウの「コンソール」から必要な範囲(エラーは普通、赤文字)右クリックメニューからコピーできるはずです。
質問の際はエラーメッセージを積極的に提示した方が解決も早いでしょう。
場合によってはソースコードを見る必要なく一発で何が起きたか分かります。
特に今回のような変数の参照間違いならエラーメッセージも直接的にわかるものになってるはずです。
指摘した箇所を踏まえて、エラーメッセージをよく見直してみてください。
アルゴ
ID:5c81c08e
石炭掘り
 
記事: 218
登録日時: 2011年12月26日(月) 03:13

  • (PostNo.37493)

Re: 【質問】レシピで出来上がるアイテムのダメージ値

投稿記事by qwebnm » 2012年5月08日(火) 19:18

アルゴ さんが書きました:まず、どんなプログラム言語を使う場合でも、ソースコード内にプログラムと関係ない注釈などを書き込む場合はコメントを使ってください。
バグの原因になります。(特に全角スペースが)

それでエラーの原因ですが、21行目の変数dyePowderがmod_ItemBlockRecipePLUSクラス内で宣言されていません。
Item.dyePowderの間違いであるように見えます。
また、23行目の変数Item.greenscrもItemクラス内に存在しません。
これもおそらくgreenscrの間違いでしょう。

あと、エラーメッセージについてですが、recompile.batでのメッセージは
http://www.relief.jp/itnote/archives/002157.phpの方法でコピーできます。
eclipseを使ってる場合は右下のウィンドウの「コンソール」から必要な範囲(エラーは普通、赤文字)右クリックメニューからコピーできるはずです。
質問の際はエラーメッセージを積極的に提示した方が解決も早いでしょう。
場合によってはソースコードを見る必要なく一発で何が起きたか分かります。
特に今回のような変数の参照間違いならエラーメッセージも直接的にわかるものになってるはずです。
指摘した箇所を踏まえて、エラーメッセージをよく見直してみてください。

なるほど...たとえバニラのアイテムだとしても宣言しないとエラーが起きてしまうんですね...
これからMOD制作に力を入れていきたかったのでとても勉強になりました。
ありがとう御座いました!!
qwebnm
ID:9c15c1b0
木を殴ってる
 
記事: 19
登録日時: 2012年4月06日(金) 11:30

  • (PostNo.37561)

Re: 【質問】レシピで出来上がるアイテムのダメージ値

投稿記事by アルゴ » 2012年5月08日(火) 23:32

taku128 さんが書きました:なるほど...たとえバニラのアイテムだとしても宣言しないとエラーが起きてしまうんですね...

いえ、それは誤解です。
Item.dyePowderについてはバニラの状態で既に宣言されているので自分で宣言しても別のものです。
しかし、これを参照するためにdyePowderとだけ書いた場合コンパイラはそのクラス内の変数を探しに行ってしまいます。
詳しくは、javaの入門サイトでスコープという概念について詳しく調べてみてください。

すでにmoddingの範囲を逸脱してjava言語の入門的な話になっているので、これ以上は間違えていても指摘しないかもしれません。
とりあえず、読みやすそうなjavaの入門サイトを探して一通り読んでみることをお勧めします。
一発で理解できるということはありませんが、moddingの過程で少しずつ理解していくでしょう。
アルゴ
ID:5c81c08e
石炭掘り
 
記事: 218
登録日時: 2011年12月26日(月) 03:13

  • (PostNo.37635)

Re: 【質問】レシピで出来上がるアイテムのダメージ値

投稿記事by qwebnm » 2012年5月09日(水) 19:43

アルゴ さんが書きました:
taku128 さんが書きました:なるほど...たとえバニラのアイテムだとしても宣言しないとエラーが起きてしまうんですね...

いえ、それは誤解です。
Item.dyePowderについてはバニラの状態で既に宣言されているので自分で宣言しても別のものです。
しかし、これを参照するためにdyePowderとだけ書いた場合コンパイラはそのクラス内の変数を探しに行ってしまいます。
詳しくは、javaの入門サイトでスコープという概念について詳しく調べてみてください。

すでにmoddingの範囲を逸脱してjava言語の入門的な話になっているので、これ以上は間違えていても指摘しないかもしれません。
とりあえず、読みやすそうなjavaの入門サイトを探して一通り読んでみることをお勧めします。
一発で理解できるということはありませんが、moddingの過程で少しずつ理解していくでしょう。


MODって難しいですね...
qwebnm
ID:9c15c1b0
木を殴ってる
 
記事: 19
登録日時: 2012年4月06日(金) 11:30


Return to 質問:開発・制作関連

x