IC2のレシピ追加について

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

IC2のレシピ追加について

投稿記事by ogachan1503 » 2017年7月28日(金) 10:48

IC2のアドオンを作りたいと思っています。
それで、初めにIC2にかかわるレシピを追加したいのですが、
ネットで検索してみても、いまいちよくわかりません。
どうすればいいか、教えてください。
ogachan1503
ID:da05adc8
木を殴ってる
 
記事: 15
登録日時: 2017年6月19日(月) 17:34

  • (PostNo.305359)

Re: IC2のレシピ追加について

投稿記事by ogachan1503 » 2017年7月28日(金) 10:50

失礼しました。
アドオンではなく、一応単体modなのですが、このmodを導入することによって新しいレシピが追加されるようなmodです。
ogachan1503
ID:da05adc8
木を殴ってる
 
記事: 15
登録日時: 2017年6月19日(月) 17:34

  • (PostNo.305379)

Re: IC2のレシピ追加について

投稿記事by defeatedcrow » 2017年7月28日(金) 18:16

あなたのもう一つの質問に、ぼくが解答したものがありますよね?
あれが、そのために必要だった方法です。
あなたはそれをやらずに、開発環境のデバッグ起動のmodsファイルに突っ込んだみたいですが、それはデバッグ環境のプレイにmodを入れて遊ぶ方法であって、Modding上でIC2を利用する方法ではないです。ですので、あなたは自己解決したと書いていますが、あれでは解決していません。

なので、解答した方法を試してみて下さい。
開発環境に入れるのは、デバッグ起動したときにIC2が入った環境で試すのであればdev版、APIだけでよいならapiをダウンロードして、導入すると良いです。
まず、それで開発環境にIC2が入ります。(つまり、あなたのModdingにIC2のソースコードを利用できるようになります。)

それができたら、IC2の場合は、他の人がIC2のマシンにレシピを増やせるようになる親切なAPIが色々用意されていますもで、それを使って追加できます。
APIの使い方は、ソースコードがうまく導入されていれば、ソースコードの中にどうやって使えば良いかがコメントで解説されています。

WEB上にも多少は情報がありますが、あなたが求めているようなチュートリアルはないです。最近のやつはまず存在しないと思います。IC2はAPIの更新がそこそこ激しいModで、チュートリアルもすぐ古くなって使えなくなるからです。
あるとしたらこの辺の公式ドキュメント(古そう)ですが、見た感じすごく古そうなので、あなたが作りたいバージョン(バージョン書いてないですよね?)で、IC2連携しているModでオープンソースのものを漁って真似てみると良いと思います。
とりあえずぼくのModでよければ、
1.7.10exp向け(AppleMilkTeaの連携部分)
1.10.2向け(HaCの連携部分)
この辺参考にどうぞ

いずれにしても、英語やソースコードが読めないと難しいです。
他人の作ったModへの連携は単なるMod自作より若干難しいので、自分で自分の面倒が見れる、情報収集して解決できるのが前提になってくると思います。

追記:
IC2導入時に連携できる単体導入可能Modを作りたいようですが、IC2必須のAddonより難易度が若干上がりますので、そのへんは覚悟しておくと良いと思います。
IC2が存在しない場合に、導入されていないIC2のソースを読み込んでしまうと即クラッシュしますから、IC2が導入されているかをチェックし、ない場合は連携部分を読み込まないように作る必要があるので。
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:7e692061
ラピスラズリ収集家
 
記事: 917
登録日時: 2014年1月08日(水) 13:48
お住まい: 北関東

  • (PostNo.305380)

Re: IC2のレシピ追加について

投稿記事by defeatedcrow » 2017年7月28日(金) 18:20

ちなみに、dev版・api版であればCCCやNEIはなくても開発環境に入るので、この辺参考に試してみて下さい
http://defeatedcrow.jp/modwiki/%E9%96%8 ... 0%E7%B7%A8
ここのやり方で作ったlibsフォルダにIC2のdev版などを入れて、install.batを叩けばOK
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:7e692061
ラピスラズリ収集家
 
記事: 917
登録日時: 2014年1月08日(水) 13:48
お住まい: 北関東

  • (PostNo.305411)

Re: IC2のレシピ追加について

投稿記事by ogachan1503 » 2017年7月29日(土) 13:08

とりあえず、ビルド・パスで導入できました。
ver.は2.2.827です。
で、IC2アイテムのインポートはできたのですが、他の人のソースを見ても、ちょっとIC2のアイテムの取得方法がわかりません。
https://www63.atwiki.jp/akasatanahama/pages/87.html を試したのですが、それでもできませんでした。
ogachan1503
ID:da05adc8
木を殴ってる
 
記事: 15
登録日時: 2017年6月19日(月) 17:34

  • (PostNo.305441)

Re: IC2のレシピ追加について

投稿記事by defeatedcrow » 2017年7月29日(土) 20:47

IC2のアイテムならIC2APIにアイテム取得用のIC2Item.classがあるのでそこから取れる。
取るために必要なStringの一覧も、コメントに一通り書いてくれています。
例えば金属粉なら、IC2Item.getItem("dust", "iron");という感じ。

先にも書きましたが、IC2のソースコード内に解説があるのでそれを読んでみて下さい。あと、APIに有るものはざっと眺めてみると良いです。(もし、英語だから読めないということであれば、スタートラインに立てないと思っていいくらいです)

そのリンク先にある方法も既に古いですが、1.10.2では非推奨ですが一応残っていたはずです。
ただ、現在のVerではItem.REGISTRY.getObject(name);からResourceLocationを使って取得する方法をForgeは推奨しています。
先にも書きましたが(二回目)、Web上の情報がどんどん古くなっているんです。ですから、自力でソースを読み込んでなんとか出来るModderでないとどんどん脱落していっているのがここ最近の現状なわけです。

取れなかったのならば、あなたの取得方法が悪かった可能性が非常に高い。
取得に必要なのは登録名(RegistryName)です、これを調べるには、一番手軽な方法はNEIを導入してダンプファイル生成機能を使って、RegistryName含むアイテム情報一覧をファイルに書き出す方法ですね。
ただ、IC2の場合はこれを使わなくても、IC2Item.classが用意されているので不要なわけですが
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:7e692061
ラピスラズリ収集家
 
記事: 917
登録日時: 2014年1月08日(水) 13:48
お住まい: 北関東

  • (PostNo.305509)

Re: IC2のレシピ追加について

投稿記事by ogachan1503 » 2017年7月31日(月) 11:50

度々すみません
GameRegistry.addRecipe(IC2Items.getItem("machine"), "XXX","X X","XXX",'X',IC2Items.getItem("refinedIronIngot"));
と入力したのですが、電子回路のレシピが追加されません。
どこがおかしいのでしょうか。
ogachan1503
ID:da05adc8
木を殴ってる
 
記事: 15
登録日時: 2017年6月19日(月) 17:34

  • (PostNo.305518)

Re: IC2のレシピ追加について

投稿記事by defeatedcrow » 2017年7月31日(月) 14:22

ogachan1503 さんが書きました:度々すみません
GameRegistry.addRecipe(IC2Items.getItem("machine"), "XXX","X X","XXX",'X',IC2Items.getItem("refinedIronIngot"));
と入力したのですが、電子回路のレシピが追加されません。
どこがおかしいのでしょうか。


未だVer明記がないままなのでどのIc2のAPIかはわかりませんが…

IC2Itemsのコメント本当に読みました???
違うアイテムの名前入れても追加されないです

IC2Itemsでとってきたアイテムを直にそこに突っ込まずに、nullチェックなり、Logger使ってアイテム名を吐かせて確認なり、したほうがいいですよ

あと、当然ですがIC2が読み込まれてアイテム追加が終わったあとじゃないとレシピは追加できないので、メソッドを呼ぶタイミングにも気をつけます
postInitあたりが無難かと思います
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:7e692061
ラピスラズリ収集家
 
記事: 917
登録日時: 2014年1月08日(水) 13:48
お住まい: 北関東

  • (PostNo.305560)

Re: IC2のレシピ追加について

投稿記事by ogachan1503 » 2017年7月31日(月) 22:37

GameRegistry.addRecipe(IC2Items.getItem("reBattery"), "X","YZY","YZY",'X',IC2Items.getItem("insulatedCopperCableItem"),'Y',IC2Items.getItem("tinIngot"),'Z',Items.redstone);
でちゃんと電池のレシピは追加されたので、書く場所や構文は間違っていないはずですし、アイテム名もIC2Itemsの名前をコピペしたので問題ないはずなんですが…
ogachan1503
ID:da05adc8
木を殴ってる
 
記事: 15
登録日時: 2017年6月19日(月) 17:34

  • (PostNo.305608)

Re: IC2のレシピ追加について

投稿記事by defeatedcrow » 2017年8月01日(火) 18:48

ogachan1503 さんが書きました:GameRegistry.addRecipe(IC2Items.getItem("reBattery"), "X","YZY","YZY",'X',IC2Items.getItem("insulatedCopperCableItem"),'Y',IC2Items.getItem("tinIngot"),'Z',Items.redstone);
でちゃんと電池のレシピは追加されたので、書く場所や構文は間違っていないはずですし、アイテム名もIC2Itemsの名前をコピペしたので問題ないはずなんですが…


開発しているバージョンは何でしょう?(三回目)
IC2のアイテム名はVerで変わるので、わからないと答えられない部分なんですよね

さっぱりわからないので1.7.10で仮定しますが、
1.7.10なら"machine"はマシン系ブロックの名称であるし、これはMeta Sensitiveですからあなたの記述ではメタ指定ができない、メタ0のブロックになっているはず

電子回路は"electronicCircuit"で、なので1.7.10でやっているとしたら名前ミスで呼べていないだけだと思います

nullチェックしていれば自分で気づけると思うので、やるとよいです
いろいろ自力で調べた上でやっているようですし、あとは本人がケアレスミスに気づくか否かだけの問題なので、そういうときにこのようなミス箇所の洗い出しはやっておくとスムーズになりますよ
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:7e692061
ラピスラズリ収集家
 
記事: 917
登録日時: 2014年1月08日(水) 13:48
お住まい: 北関東

  • (PostNo.305617)

Re: IC2のレシピ追加について

投稿記事by elise_blacklab » 2017年8月01日(火) 21:01

defeatedcrow さんが書きました:開発しているバージョンは何でしょう?(三回目)

ogachan1503 さんが書きました:ver.は2.2.827です。

超蛇足.forgeのそれが書いてないと言われればそうなんですがッ
メイドつくってたりします.http://el-blacklab.net/
アバター
elise_blacklab
ID:0b900f26
掘り廃人
 
記事: 2406
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.305646)

Re: IC2のレシピ追加について

投稿記事by ogachan1503 » 2017年8月02日(水) 05:05

forgeは1.7.10-10.13.4.1558です
ogachan1503
ID:da05adc8
木を殴ってる
 
記事: 15
登録日時: 2017年6月19日(月) 17:34

  • (PostNo.305656)

Re: IC2のレシピ追加について

投稿記事by ogachan1503 » 2017年8月02日(水) 12:15

GameRegistry.addRecipe(IC2Items.getItem("generator"), "X","Y","Z",'X',IC2Items.getItem("reBattery"),'Y',IC2Items.getItem("machine"),'Z',Blocks.furnace);
で、火力発電機のレシピは追加されたので、マシンの記述もあっていると思います。
ogachan1503
ID:da05adc8
木を殴ってる
 
記事: 15
登録日時: 2017年6月19日(月) 17:34

  • (PostNo.305689)

Re: IC2のレシピ追加について

投稿記事by defeatedcrow » 2017年8月02日(水) 22:19

ogachan1503 さんが書きました:GameRegistry.addRecipe(IC2Items.getItem("generator"), "X","Y","Z",'X',IC2Items.getItem("reBattery"),'Y',IC2Items.getItem("machine"),'Z',Blocks.furnace);
で、火力発電機のレシピは追加されたので、マシンの記述もあっていると思います。


>電子回路のレシピが追加されません。

マシン?
電子回路のレシピでないんですか

追記:
うーんうーん
GameRegistry.addRecipe(IC2Items.getItem("reBattery"), "X","YZY","YZY",'X',IC2Items.getItem("insulatedCopperCableItem"),'Y',IC2Items.getItem("tinIngot"),'Z',Items.redstone);
でちゃんと電池のレシピは追加されたので
って書いてあるけど、これでマジで追加されました?
>"X","YZY","YZY" 
これ弾かれるはずなんだよな… 定形レシピのルールに反しているはずなので
" X ","YZY","YZY" というように、Xの両脇にスペースが有れば大丈夫なんですが

あと、マシンブロックなのか電子回路なのか結局よくわからないんだけど、目的がマシンブロックなら、ちょっと以下のように記述して試して頂けますか(そのままコピペで貼り付ければOK)

コード: 全て選択
if (IC2Items.getItem("machine") != null && IC2Items.getItem("refinedIronIngot") != null) {
         
         ItemStack machine = new ItemStack(IC2Items.getItem("machine").getItem(), 1,
               IC2Items.getItem("machine").getItemDamage());
         
         ItemStack ingot = new ItemStack(IC2Items.getItem("refinedIronIngot").getItem(), 1,
               IC2Items.getItem("refinedIronIngot").getItemDamage());
         
         GameRegistry.addRecipe(machine, new Object[] {
               "XXX", "X X", "XXX", 'X', ingot
         });
      }


どうも経験上、APIで取ったItemStackのスタック数が0になっている、あるいは0ではなさそうなんだけどもレシピにうまく使えない状況に遭ったことが何度か有るので
ぼくの場合はnullチェックを通す&ItemStackを直接使わずに作り直す ってのをやることがあります

これでだめならぼくはお手上げですね
一応コチラの持っている環境で上記で動作確認できているので、大丈夫だとは思いますが
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:7e692061
ラピスラズリ収集家
 
記事: 917
登録日時: 2014年1月08日(水) 13:48
お住まい: 北関東

  • (PostNo.305704)

Re: IC2のレシピ追加について

投稿記事by ogachan1503 » 2017年8月03日(木) 12:28

電池のレシピに関しては、投稿ミスです。
ちゃんと" X "とスペース入れましたので大丈夫です。
マシンについては、やってみてもダメでした。
せっかくコードを書いてくださったのに、すみません。
また自分でアイテムを作って、そこから作れるようにしたいと思います。

それと、またですみませんが、
new ItemStack(IC2Items.getItem("insulatedCopperCableItem"),6)
と入力すると波線が出るのですけど、どこが間違ってますか
ogachan1503
ID:da05adc8
木を殴ってる
 
記事: 15
登録日時: 2017年6月19日(月) 17:34

  • (PostNo.305727)

Re: IC2のレシピ追加について

投稿記事by defeatedcrow » 2017年8月03日(木) 19:17

ogachan1503 さんが書きました:電池のレシピに関しては、投稿ミスです。
ちゃんと" X "とスペース入れましたので大丈夫です。
マシンについては、やってみてもダメでした。
せっかくコードを書いてくださったのに、すみません。
また自分でアイテムを作って、そこから作れるようにしたいと思います。

それと、またですみませんが、
new ItemStack(IC2Items.getItem("insulatedCopperCableItem"),6)
と入力すると波線が出るのですけど、どこが間違ってますか


>ちゃんと" X "とスペース入れましたので大丈夫です。
では大丈夫みたいですね、それはよかった

>マシンについては、やってみてもダメでした。
こちらで動作確認が取れているものが動かないというのは、レシピ追加部分以外に問題が有るということなので、よく確認してみて下さい。
この処理まで到達できていないんじゃないかと思います。
(その辺を検証できるから、動作確認済みのソースを渡したというのもあります)

質問には二種類あって、問題点がわかっていて解決方法を探しているものと、問題箇所がわからないやつがありますが、
今回のように後者の場合は、本人がどこでミスをしたのか探さないとなりません。
ミス探しとなると回答側は基本、エスパーしか出来ないので、情報を小出しにされると解決が遅れます。

「やってみてもダメでした。」では、一切の解決につながる情報提供がない、情報提供の意思がないという状態なので、あとは本人にケアレスミスの洗い出しを頑張ってもらう他ないです。

>それと、またですみませんが、
>new ItemStack(IC2Items.getItem("insulatedCopperCableItem"),6)
>と入力すると波線が出るのですけど、どこが間違ってますか

IC2Items.getItem("insulatedCopperCableItem")は、ItemStackです。
new ItemStack()のカッコに入れなければならないのは、Itemです。
ItemStackとItemは違う存在です。混同できません。

ItemStackは、アイテムをいくつかの個数にまとめたアイテムのセットのことです。
日頃インベントリに入っていたり、ブロックから落ちてくるような、プレイしているとよく見かける、アイテムのかたまりです。
new ItemStack(Item, 個数, メタデータ)というように、必要に応じて新しく作ることが出来ます。

Itemは、内部で使用される、”このアイテムがどんな性質を持っているか”の図鑑情報のようなものなので、ゲーム中に直接は出てきません。これは、ItemStackを新しく作るときに必要になります。

コード: 全て選択
IC2Items.getItem("insulatedCopperCableItem").getItem()

で、APIから取ってきたItemStackから、Itemを取り出せます。
new ItemStack()のカッコの中には、Itemを入れます。
これは昨日貼ったソースの中にも例を含んであるので、真似してやってみて下さい。
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:7e692061
ラピスラズリ収集家
 
記事: 917
登録日時: 2014年1月08日(水) 13:48
お住まい: 北関東

  • (PostNo.305731)

Re: IC2のレシピ追加について

投稿記事by ogachan1503 » 2017年8月03日(木) 19:53

ありがとうございます。

ちなみに、自分はレシピで加工品がIC2の複数のアイテムにしたいです。
銅3+ゴム6=銅線6みたいな

getItemは複数はできなさそうなので、ItemStackを使ってみたのですが、同時には使えないんですね。気を付けます。
ogachan1503
ID:da05adc8
木を殴ってる
 
記事: 15
登録日時: 2017年6月19日(月) 17:34

  • (PostNo.305737)

Re: IC2のレシピ追加について

投稿記事by defeatedcrow » 2017年8月03日(木) 20:57

ogachan1503 さんが書きました:ありがとうございます。

ちなみに、自分はレシピで加工品がIC2の複数のアイテムにしたいです。
銅3+ゴム6=銅線6みたいな

getItemは複数はできなさそうなので、ItemStackを使ってみたのですが、同時には使えないんですね。気を付けます。


説明、読めます?大丈夫ですか?
長文は読めませんか?

new ItemStack(Item, 個数, メタ)のこのカッコ内にIC2Items.getItem("insulatedCopperCableItem").getItem()をいれてくれって話をしてます

new ItemStack(IC2Items.getItem("insulatedCopperCableItem").getItem(), 個数, 0)
ってやればいいんですよ
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:7e692061
ラピスラズリ収集家
 
記事: 917
登録日時: 2014年1月08日(水) 13:48
お住まい: 北関東

  • (PostNo.305797)

Re: IC2のレシピ追加について

投稿記事by ogachan1503 » 2017年8月04日(金) 17:40

大丈夫です。その辺はちゃんとできました。
マシンブロックについても、自作アイテムでちゃんとできました。
ogachan1503
ID:da05adc8
木を殴ってる
 
記事: 15
登録日時: 2017年6月19日(月) 17:34

  • (PostNo.305801)

Re: IC2のレシピ追加について

投稿記事by defeatedcrow » 2017年8月04日(金) 18:08

ogachan1503 さんが書きました:大丈夫です。その辺はちゃんとできました。
マシンブロックについても、自作アイテムでちゃんとできました。



どう見ても大丈夫じゃなさそうですね


できていなかったから
>new ItemStack(IC2Items.getItem("insulatedCopperCableItem"),6)
こうなったんですよね?
これを出してくる時点で基礎的なJavaの知識とか最低限のModding知識が全くない人がやるミスが出てきているわけです

で、それに対して解答して、出てきた返事が
「大丈夫です。その辺はちゃんとできました。」
ってなっているわけです

あなたの文章から、大丈夫そうな素振りは全く見えません。
今何を返答しなければならないのか判断できていないようですし、
文章のあちこちに、勘違いや不理解がいっぱい含まれていますから。

こういう、問題点の洗い出しをする質問って、本人がどこでミスをしたかをお互い確認しないとならないんですよ
そういうところで、自身に不利になりそうな情報を伏せたり、恥ずかしがったり、大丈夫だと強がる行為は、単純に迷惑行為です

主語述語の欠落した崩壊した文章、質問を締め切らずに次の質問に継続する行為、わからないはずの人間がこちらの回答を否定する独自見解(それで失敗が多々発生している地雷行為)、会話のキャッチボールの崩壊
それでこれだと、Q&Aとして成り立たないし、不誠実すぎてこれ以上の回答は継続できないですよ
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:7e692061
ラピスラズリ収集家
 
記事: 917
登録日時: 2014年1月08日(水) 13:48
お住まい: 北関東


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

x