1 :
名無しさんの野望 :
2012/06/17(日) 00:27:10.47 ID:LMjmCFHP 無かったので建ててみました。mod作成専門です。mod導入の質問とかは禁止なので質問スレに行ってください。
2 :
名無しさんの野望 :2012/06/17(日) 00:30:30.85 ID:Gd4C1ezO
3 :
名無しさんの野望 :2012/06/17(日) 00:32:23.69 ID:tkQv4W14
4 :
名無しさんの野望 :2012/06/17(日) 00:38:03.49 ID:cicFD8ph
modに関するよくある質問 Q.作るの難しい? A.簡単ですがjavaという物を覚える必要があります。 Q.○○という機能作りたい A.Forgeにあるかもです。なければ質問するより先に試行錯誤しましょう。5時間程度ソースコードとにらめっこしても分からない時にのみ質問してください。
5 :
名無しさんの野望 :2012/06/17(日) 01:04:37.25 ID:DAE/B2pH
他の関連スレを見てタイトルやテンプレを作ってからスレ立てしろや 中学生や高校生のブログかよ、ここは
6 :
名無しさんの野望 :2012/06/17(日) 01:05:48.87 ID:Gd4C1ezO
forge vs modloader forge メリット 多機能の上に便利機能も付いているため競合しにくい上に鉱石辞書などでコラボも簡単。 デメリット 後方互換性があまりない。つまり作ったmodがすぐに使えなくなるかもしれない。 非forge前提modと高確率で競合する。 modloader メリット 1バージョンあたり1回の更新で済む。 デメリット 作成したmodが競合しやすい。 mod作成が難しい。
7 :
名無しさんの野望 :2012/06/17(日) 01:09:18.62 ID:63YoUigC
>>5 どうせテンプレを作る必要もなくdat落ちですよ。もしb2があるなら
>>980 が建ててくださいね。
8 :
名無しさんの野望 :2012/06/17(日) 01:12:33.61 ID:0ELJdCfw
非公式フォーラムもあるし、単発スレで終わっちゃいそうだけどとりあえず使ってみる 相談なんだけど、 「エンドコンテンツ系」 「期間制限付きのワールドを生成して何かしらにチャレンジ」 「何か通常ワールドとそのワールドで役に立つものが色々手に入るハクスラ要素」 っていうmodを作ってるんだけど、 技術的なところは見通しが立つんだけど 上の範囲内で、どんな遊びをしたら飽きないで繰り返し楽しめるのかが上手くまとまらない。 単にバトルだとマイクラっぽい遊びではないし、そういうのはベタダンとかあるし。 とにかく飽きの来ない要素にしたいんだ。 何か知恵はないだろうか。
9 :
名無しさんの野望 :2012/06/17(日) 01:17:59.06 ID:63YoUigC
>>8 面白いアイテムを作る
やりこみ要素(他のmodとの連携とか工場系)
レッドストーン関係
こんな感じじゃない?
10 :
名無しさんの野望 :2012/06/17(日) 02:13:09.03 ID:0ELJdCfw
>>9 面白いアイテムは、便利さならEE2、面白さなら米MODとか他にも色々、
ブロック回りのやりこみは工業系、
レッドストーン関係はRP、
と、その辺の掘は埋まっているんだけど、
イマイチそれを発散というか使うまでもないというか。
もちろん、マイクラ最大のやり込みである巨大建築っていうのはあるんだけど、
それ以外の遊び方を発展させられないかなぁ、と思っている。
ベタダンは面白いんだけど、アレを拡張したとして、
MOBとの戦闘をやり込みにするなら別にマイクラじゃなくても…と感じたので、
戦闘以外でそういうのを用意してみたい。
11 :
名無しさんの野望 :2012/06/17(日) 12:14:30.83 ID:NyEYFHKA
modスレあるんだからそっちでいいんじゃねぇの? 無駄にスレ立てるとか荒らしかよ つか荒らしか
12 :
名無しさんの野望 :2012/06/20(水) 19:47:38.38 ID:scUVuakJ
荒らし揚げ
13 :
名無しさんの野望 :2012/06/22(金) 20:45:11.22 ID:RwzfbEEG
あれ?もしかしておまぽの立てたスレじゃね?
14 :
名無しさんの野望 :2012/06/30(土) 16:31:06.88 ID:dJrYHlPX
過疎だのう。需要ありそうなのに。
15 :
名無しさんの野望 :2012/06/30(土) 17:12:13.86 ID:poKhnZNG
荒らしが立てたスレに人が来るかよ
16 :
名無しさんの野望 :2012/06/30(土) 17:21:32.18 ID:5w+u7vvi
17 :
名無しさんの野望 :2012/06/30(土) 19:03:35.96 ID:d/M7+GO+
ここのスレ住民で、Mod作れる人いるのかな? まあフォーラムで僕の考えたMod、と展開されるよりはいいか?! まあ、何回かModスレでこんなの有ったらいいな、と書いてるネタ有るが 反響がいまひとつ・・・作り難いのか、興味がないのか。 まあもうちょっと考えてみるわ。
18 :
名無しさんの野望 :2012/06/30(土) 19:08:03.77 ID:Mr1lZjl1
使用すると本体が落ちるアイテムを追加した所で挫折しました
19 :
名無しさんの野望 :2012/06/30(土) 19:23:21.75 ID:2DumE6oF
LR的に1タイトルで何スレも立てるのはNG(類似スレ)だから、荒らしと言われても仕方はないよ もちろん、誰が立てたかなんてのはどうでもいい事だと思うし、それが理由で過疎ってるとか言うつもりはないけど でも、Modスレが使用者と開発者で話が混乱するほどになっての分割、みたいな理由があったならともかく 結局俺が聞きたいから専用スレ立てました、みたいにしか見えない状況だから、過疎るのは当たり前だし 先に書いたようマイクラスレ住人の多くが必要と考えて立ったスレってわけでもないから、叩かれてしかり っていうか、本当に需要があったら過疎ったりするわけないわけで、つまりそういう事でしょ 自分もMod作ったりしてたけど、ここで話すような話題って特に思いつかないよ
20 :
名無しさんの野望 :2012/06/30(土) 20:09:10.11 ID:poKhnZNG
21 :
名無しさんの野望 :2012/06/30(土) 22:27:25.52 ID:HLX29sNF
22 :
名無しさんの野望 :2012/06/30(土) 23:38:34.63 ID:d/M7+GO+
23 :
名無しさんの野望 :2012/06/30(土) 23:47:22.22 ID:d/M7+GO+
まあ羽メイドさんでいいじゃないの突っ込みは無しよ。 だって自分のプログラムしたMobがもりもり動くのは良いんじゃない。 おまけ要素で、対戦なんかできるといいね! (Mob対Mobとか) 警備ぐらいしか思い浮かばないが、エンダーマンに抜かれたブロック補充とか・・・
24 :
名無しさんの野望 :2012/06/30(土) 23:59:33.01 ID:HLX29sNF
1.似たようなMODにComputerCraftがあるため必要性を感じない 2.作るのに相当時間がかかる 3.作れる人が限られる(最低でもGUI/TileEntity/AIが理解できていないと無理) 君が考えるべきところはこれがどのくらいの時間で完成するか見積もりを出すところだと思う そしてできたところでよろこぶプレイヤーがどれだけいるか 自分でAI部分をちまちまやるより採掘をするMOB、伐採をするMOB、植林をするMOB、敵と戦うMOBを 個別に用意してもらったほうがプレイヤーは喜ぶ つまり超高コストな上に需要がたいしてない 面白いと思うよ でもつくろうとは思わんね
25 :
名無しさんの野望 :2012/07/01(日) 00:11:02.16 ID:JT8mYJTF
モブ操作に特化したAPIを用意して動的にスクリプトを読んで動作するマクロツールというぐらい機能の機能があればあるいは これだとEditModeやEditorでやっても面倒な操作の自動化とかで結構需要がある
26 :
名無しさんの野望 :2012/07/01(日) 00:12:52.86 ID:kMtQG7LP
ComputerCraftのアドオンな雰囲気のModじゃ簡単に済ませないかな? (作者の許可おkとして) BCやメイドさんを参考にしたのも、入れてる人多そうだったから まあ大型Mod並みに難易度はあるか メイドさんのオープンソース見て、参考にしようとしたがお手上げだ。
27 :
名無しさんの野望 :2012/07/01(日) 00:30:50.00 ID:I7cDB0AP
カルネージハートMODが完成したとしてどこが面白いと感じるか分析したほうがいい 普通のプレイヤーが面白いと感じる要素ははっきり言ってない むしろAI設計に苦痛を感じる #自動採掘MOBの場合 自動採掘をさせるだけなのになぜむずかしいロジックを設計しなければいけないのか - 高低差のある場所を掘る処理(はしごをかけるのか、足場ブロックを設置するのか) - 手持ちのピッケルが壊れた場合どこから取り出すか、取り出す場所になかったらどうするか - 手持ちのピッケルが石だったらほれない鉱石がでてくるがその場合どうするか - 採掘範囲をどうするか - 採掘範囲を掘りつくしたらどうするか - 溶岩の扱いはどうするか - 敵性MOBに襲われたらどうするか - 落下した場合どうするか ざっと考えただけでもこれだけ面倒な要素がある #戦闘MOBの場合 メイドで十分 カルネージハートを楽しみたいならはんげ行けばいいし 自動採掘したいなら自動採掘MODがいくつかあったと思う 戦闘はメイドでおk カルネージハートMODで何がしたい? プレイヤーに何をして楽しんでもらいたい? そしてそれは開発コストに見合うものかい?
28 :
名無しさんの野望 :2012/07/01(日) 04:03:13.20 ID:YdZEH5YQ
少なくとも行動アルゴリズムを構成するロジックパネル一覧あたりまで煮詰めるべき。そこでセンスを見せれば、
>>27 で挙げられてるような面倒な思考迷路で遭難してる開発者が飛びつくかもしれない
29 :
名無しさんの野望 :2012/07/02(月) 03:06:31.92 ID:eexZ9zuY
ぼくのかんがえたさいきょうのMod、誰か作ってくれなんてのは、フォーラムでやっとけ 単発目的のためにスレ立てるなよ
30 :
名無しさんの野望 :2012/07/02(月) 07:19:40.74 ID:uciKhTnN
updatemd5後reobfuscateしてもclassファイルが出力されてないのだがなんだこりゃ あとimportの指定とjavaの配置フォルダ、配布時のフォルダ構成などが結構いい加減でも動く javaファイルの配置は mcp62/src/hoge/blockHoge.java mcp62/src/minecraft/net/minecraft/src/mod_hoge.java でmod_hoge.javaに package net.minecraft.src; import hoge.*; として ModLoaderに読ませるzipファイル内の配置は mod_hoge.class hoge/blockHoge.class だがしかし mod_hoge.class blockHoge.class でも動く しかも自作の全modをフォルダごとにわけてるのにreobfuscate後classファイルが一箇所に集まるのにつらい 200個以上のclassファイルを選り分けるのはもう秋田 どっかに詳しい情報ないかねぇ
31 :
名無しさんの野望 :2012/07/02(月) 23:39:43.97 ID:eexZ9zuY
updatemd5は変更チェック用のmd5リストを現在のソースから再生成 追加したソースとかも元からあるものとして扱われるようになるから、自作のmodソースは抜いてから実行しれ 通常は、落としてきたらまずupdatemcpして、前提modのソース追加して、updatenamesして、 (このあたりは前提modのがどのmcpのネームテーブルにあってるか次第で順序変えた方がいい事もある。試せ。 winmargeとか使えば差分も簡単に調べれる) その後、updatemd5して、自作のmodソースを追加したり新規作成したりして、recompileしてreobfuscateで出力 getchangedsrcで変更ソースだけ抜き出し mcpのネームテーブルが更新されてたら、getchangedsrcで自作の変更ソース取り出してバックアップし、 上記やり直したあと自作ソース追加後にupdatenames 何やるにしても想定してない結果になったときのこと考えてバックアップは取れよ よくわからないなら、実行前の警告どおり、update系は使わず諦めれ
32 :
名無しさんの野望 :2012/07/02(月) 23:46:38.45 ID:eexZ9zuY
諦めれ→忘れれ つーかupdatemd5はじめupdate系バッチは、全部実行前に警告出るんだから よくわからないのに実行するなよ、書いてあるからちゃんと読め 英語力皆無の俺でも何とかなるレベルだぞ zipからの読み込みはModLoader.javaのコード嫁 単にクラスローダーに突っ込んでるだけだからZIP内の構造が関係ない事くらいなら見ればわかる プログラムは書いてあるとおりにしか動かないから、ソースがある以上何故そうなるかわからないって事はないし きちんと調べればいつか答えは見つかるものだぞ、諦めなければな
33 :
名無しさんの野望 :2012/07/03(火) 00:56:24.82 ID:tXH9GPf1
なるほどなぞが解けたthx
34 :
名無しさんの野望 :2012/07/26(木) 23:38:22.99 ID:W2jL733L
Multi Page ChestのMODにAccess ChestのMODにあるMove機能とか全部入れたいのですが誰かできませんか? スレチならごめんなさい
35 :
名無しさんの野望 :2012/07/27(金) 08:16:15.74 ID:+pNBX2Jj
できるよ
36 :
名無しさんの野望 :2012/07/27(金) 13:41:22.86 ID:33MQ7dTQ
>>35 頑張ってみます
Gui〜Chest.classを見ればできそうですか?
37 :
名無しさんの野望 :2012/07/29(日) 07:42:34.03 ID:MG7GCu8e
ドロップ化してるアイテムを吸い込むブロックってのを作ろうとしてるんだけど どのクラスを見ればいいんだろう チュートリアルに全然無くて困ってる
38 :
名無しさんの野望 :2012/07/29(日) 08:38:03.20 ID:rO2zLzZS
釣竿
39 :
名無しさんの野望 :2012/07/29(日) 08:43:19.30 ID:MG7GCu8e
>>38 あーそれは描画で使えそうだね 気づかなかった
そのものずばりRP2のTransposerをMLだけでやろうとしてて
意外と難しい… あれは初心者には荷が重すぎたのかな
40 :
名無しさんの野望 :2012/07/29(日) 09:36:00.79 ID:rO2zLzZS
やりたいことを細切れにしてひとつずつ解決するようにしないと何もつくれんぞ ・ドロップアイテムの取得方法 ・ドロップアイテムを移動させる方法 ・ドロップアイテムが指定範囲にあるか判断する方法、もしくは指定範囲内のアイテムを取得する方法 ・持続的にドロップアイテムを移動させる方法 ここまでくりゃ簡単だろう ドロップ化してるアイテム = world.getEntitiesWithinAABB で net.minecraft.src.EntityItem.class 吸い込むブロック = world.scheduleBlockUpdate して updateTick で 上記の処理で取得したアイテムのmotionX〜Zに対しブロックの座標より 小さければ加算、大きければ減算すればいい
41 :
名無しさんの野望 :2012/07/29(日) 12:00:39.27 ID:MG7GCu8e
>>40 おお・・・本当にありがとう
そこまで細分化しきれてなかったよ
AABBってそういうことだったんだ勉強になりました
出来上がったら日フォにでものっけておこかな
42 :
40 :2012/07/30(月) 16:56:09.30 ID:83ke36pf
ちょっとやってみたけどgetEntitiesWithinAABBの引数のAABBが 吸引したい範囲ってことで合ってる? そうすると範囲内にあるアイテムがListで返されるから それを内部インベントリにItemStackで詰める。詰めると同時に アイテムとしての描画を消すって流れだよね
43 :
名無しさんの野望 :2012/07/30(月) 20:29:37.23 ID:UabrI5d9
誤解してそうな表現だが間違ってはいない getEntitiesWithinAABBは指定範囲内の指定EntityをListで返す World上にあるアイテムはEntityItem 実際にアイテムとして扱うにはEntityItemのインスタンス.itemだ あと描画を消すという表現は間違っている World上にあるEntityを削除するにはsetDead();だ ぐだぐだいわずひとつずつサンプルプログラムつくって動作を確認しなさい getEntitiesWithinAABBの動作を確認するプログラムを作り System.out.orintln(〜);で取得物確認すりゃいいだろ 全部を把握して作りこんで確認というのは手順として間違ってる 1部分作り確認、問題がなければ次、というふうにしないと問題の切り分けが大変になる なれれば一気に作りこんで問題ないがな
44 :
名無しさんの野望 :2012/07/30(月) 23:37:27.78 ID:83ke36pf
>>43 レスありがとうございます。励みになります。
今回はgetEntitiesWithinAABBの動作確認を
呼び出し階層の中から選んでその後にSystem.out.println(list);
をコピペ追加して行いましたが、この様な操作でよろしいでしょうか?
何かオススメの方法があれば教えてください
45 :
名無しさんの野望 :2012/07/31(火) 07:04:16.01 ID:gGgL3XoJ
何が聞きたいか意味がわからん 動作確認ができないのか? デバッグコードの埋め方にアドバイスなんかできるのか 知りたい情報なんて人それぞれだろ JAVAをどれだけ理解しているか Minecraftの仕様をどれだけ理解しているか それによって変わるのはちょっと考えればわかるはず 今後、MODを作っていくにあたって全て聞かなければ作れないのか? 自力でなんとかできないようならあきらめたほうがいい お前がいまやろうとしているのは答えがひとつしかないテストじゃなく も の づ く り だ
46 :
名無しさんの野望 :2012/07/31(火) 11:17:39.12 ID:VeNDUhBF
>>45 今ようやく作りたいものができました
たしかにできてから振り返って見ると、自分のレスで
何を聞きたいかわかりませんね、すいませんでした
お付き合いしてくださいってありがとうございました
47 :
名無しさんの野望 :2012/08/01(水) 02:35:28.83 ID:On4PX2s2
48 :
名無しさんの野望 :2012/08/03(金) 21:18:02.36 ID:sZkgq5yu
49 :
名無しさんの野望 :2012/08/07(火) 02:22:07.25 ID:n6IDa+P7
アーマードコアLRのパルヴァライザーのような 倒されるたびに学習してリスポーンするAIをもった敵MOBを作りたいのだが 倒されるまでに受けた攻撃の種類を判定するにはどんな風に書けばいいのだろうか? 一通り作って順番にスポーンさせる方法も考えたんだが 他のMODによる攻撃にも対応させたいから全部作るのは無理だった
50 :
名無しさんの野望 :2012/08/09(木) 12:15:29.71 ID:i4OX09BZ
1.3.1から独自セーブデータが作れなくなったのか? IntegratedServerとClientで二重に開くからエラーが出るな
51 :
名無しさんの野望 :2012/08/10(金) 23:04:40.45 ID:w/XVlqC+
ここはModdingの本スレ?それともModdingの本スレってあるの?
52 :
名無しさんの野望 :2012/08/10(金) 23:36:51.79 ID:IcEKBGTL
2chで他にModding専用スレがないから本スレと言えなくもないけど…という塩梅
53 :
名無しさんの野望 :2012/08/11(土) 03:15:44.09 ID:+HFWksQp
java分かる人向けにmodの作成ノウハウ共有する場所があったらいいなぁ 今作ってる人に参考になるのはもちろんmod作成に参入する人増えるだろうし みんなコード読んでは書き読んでは書きやってるでしょ・・・
54 :
名無しさんの野望 :2012/08/11(土) 08:46:58.10 ID:h1E9WCXW
だよなぁ 関数単位ならMCPで追加されるJavadocがその役割なんだろうけど、EntityやModel、NBTとかの概念までは読むしかないからな Modding WIki がもっと活発になれば
55 :
名無しさんの野望 :2012/08/11(土) 09:29:57.67 ID:jF01ieNY
1.4が来て、落ち着いてからだな
56 :
名無しさんの野望 :2012/08/11(土) 10:40:28.61 ID:mapwJxsD
57 :
名無しさんの野望 :2012/08/11(土) 11:12:45.32 ID:h1E9WCXW
チャットだと資源にならないじゃん
58 :
名無しさんの野望 :2012/08/11(土) 13:38:33.94 ID:hKZXPEAi
ModelというかRenderer、描画周りの資料はあれば嬉しいかなぁ 他はデバッグモードで追っかければだいたい何が起きてるかわかるけど、 表示バグだけは数値追いかけた所でわからないし。
59 :
名無しさんの野望 :2012/08/11(土) 18:55:17.27 ID:NSCcJ+mW
海外のサイトとかwikiとかフォーラムにはそこそこ情報あると思うけどな 英語弱いしコードみりゃいいから、自分はあんまし見てないけれど
60 :
名無しさんの野望 :2012/08/11(土) 20:38:03.22 ID:AKuEN6bG
英語は不得意ではないが、流石にコードと英語を同時読みは勘弁願いたい かといってフォーラムで糞トピックたてるのは申し訳ないんだよね。質問できてwikiやフォーラムでリンク張れるレベルのModdingスレがほしい テンプレがしっかりすれば人が来てくれるのだろうか
61 :
名無しさんの野望 :2012/08/11(土) 21:09:44.44 ID:AKuEN6bG
62 :
名無しさんの野望 :2012/08/11(土) 21:25:50.76 ID:6+5yREK0
スレ番は0.0.2で良いんじゃないか? しかし、このスレが埋まるのにどれくらい時間がかかるんだろうww
63 :
名無しさんの野望 :2012/08/11(土) 21:28:55.93 ID:AKuEN6bG
今の1.3.1更新はEntitiy?がマルチ化で大幅改編されてるから止まってるらしい でも大手modの作成者も情報交換できるようにすればいいじゃんと思う。 後は宣伝なんだけど…
64 :
名無しさんの野望 :2012/08/12(日) 15:35:15.07 ID:i6vaFT8G
日本のmod作成者は基本的にツイッターで情報交換してるからな・・・。
65 :
名無しさんの野望 :2012/08/12(日) 16:43:44.79 ID:BzlBbbHM
そのうちサンプルやまほどどっかにのっけるわ
66 :
名無しさんの野望 :2012/08/12(日) 20:02:38.82 ID:t3zNmq67
67 :
名無しさんの野望 :2012/09/06(木) 15:22:36.61 ID:67KhE0Tj
1.2.5環境です Minecraft Code Packのstartclient実行環境下でTooManyItems(TMI)を使う場合、 TMIのソースがないとダメなんですよね? 通常通りにTMIをインストールすればいいのかとも思ったのですが、 実行時MCP_root\jars\bin\minecraft.jar中のclassは使ってないようでした。 ※試しにスニークをトグル式にするij.classを入れたけど反映されなかった テスト時の必要なアイテムはワールドデータのチェスト等に自前で予め準備して やるのが一般的なのでしょうか? 1.3.xではゲームモード変更で対応できそうですが。
68 :
名無しさんの野望 :2012/09/06(木) 22:06:16.81 ID:In96+2rg
インストール済みのjarでデコンパイルしたの?
69 :
名無しさんの野望 :2012/09/08(土) 21:58:13.14 ID:C0SV0n0c
TMIを導入済みのjarをデコンパイル 付属のソースをsrc/に突っ込んでデコンパイルされた*.javaを上書き CodeChickenCoreもぶっこみ でいけたyp
70 :
名無しさんの野望 :2012/09/19(水) 19:06:10.27 ID:6zxDvJ1a
mobの追加方法は見かけるけど、プレイヤーモデルの変更方法とか見かけないよね いろんなサンプル見てみたいわ
71 :
名無しさんの野望 :2012/09/20(木) 11:24:30.69 ID:PpAES9Ix
RednerPlayerAPI使用modをデコンパイル
72 :
名無しさんの野望 :2012/10/03(水) 11:40:33.19 ID:jnwDdmqI
73 :
名無しさんの野望 :2012/10/03(水) 12:57:08.58 ID:O6ocaoR+
74 :
名無しさんの野望 :2012/10/06(土) 20:49:08.33 ID:xf4SJFCv
既存クラスを触らずドロップアイテムを操作したいんだけど、 ブロック破壊時に呼ばれるイベントとかってない? 251にはまだないけど net.minecraftforge.event.entity.player.PlayerEvent.HarvestCheck あたりが使えるのかな?
75 :
名無しさんの野望 :2012/10/08(月) 13:07:13.56 ID:vTbNO3gZ
>>37 ExperyItem ってMODが、まさにソレに近いことしている。
こいつはEntityItemがプレイヤーに向かって移動する。
ソースも配布しているから参考にするといい。
76 :
名無しさんの野望 :2012/10/08(月) 18:07:04.85 ID:Ek0IiBbN
ここ結構需要あるやん
77 :
72 :2012/10/09(火) 19:55:11.65 ID:9BUjg5+g
>>73 さんくす
2番目のリンクたすかりました。
あと、わけわかめなときには、minecraft の ソースながめて、なんとかやってます。
とりあえず、RP の AdvBench のようなものは、
Block から BlockContainer へかえて、
さらに TileEntityはせいの、TileEntityUsefullCarftingTable に IInventory を
実装しつつ雰囲気(なぜか変換出来た)をつかみつつあります。
java はよーわからんけど、とりあえず 1番のリンクはつかわずになんとかなってます。
とにかく、動画を3回みてから、パソコンのまわりを三回まわって、コード書き書きしてます。
つぎは、GUIとかつけてくことにします。
以上、ちらしうらと、お礼でした。
78 :
72 :2012/10/12(金) 18:10:16.29 ID:slecdNO6
連投、ちらうらすまそ。
GUIひらいて、クラフティングできるようになったv(^^)
まだ、クラフティング途中にGUIとじたら、クラフティング消えるけど...
とりあえず、RPのAdvBench っぽくしようとして、クラフテイング場所も2つ
用意して、うごかすようにしてみました。
(2つ用意したのは、たとえば、ディスペンサーつくってる最中に、
弓がたりことがわかって、弓をクラフティングしたくなったみたいな場合を考えて)
ttp://www.rupan.net/uploader/download/1350032391.jpg Pass -> mod
インベントリから材料とってきてのクラフティングとかなると、やっぱりInventoryCrafting
相当を自作するしかない?
なにかいいのあったら、おしえてくらさい。
79 :
名無しさんの野望 :2012/10/13(土) 00:08:24.18 ID:Ul1174hy
? 実は知らないんだが AdvBench って・・・ワークベンチ系じゃないんか? 見た感じワークベンチだけど。 ワークベンチ系統ならばクラフティング途中にGUI閉じたらクラフティングキャンセルする のが妥当なインタフェースだろ? インベントリとかワークベンチとか、利用者が混乱しないために一貫性持たせる意味で。
80 :
名無しさんの野望 :2012/10/13(土) 00:24:59.09 ID:PiRPuy9d
>>79 別人ですまん上にかまどを参考に話してるが…
スロットに入れたアイテムがguiを閉じたときに撒き散らされるようにするには、わざわざ処理を書かないといけないように見える
ただそれが作成途中で実装されて無いだけの話じゃないかな
81 :
名無しさんの野望 :2012/10/13(土) 00:53:07.91 ID:Ul1174hy
いや、「まだ」って言ってるから、かまど系みたいに消えないようにしようってのかな?と クラフティング消えるっていうのが、どんな状況なのかが伝わってこない。 というか、かまどとかってチェストみたいにわざわざ記録しなきゃならんよな。
82 :
72 :2012/10/13(土) 08:28:27.63 ID:x6IrMp6w
あ、正式名称はredpowerのプロジェクトテーブルですね。rpのzipの中見てたらadvbench になってたのでそのままかいてましょた。 すまそ。 目標は、rpのプロジェクトテーブルもどきです。クラフティング途中でも、gui閉じて、新しい材料を取りにいける。 こんなかんじです。 バニラの作業台は、閉じた時にアイテムをばらまくように書いてあったので、今作ってる方では その処理を書かなかった。そしたら、guiとじたら、ばらまくこともないけど、消えてしまったと。 たぶん title entity のようにシリアライズしないといけないんだろうけど、inventory Craftingクラスにインベントリのインタフェース実装されてたから、そんな処理されてんのかなとおもってた。 確かにかまどは、tile entity で、保存してるようだったけど。 しばらく悩んでみます
83 :
名無しさんの野望 :2012/10/13(土) 16:46:51.48 ID:jvpjAkb+
悪いことはイワン 最初はしっかり設計してテクスチャ用意してからつくりな
84 :
名無しさんの野望 :2012/10/13(土) 16:55:40.94 ID:PiRPuy9d
ロシア人が悪いのか…
85 :
名無しさんの野望 :2012/10/14(日) 11:34:54.20 ID:765zFRDa
Minecraft Modding Wikiってすごく微妙だよね… サンプルが記載されてるけど、大抵どこか重要な箇所が抜けてるか、 暗黙の了解的に省略されてる 防具の追加とか、あからさまにメソッドの呼び出しが抜けてるし… そもサンプルソースをどのverのMLやらForgeで作ったかが記載されていない時点でアレだけど… まー、ここ編集するぐらいならフォーラム行くわ!って人が多いんだろうけど…
86 :
名無しさんの野望 :2012/10/14(日) 11:58:09.43 ID:6XTgpozi
>>85 全て説明するのは難しいと思うけど、Modding wikiのソースはテクニックが記載されているだけだよね・・。
ModLoader対応の場合、BaseModを継承したクラスを作成する事はとても重要だけど、解説されてなかったから最初の段階でつまづくと思う。
現状は
>>73 のサイトをじっくり読んで覚えていくのが一番だと思う。
87 :
名無しさんの野望 :2012/10/14(日) 13:12:31.74 ID:bkaxISpq
wikiなんだから書き直せばいいんじゃないのか?
88 :
名無しさんの野望 :2012/10/14(日) 14:05:27.52 ID:m+2dIsuG
wikiは下支えしてくれる編集者がいないと辛い フォーラムで単発チュートリアル出してくれてる人もたくさんいるから、知名度の問題だと思うけど…
89 :
名無しさんの野望 :2012/10/14(日) 14:07:00.80 ID:ZksenZSk
あなたの不要になったMinecraftアカウント、私が回収します。
「荒らし」「MCBanされたアカウント」「未使用アカウント」等の不要アカウントを回収します。
[email protected] にユーザ名とパスワードを、本文に含んで送って下さい!
お待ちしています!
90 :
名無しさんの野望 :2012/10/14(日) 18:20:12.71 ID:LMWKJ7t3
おっと小松沢の亜種か
91 :
名無しさんの野望 :2012/10/15(月) 00:25:16.58 ID:Lj5zpZeI
あのwikiは成り立ちがちょっと特殊だから、と古参顔して説明してみる ユーザの一人が軽い気持ちでmoddingの日本語wikiを作らないかと提案 ↓ 素行の悪さで有名なユーザが話を乗っ取り、強引に管理者に ↓ MOD作者たちが警戒、他のユーザも猛反発 ↓ やむなくフォーラム管理者とモデレータが乗り出して悪行を未然に阻止、管理権限を譲渡させる ↓ 無事にwikiは始動したものの、「moddingに熱心な中核メンバー」が不在 フォーラム管理者やモデレータの人はスマートに事を収めてくれたんだけど どうしても限界はあるよな 逆に言えば、今からでもやる気のある人大募集状態じゃないかなー(チラッ
92 :
名無しさんの野望 :2012/10/15(月) 01:25:32.96 ID:q/rxXXf8
生い立ち云々はさておき このスレもそうだけど、そもそもMod作成情報のwikiだって 記事の需要は自力解決を諦めている人であって、供給できるのは自力解決できる人 供給できる人はWiki見る必要ないから、わざわざ自分の見ないWikiを編集する必要もないってわけじゃん だいたいmod作る人なら、wiki弄る時間あったらmod作ってると思うぞ つか、他のModの仕組みが知りたいならソース見れ ソース以上に解説してるものなんてどこにもねーですよ それで何やってるか理解できない難解な処理があったら、作者や識者に尋ねてみればいいよ 既にそういうコミュニティはいっぱいあるんだから
93 :
名無しさんの野望 :2012/10/15(月) 02:04:40.87 ID:+dV/YvEX
PCの環境が多種多様すぎて、絶対これでおkって解説が作りにくいんじゃないの? 更には本家のアップデートによる仕様変更もあるわけだし・・・ 誰でもMODを作れるようになる為のWikiってのはかなり難しい話に聞こえるよね
94 :
名無しさんの野望 :2012/10/15(月) 02:28:46.67 ID:q/rxXXf8
単に、作りたい奴がいないだけだと思うぜ wikiが欲しい、ではなく、俺の知りたい情報を、調べる手間なく得たいってのが根底にあるんだもの 自サイトやフォーラムの自分のたてたトピックでやってる人は現に居るし 情報発信の場はいくらでもあるから、解説を作れる人でもwikiに書き込む必要がない それに、海外情報はかなり豊富な部類だから、細かいこと書いても翻訳作業と大差ないわけだし
95 :
名無しさんの野望 :2012/10/15(月) 03:12:07.47 ID:Lj5zpZeI
最初は「俺が気づいたちょっとした小ネタ」あたりを投げて行けばいいんじゃないか? 出来上がった籠の中に、思いついた時にひょいひょいと楽しげなものを投げ入れていくお仕事です そのうち誰か、籠の中身を整理しようとするきれい好きが出てくるかも
96 :
名無しさんの野望 :2012/10/15(月) 20:02:50.39 ID:3B6eIqGa
ModdingWikiはMOD開発トピックのチュートリアルのまとめとしては機能してるんじゃないかな APIのリファレンスとしては足りないけど、そこは他(海外を含む)のWikiやフォーラム読めば何とかなるし 現在は特にFMLが追加された最近のForgeのチュートリアルが増えてほしいと思ってる (もちろん、ML/MLMPのチュートリアルも増えてほしいけど)
97 :
名無しさんの野望 :2012/10/15(月) 20:18:06.35 ID:t1pUD1ra
チュートリアルにリンク放り込むんじゃなくて、目的別ページ作ってそこにリンク放り込む方がいいよね Mod自体の知識は貧弱だけど、和訳とかで協力できたら嬉しい
98 :
名無しさんの野望 :2012/10/15(月) 23:44:45.31 ID:rdpxZbFq
99 :
名無しさんの野望 :2012/10/19(金) 20:14:43.75 ID:unSFPk68
>>98 これが訳すやつだって今気づいたから、最初のClientの長文だけ訳してみた。用語がよく判らないから、こんな感じに書いてみたけど判る?
(間違ってても責任はとれない)
一連のコード[hooked code]からシステムへの一次通信[primary communication]を扱う。
FMLにおける導入開始点[the FML entry point]は、Minecraftから呼ばれる
FMLClientHandler.beginMinecraftLoading(Minecraft)である。
複雑化された[obfuscated code]は、このクラス、または"server"(か"client")の他のコード群[other members of code]に注目するようになっている。
実際のModは、Loaderのarms lengthによって扱われ、この時、類似のクラスがターゲットとなる環境(BukkitとClient)のそれぞれにあることを想定する。
もしロード中にこのエラーが発生したとき、これが呼び出されてエラー画面のメゾットの下に表示される
うーん…。たとえ英語が読めない人でも、その訳より原文読んだ方がが分かりやすいかも。
>>100 やっぱそうですよね〜
原文が文になってないし、解説でもないし、ほぼ単語並べただけ
訳の書き方も悪いんでしょうが、正直これはどうしようも…
や、原文はちゃんと文になってるよ。ピリオド書いてないから分かりにくいけど。 訳が変なのは、プログラミング用語なんかが訳せてないんだと思う。 例えば、entry pointはプログラミング用語としてはエントリーポイントって訳すし、obfuscated codeは難読化されたコードと訳す、など。 プログラミング用語では無いけれど、primaryは「最初の」って意味で書いてあるんじゃないかな。 docなんて、走り書きだったりプログラマ以外が読むことを考えてなかったりするから、訳すのはかなり大変だと思うよ…。 で、提案なんだけど、ForgeのWikiとか、そこから辿れるチュートリアルを訳してみたらどうかな。こっちはdocに比べれば圧倒的に訳しやすいはず。網羅的な資料じゃないけど、MOD作成の取っかかりにはなると思う。 長文&偉そうなこと言ってすまんね…
http://www.minecraftforge.net/wiki/Forge_Events Forge Events
With the new Forge Event Bus system,
everything is done using events.
新しいForge Event Bus Systemなら、
全てのイベントを扱うことができる。
For an introduction on how to use the event system,
read AtomicStryker's guide on How To Use Forge Events
新しいイベントシステムの導入については、AtomicStryker's guide on How To Use Forge Eventsを読んでほしい
The @ForgeSubscribe annotation subscribes
a method to the event system,
and the parameters of the method determines
which events it receives.
The @ForgeSubscribe annotation(Forgeの自署注釈)は、そのイベントシステムのメソッドと、イベントを受け取るパラメータ(変数)について書いてある。
A super class parameter will make the method also receive all subclass events.
スーパークラスのパラメータは全てのサブクラスのイベントをメソッドに受け取るようになっている。
This is a list of events currently available.
これは、現在利用できるイベントのリストである。
Notice
that all sub classes will of course have access to the properties of their super class,
thus this page will not list those as fields for the sub class.
注意
これらのサブクラス群はそのスーパークラスのプロパティ(詳細)を参照できるので、このページではそのようなサブクラス用のフィールドは挙げられていない。
まだ読みづらい気もするけど、量を考えたらこれぐらいが精一杯
駄目だったらもっと勉強して出直してきます
>>104 JavaやForgeの用語は訳さなくてorカタカナ語でいいと思う
例えば、
The @ForgeSubscribe annotation subscribes
a method to the event system,
and the parameters of the method determines
which events it receives.
は意訳すると、
「@ForgeSubscribeアノテーションを付けたメソッドは、そのメソッドの引数で指定したイベントが発生したときに呼び出される」
のような感じになると思う
106 :
72 :2012/10/20(土) 11:29:59.48 ID:8VnKgfnA
wikiに書いたら? ちょろっと手直ししたい感じのがちらほらと リンクも張れるし
>>104 です
>>105 Javaの単語かどうかは自分では判別できないことが多いので、その辺りはなるべく原文と併記で行きたいと思います
109 :
72 :2012/10/20(土) 15:48:46.90 ID:8VnKgfnA
ModdingWikiのmiyabi氏に連絡を取ってみようと思いますが、翻訳作業をやると言う方はいらっしゃいますか?
forgewikiはライセンスがコピー可のようなので、特に連絡なしでModdingwikiに翻訳していってしまいます Java用語などが不自然に訳されてしまっているのを見つけたら、直していただけると嬉しいです
112 :
名無しさんの野望 :2012/10/21(日) 12:03:36.78 ID:DWw/ezAZ
ModLoaderでのMODが作れるようになるチュートリアルみたいなのは散見されるんだけど Forgeでの初心者向けチュートリアルみたいなのないよね…欲しいなあ
>>112 MLで作ったことあるなら、英語だけどForgeWikiのチュートリアルが良いと思う
そういうのをModdingWikiにも欲しいな
Moddingwikiにやりかけ残しておいたら知らぬ間に完璧に翻訳してあった… 世の中優しい人が沢山居るんだなあと実感できたけど、なんか個人的には不完全燃焼… 嬉しいんですけどね
新Forgeのチュートリアル追加もどんどん進んでるな いつもwikiの解説お世話になってます
あっれえこのforgeのチュートリアルあったら翻訳いらんやん 勉強と恩返しの両立ウマーって思ってたのに
>>114 ごめんね
英語と日本語交互に書いてあるの見てウズウズしてきちゃったんだ
投げやりなとこもあるから変に感じるかも
>>115 ,116
なにこれすごい
JavaDocの翻訳なら需要あるんじゃないかな多分きっと恐らく
立体音響なMODありませんか? どの方向から音がしてるのかわかったらいいなぁと・・
Forgeのチュートリアルすごい…めっちゃ読みやすい
編集してくれた人ありがとう
>>118 ヘッドホンでやってると今でも結構わかりやすいよ
eclipseでやってると最初からclassファイルが出来るけど、 それでもMCPでコンパイルしないと使えないもんなの?
>>121 難読化が必要だから、配布用はMCPのコンパイルが必要
もじゃは新興ゲーム会社で、急成長しすぎて人数が追いついてないイメージw
1.4.2用MOD作るのにForge6.0.1.332でMCP環境構築しようとしたらinstall.cmdで色々エラーがでた。 引数の数が違ったりとかだったのでpythonのソース修正して何とか上手くいったけど 本当はどうやるものなんだろう。MCP7.2より新しいのがあるの?
>>127 おぉ、ありがとう!
ここも確認したつもりだったけど見落としてたか。
アドオンの作り方がよくわからない IC2のアドオン作ろうと思ってるんだけどドリルの上位互換のツールを作ろうとした時 ドリルをextendsして新しいドリルを作るみたいなことはできないんだよね?
IC2のjar使って直に書くならそのままextends出来るけど MCP使って書くなら、IC2のjarもMCPと同じ識別子での難読化解除しないと バニラのクラスの不整合でコンパイル出来ない
Minecraft1.4.2 ForgeUniversal バニラのアイテム”水入りバケツ”をかまどで鍛錬して、 金魂が3つ取り出せるっていうレシピを作ったんだけど、 一緒にバケツまで消費してしまう。 かまどで鍛錬してもバケツを消費せず、中の水だけ消費する方法を知りたい
>>131 ・TileEntityFurnaceを書き換える
・右クリック使用すると金塊3個と空バケツになる「金塊入りバケツ」を実装する
好きな方選べ
>>132 ありがとう!
とりあえず後者のほうで作ってみる
Modding WikiのMinecraftForgeUniversalチュートリアルがさらに更新されるのを毎日待っている ああいう解り易い説明少ないんだもの…くわしい方どうかお願いします
誤爆った
Minecraft1.4.2 Forge Eclipseです 他のmodで追加されたアイテムを使ったレシピを作りたいんだけど、 他modのアイテムをBlock.stoneみたいな形で呼び出すにはどうしたらいいでしょうか mcpの中のマイクラ自体にそのmodを導入したらいいのかなとか考えていろいろやってみたんですがわかりませんでした…
>>137 例えばic2なら、
ItemStack ironDust = ic2.api.Items.getItem("ironDust");
みたいに出来る。
APIのソースなら公開されてるから読んで参考にするといい。
Javaのリフレクションの知識が必要になるけど。
ダメージ値無視でいいならコレ アイテム名を調べないといけないが ModLoaderで使っているがForgeでもうごくとは思う public Item getItemFromName(String name) { String itemName = (new StringBuilder()).append("item.").append(name).toString(); for (int i = 0; i < Item.itemsList.length; i ++) { Item item = Item.itemsList[i]; if (item != null) { String itemName2 = item.getItemName(); if (itemName.equals(itemName2)) return item; } } return null; } public Block getBlockFromName(String name) { String blockName = (new StringBuilder()).append("tile.").append(name).toString(); for (int i = 0; i < Block.blocksList.length; i ++) { Block block = Block.blocksList[i]; if (block != null) { String blockName2 = block.getBlockName(); if (blockName.equals(blockName2)) return block; } } return null; }
今日初めて中身見たけど、 IDとIdが混在してたりLogとWoodが混ざってたりはらたつのり。 metadataがブロック固有の情報?
はい ちなみに4bit、羊毛が16色の理由 それ以上の情報(チェストの中身など)はTileEntity
ああ、位置情報もTileEntityだったのか。ありがと。 サーバー導入型の、1.4.2に対応した木こりMOD探すのが面倒だから作ろうと思っててね。 LogのMetadataは向き情報に使われちゃったから、プレイヤー配置のフラグは別に作らないとな。
環境:Minecraft1.4.2 MCP719 ForgeUniversal 新しく追加した作物を収穫するときに、 小麦のように種と作物をドロップさせる場合、 public int idDropped(int par1, Random par2Random, int par3) { return par1 == 7 ? TutorialApple.shiftedIndex : TutorialAppleCropSeeds.shiftedIndex; } public int quantityDropped(Random par1Random) { return 2; } BlockCrops.javaを参考になんとなくで↑のようにしたんだけど、当然のごとくだめだった TutorialAppleのほうはドロップできたんだけど・・・
>>143 ソースがその部分だけだとよくわからないな……
ちなみに、idDroppedメソッドの第一引数(int par1)にはメタデータが入る
小麦ブロックの場合、完全に成長(メタデータ = 7)したときのみ小麦アイテムを落とす
配布されてるmodのソースが見たければMCPでデコンパイル出来るみたいなんだけど、 どうやるのかな?
minecraft.jarにmodのクラスも全部突っ込んでデコンパイルしてみたら? でもMCPはレトロガード使ってて、レトロガードってエラーを無視する機能無いから 何かあるとすぐエラー終了する エラーでデコンパイル出来なさそうならDJ Java Decompiler使ったらいいよ バニラの難読化部分はそのままだけどね .classの拡張子に関連付けとくと、7zipでjar開いてclassダブルクリックでソース見れて便利
>>146 jarに突っ込んでデコンパイルしてみてもエラーが出たから困ってたんだ
ありがとう
普段はjd-guiっていうの使ってみてたんだけど難読化部分がイミフでわけわかんなくてね…
作者さんにソース見せてもらえないか頼んでみて、無理だったら勉強しなおしてみる
こんな質問に反応くれてありがとう
昨日、MODを作り始めた新参者です、よろしくお願いします。 Forge環境で開発してます。(MC1.4.2、Forge 6.0.1.349) @Mod.Initでオープンしたファイルを、MC終了時のタイミングでクローズしたいのですが、 「MC終了時」を判定するのに、どのイベントのタイミングが適切でしょうか。 MODの性質上、ファイル書き込みがそこそこ頻繁に行われるので、 基本、開きっぱなしにしておき、たまにflushすることを考えてます。 タイミングが無ければ、毎回open/closeするしかないのですが・・・よろしくお願いします。
終了のイベントはなかった気がする、TickTypeを確認してみるといいんじゃないかな 閉じる際はGui開くので、そのあたりで割り込むくらいしかなかったような気がする ただ、正常手順の終了以外の場合も考慮するなら、それだけじゃ無理 そのあたりも考えると、modというよりもjava、というかJVMの仕組みとかになりそう つか、どのみちリソースはJVM終了時に閉じられるから明示しなくても、という考え方も出来る どうしてもやりたいならシャットダウンフックくらいだと思うが、 シャットダウンフェーズでファイル操作をやるかは微妙なところかも…? どういう経緯を経てファイルクローズしない選択をしたかわからないから、蛇足かもしれないけど、 開きっぱなしにしない場合に起こると想定した問題(おそらく負荷による処理落ち等)が 本当に発生するのか、みたいな調査はしてるのかな? ファイルオープンにどれくらいコストがかかってて、それでどれくらいFPSが低下するか みたいな事を踏まえてないのであれば、先にそのあたりを調べてみてもいいと思うよ フレーム処理毎やTick毎に一回ファイルにログを書き出すコードとか書いて試してみるとか、手はいくらでもある
一定時間でflush esc押したのを検知してflush x押したり強制終了は知らん で逃げればいいんじゃね
>>149 詳細に書いて頂き、ありがとうございます。正直なところ、コストまでは考えてませんでした。
今回の経緯は、出力回数はそこそこあるけど、1回のファイル出力量は少ないので、「オープンしっぱなし」の発想が出てきました。
でも、149の書き込みをみて、単純に毎回open/closeしてもいいように思えてきました。
そもそも異常終了は、異常終了すること自体が問題なので、
そこまでファイルの中身を保証する必要はない・・・というのを前提に考えてました。
また、異常終了の時のために、期待しない程度にfinalizeを実装して、「運が良ければcloseされるかも」ぐらいで考えてました。
GCからfinalizeが呼び出されないケースもあるでしょうけど、
flushしとけば、そこまでは記録されると考えて、あとはバッサリ、あきらめで(汗)
いずれにしろ、仰る通り、JVM任せですねぇ。
TickTypeは、ITickHandlerを実装してあげれば、高頻度で「on*Tick*」系が呼び出されると思えばいいのかな?ちょっと試してみます。
>>150 さすがに、キー検知まではしたくない・・・やりだしたらきりがなさそうw
うわあ、ITickHandler、めっちゃ見間違えてたw 忘れてくださいww @ServerStarting、@ServerStoppingが使えないかと意気込んだけど、 これ、マルチだと、イベント発生しないのね、当然か・・・。
Esc押してってのは開いてるGui見ればわかるのでそっちでいいかも 描画されないとボタン操作とかできないから、確実に操作前に判断できる あとは、自前でバッファ用意して、書き出し遅延する仕組みを設けるって手もあるんじゃないかな 書き出しが必要になったらフラグを立てて、書き出す内容を適当なコレクションなんかにバッファリング 毎フレームなり毎Tickなり自前で計測した一定時間毎なり、適当な頻度で、書き出しフラグのチェックして 必要なときだけ、ファイル開いてバッファしておいた内容を全部書き出してフラグとバッファクリア、って感じ RenderのTickは秒間に数十回〜数百回呼ばれるので、 その間毎回Open/Closeするとかだったらコスト気にしないといけないと思うけど 毎秒1回くらいの書き出しとかなら、毎回インスタンスnewしてても体感できるような差はそんなに出ないと思う
>>152 ITickHandlerを実装するクラスで、EnumSet<TickType> ticks() を、
HookしたいTickの種類を返すように実装してあげればOK
んで、TickRegistryにそのhandlerクラスのインスタンスを登録してあげればOK
あと、1.4.2用はもう開発進んでない(1.4.4系に移ってる)から、1.4.2最新の355にしてもいいかもしれない
356から1.4.3、360から1.4.4
>>153 ですです。
そのバッファをjava.io.BufferedWriterをかますことで実現しようとしてたので、適度にflushという話に。
http://docs.oracle.com/javase/jp/6/api/java/io/BufferedWriter.html 「Guiを見る」っていうのがピンとこないのですが、ESCキーを押したときのGame menuの事を指してるんでしょうか。
なら、このメニューを表示するタイミングでflushするのがよさそうな気がしますね。
たまたま見てたITickHandlerのページを見る限り、Minecraft.getMinecraft().currentScreen;で判断できそうです。
・・・でもできれば切り替わる時のイベントがほしいなぁ。ということで、今から探してみます。
ITickHandlerを実装して試してみたら、超高頻度でtickStartとtickEndが交互に呼ばれる・・・。
この二つの違いがよくわからないけど、とにかくこれは今回の用途に合わない気がするので、見送りですね・・・
このイベント受け取るほうが、ファイル書き込みより負荷が高かったりして(笑)
>>154 あ、なるほど。Recommendedはまだ349みたいだけど、1.4.2の最終が355になる、ってことですね。了解です!
むう、メニューを表示するタイミングを通知するイベントはないですね。 ITickHandlerを実装して、tickEndでcurrentScreenがNULLからインスタンスがセットされたかどうかで判断すればよさそうです。 Minecraft#runTickを見ると、 FMLCommonHandler.instance().onPreClientTick();でtickStart FMLCommonHandler.instance().onPostClientTick();でtickEnd が呼ばれてたので納得です。 とりあえず、これで実装してみたいと思います。 ありがとうございました。
Modというかちょっと弄ってみたくなって始めたばかりなんだけど、 MC1.4.2/Forge6.0.1.355です スタックできる牛乳バケツのかわりのアイテムが欲しくて バケツミルクのクラス丸コピーして試してみたけど 普通に飲めるけど毒が治らないアイテムになってしまいました なんでかなと思ってcurePotionEffectsを検索して眺めてたら、ポーション効果解除のあたりで バケツミルクがポーション効果解除出来るアイテムのリスト(curativeItem?)に入ってる みたいな…雰囲気の部分があったから これが怪しいとは思ったのだけれど どうやったらcurativeItemに新アイテムを追加できるのかがわかりません やり方を教えていただけませんか?
>>155-156 rei's minimapとかspawncheckerとか、画面に何か描画したり文字描いたりみたいな
毎フレームの処理を行うModだと大体このあたりの処理を使ってるよ
ともあれ、よほど重たい処理を実装しない限りは問題ないので、試しにやってみてもいいと思う
呼ばれる回数はマシンスペックに依存するから(FPSの値の回数だけ毎秒呼ばれてる)
一定時間おきに〜みたいな処理をしたいのであれば、ゲーム内の時間やSystem.nanoTime()の値を使って
処理間隔を調整してやるといいかも
>>157 Item#setCreativeTab(CreativeTabs)
eclipse使ってるなら参照を検索して使っている場所をみて参考にしよう
あとは、クリエイティブタブにアイテムを追加してる別のModのソースとかも参考にしてみるといい
GitHub検索してみたり、jarに入れてデコンパイルしたら、ソースが出てくるものも少なくないよ
あと蛇足だけど、聞きたいことがわかりにくいので、まず何を聞きたいかを明確にしたほうがいいと思うよ
> どうやったらcurativeItemに新アイテムを追加できるのかがわかりません
重要なのはこの質問内容と環境情報だから、それ以外の付加情報とは分けてくれたほうが、
聞きたいことが読み取りやすいから回答もしやすくなるよ
159 :
158 :2012/11/11(日) 23:39:36.89 ID:OAyEqZJT
>>157 ああ違う、的外れの回答してたw
っていうかクリエイティブのタブに追加したいのかって思っちゃったわ
ちょっとソースとかおっかけてみないと回答はできなさそうなのでスルーしてくだし
>>159 解りづらい質問の書き方で混乱させて申し訳ありませんでした
クリエイティブタブへの追加はできています!
回答しようとしてくださってありがとうございました
>>157 ForgeじゃなきゃBottleMilkデコンパイルで解決だけど
まぁとりあえずBottleMilkデコンパイルしてみたらいいんじゃね
162 :
158 :2012/11/12(月) 00:05:04.33 ID:C+lQ/4Fi
>>157 FMLとForgeのソースを見比べて確認してみたけど、ItemBucketMilkのソースはForgeで変更されてるね
変更前のコードはこう
par3EntityPlayer.clearActivePotions();
変更後はこう
par3EntityPlayer.curePotionEffects(par1ItemStack);
なので、変更前の処理に戻すことでも目的は達成できそうな気がする
EntityLiving#clearActivePotions() の処理は変更されてなさそうだし、やってることは大体同じっぽい。
でもって、質問内容の PotionEffect#curativeItem リストに追加する方法だけど、
フィールドはプライベートになってるが、getterがあるので、それを利用しListを取得してaddすることが出来る
PotionEffect#getCurativeItems()
Forgeでの変更点を探すだけなら、patchを見てもいいけど、WinMargeとかを使ったほうが比較は楽ちんだから、
このあたりを比較するために、バニラ、FML、Forgeのコンパイル済みのソースを用意しておくと結構便利なのでオススメ
>>158 ありがとうございます!
>>156 に書いた方法で、currentScreenの変更を検知し、そのタイミングでflush出来ました。
チャット入力欄を出しただけで、変化しちゃうので、一部画面を除くような処理も入れてます。
今のところ、いいタイミングでflushできてます。
で、やっぱりcloseを書くところがないので、結局書かず・・・。
必ず呼ばれる保証はいらないけど、どこかにcloseが書けないとキモチワルイです・・・(笑)
気分の問題なので、closeなしのソースでもいいんですけどね〜。
とにかく、ありがとうございました^^
>>161 デコンパイルしたBottleMilkの中身をコピーして新しいアイテムを作ろうとしていたのです
バニラとForgeのBottleMilkが違うものとは思っていませんでした、アドバイスありがとうございます!
>>162 お答え本当にありがとうございます!
わざわざ変更点まで探していただいて恐縮です。
Forgeとバニラでソースが違う部分があるという認識がうっすらとしかなくて
考えにいたりませんでした。初心者過ぎて申し訳ないです…。
curativeItemへの追加方法もありがとうございました。
addCurativeItemsを試してみて出来なくてそこでつんでしまっていました。
Javaへの理解が足りないからですね。
教えていただいた方法で出来るようになりました。
本当にありがとうございます
二日くらい躓いていたので本当に嬉しいです。
バニラのソースを準備しておくという発想がなかったので早速やってきます!
ためになりました、ありがとうございました!
特定のブロックにentiry(今回の場合投げたアイテム)が触れたときの処理なのですが、 以下のようにしてもentity.entityIdからIDや名前が取得できるのはなぜなのでしょうか? 完全に消えるタイミングはまだ先なのでしょうか。 というのも3ブロックの中心にアイテムを落とした場合、3ブロックで同じ反応をして しまうため残り2つでは処理をさせないようにentityが存在していない状態にしたいのです。 といっても1つ目のonEntityCollidedWithBlockが終わってから2つめの処理が開始されないと 意味はないのですが。 public void onEntityCollidedWithBlock(World world, int i, int j, int k, Entity entity){ if(!world.isRemote){ entity.setDead(); world.removeEntity(entity); System.out.println("===="+entity.getEntityName()+"===== ID:"+entity.entityId); } }
entiryがMinecraftのワールド内に存在していることと JavaVM上に存在していることは別の話 setDeadしとけばisEntityAlive()がfalseを返す==存在していない状態 それで処理をスルーすればいい setDead,removeEntity後に名前が取得出来るのは気にしなくていい 気になるならガベージコレクションでgoogle
返信ありがとうございます。 setDeadなどで削除すれば内部変数もnullなどで書き換えられるのかと思っておりました。 アドバイス通りisEntityAlive()で判断することで最初の1ブロックだけに処理を実行させる事ができました。 ありがとうございました。
ネザーゲート関連なのだが 地上A地点にゲート開通→ネザー地点Bに開通 ネザー地点Bのゲートを壊し、お気に入りの場所にネザー地点Cのゲートを開通 以降地上A地点とネザー地点Cが繋がる、座標による仕様は一切受けない つまりネザーゲートワープしない人向け、任意で地点固定できるネザーゲート 欲を言えば、バニラのゲートと別物(共生可能)の物 可能なのですかね?
MOD本スレにも投下した質問なんだけど、あっちではこちらに書いたら?と言われたんで転載。 無視していいという結論になったんで緊急性は低いけど、原因がわからないのがちょっと。 Forge 版の開発でエラーが起こってmodが作れない。ModLoader版はなんの問題もなくリリース済み。 前に使っていたPCがクラッシュして、新しく環境作ったせい・・・? 【環境】 Windows7 Professional 64bit。CPUやらGPUはいらんよな。 Java は具体的にversion表示。ちなみに64bit版。 C:\D\User\Minecraft\1.4.4\mcp721>java -version java version "1.6.0_37" Java(TM) SE Runtime Environment (build 1.6.0_37-b06) Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode) 【最短で再現する手順】 1. mcp721.zip を mcp721 に解凍。 2. minecraftforge-src-6.3.0.372.zip を mcp721 に解凍。(mcp721\forge ができる) 3. mcp721\forge の install.cmd を実行。 自動で色々ダウンロードしたりパッチあたったりコンパイルされたり。 と、ここまでは問題なし。ソースもできてる。最短で再現させるためにソース修正は省略。 4. mcp721 の reobfuscate.bat を実行すると、エラー。 最初のクライアント側の処理は終了。サーバ側の作成でエラーになり失敗。 以下はエラーの詳細ログ(logs\server_ro.log)。
# If this log is to be used for incremental obfuscation / patch generation, # add any '.class', '.method', '.field' and '.attribute' restrictions here: #-DO-NOT-EDIT-BELOW-THIS-LINE------------------DO-NOT-EDIT-BELOW-THIS-LINE-- # # RetroGuard MCP v3.6.5 # # Logfile created on Sat Nov 17 22:53:43 JST 2012 # # Jar file to be obfuscated: server_recomp.jar # Target Jar file for obfuscated code: server_reobf.jar # RetroGuard Script file used: retroguard_ro.cfg # # Unrecoverable error during obfuscation: # Review input jar for duplicate classes (same classfile with two different filenames). # java.util.zip.ZipException: error in opening zip file # at java.util.zip.ZipFile.open(Native Method) # at java.util.zip.ZipFile.<init>(ZipFile.java:127) # at java.util.zip.ZipFile.<init>(ZipFile.java:143) # at COM.rl.obf.GuardDB.<init>(GuardDB.java:113) # at COM.rl.obf.RetroGuardImpl.run(RetroGuardImpl.java:172) # at COM.rl.obf.RetroGuardImpl.obfuscate(RetroGuardImpl.java:131) # at COM.rl.obf.RetroGuardImpl.obfuscate(RetroGuardImpl.java:113) # at RetroGuard.main(RetroGuard.java:90)
ちなみに、MOD本スレでも言われたんだけど。 jars の準備はしなくても Forge が自分でダウンロードしてくれるっぽいので手順には不要。
FML単体でも発生するからそっち側の問題の可能性ある ただ、クラスファイルは正しく出力されてるんじゃないかな 出力されたmodのクラスファイルを試してみよう
MOD作ろうと思ったらツールの部分のみチュートリアルないじゃねーか・・・
>>168 可能
>>169-172 server_recomp.jarが空になってるっぽいから
一度recompileしてからreobfuscateしてみたら?
>>173 ツールってつるはしとか?
forge等でのアイテム作成/登録が分かったら
後はバニラの既存ツールのソース見た方が早いと思う
ツルハシとかって「EnumHelperの利用」じゃないの?
176 :
名無しさんの野望 :2012/11/21(水) 00:45:34.16 ID:yQ60aRBs
littleMaidMob 1.4.4出してください^^
>>174-175 非常に助かった
ありがとう
もしよろしかったら独自のテクスチャ追加ってどこにプログラム入れればいいnあっっs
チラシ裏 1.4.2でインベントリを持ったEntityを作ろうと思い立って、1.2.5時代の製作物を移植した。 GUIを開けて、よしよし、と思ったのもつかの間、まるで機能しないポンコツGUIであることが判明。 すわコンテナかインベントリの不備か、とコード弄りに勤しむものの、一向に改善の兆しが見えない。 しばらく無意味なコードの出し入れを続けたが、デバッグ用コードの動作を見てどうもおかしいと気付く。 調査の結果、シングルのマルチ化の影響でPacketとかいう珍妙なブツも必要だとのこと。 そのやり取りにはbyteだのObjectだの、もっと根本的な知識が要求される様子。 これが噂の財政、もといマルチの壁ですか(´・ω:;.... ビット演算とか、僕の矮小な脳みそを抹殺する陰謀めいたものすら感じますね
インベントリのやり取りにパケットいらんかったような・・・ byteもビット演算も全く関係ないし もしかしてForge(FML)使って無いんかな? 超小物以外はFML無いと茨の道だと思うよ
>>174 recompileしても
== MCP 7.21 (data: 7.21, client: 1.4.4, server: 1.4.4) ==
# found ff, ff patches, srgs, name csvs, doc csvs, param csvs, renumber csv, ast
yle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
- Done in 6.80 seconds
== Recompiling server ==
> Cleaning bin
> Recompiling
Server side recompiling skipped, this is normal
- Done in 0.00 seconds
と出る。temp/server_recomp.jar を消してもダメ。
temp/cls と temp/bin の /minecraft_server 以下は生成されてる。
しかし bin に minecraft_server フォルダが作られない・・・むう。
サーバのソース更新してみないとダメなのか?
・・・まて、何故か src 以下に common と minecraft しか作られてない!
過去のフォルダ確認したら、1.3.2 (4.0.0.204) の時点まではあるが、
1.4.2 (6.0.1.341) の時点から作られてない・・・サーバ側modの提供サボってて気づかなかった。
mcp の decompile すると、src には mcp版のサーバソースができるけど、forge の install すると
src/common が生成されて src/minecraft_server は消えてしまう。
なんかサーバソース作成する手順って追加された?もしくは共通化でも完遂した?
630 のChangelogで、これからは minecraft_server.jar は参照するけどマージしねーよ
とか書いてあるんだがこれのことか?
誤) 630、正) 601
>Server side recompiling skipped, this is normal サーバーのリコンパイルがスキップされるのは正常って書いてあるけど
Installation/Universal
http://www.minecraftforge.net/wiki/Installation/Universal の Vanilla Server のトピックって Build 351 以降では、forge の jar を
minecraft_server.jar と同じフォルダに置いて java -jar で動かせ。
とある、これのことか。
Forge って ClassLoader いじくって、クラスの置き換え+αしてる感じのコード
だから、理にかなった方法だけど・・・
commonとかminecraft 以下の net/minecraft/src はサーバ側のソースとして
も使うということなのかなぁ。
やはり、ソースの扱いがイマイチわからねぇ。もうちょっとチュートリアル周り探すか。
184 :
名無しさんの野望 :2012/11/24(土) 19:31:57.87 ID:xa+KJdnU
アイテムを大量作成するときに、素材をいちいち加工枠に移動させるのがめんどいから 手持ちの素材を一括で全部目的のアイテムに加工してくれるMODつくりたいんだけどどうすりゃいいんだ とっかかりがつかめなくて、どこをどう手をつければいいのかわからん
設計ができてりゃなやむことはない ・どうやって目的のアイテムを選択するか ・目的のアイテムが2種類以上のレシピを持っていた場合どうするか ・指定個数作りたい場合どうするか ・GUIを使うのか、使うならGUI設計はどうするか とっかかりを見つけてないのにつかめるはずが無い お前の発言からは加工枠に移動させずに一括作成するという点だけしかできてない これは要件定義、設計をしろ設計を
186 :
名無しさんの野望 :2012/11/24(土) 20:18:32.16 ID:xa+KJdnU
>>185 ああ書き方が悪かったかもしれん、すまん
たとえば加工枠に木材いれて棒にするとき
完成枠の棒をshift+左クリックで、加工枠分の棒が一括作成される機能はすでにあるじゃん
それをたとえばtab+左クリックとかで棒をクリックすると手持ちのすべての木材が作成できる分だけ
全部棒にクラフトされる、という「ボタンの機能」をつくりたい
指定個数作ることはなくできる分だけ全部作成する
んでデコンパイルしてsrc内のjavaファイルをみているんだけど
どのファイルをいじっていけばいいかわからない状態なんだ
悪いことは言わん 時間を無駄にするだけ やめとけ
188 :
名無しさんの野望 :2012/11/24(土) 20:44:15.18 ID:xa+KJdnU
そっか、ありがとう せめてこういう機能を作りたいときはどこをどう変更してつくっていくのかを大まかにでも知りたい 差し支えなければ教えてほしい
>>179 思いつきの個人用小物modを、やる気とアイデアがあるうちに急いでメモ帳でシコシコ、というのが基本スタイルなので、
Forgeの仕様や規則を勉強するだけでやる気の山が過ぎてしまうのでは、と思うとなかなか踏み切れないチラシ裏。
なーに、壁じゃなくて茨ならきっと大丈夫さ
GUI動きました\(^o^)/ありがとー
それを判断できるか出来ないかが、Mod作成できるか出来ないかの境い目だと思う あとはそのあたりを面白いと思えるかどうか 中高生でもMod作ったりしてるわけだし、やってやれないことはないとおもうぜ 参考になる他のModはいっぱいあるわけだしな
>>183 cpwのおかげでBuild 315からはインストール時にminecraft_server.jarをいじる必要が無くなったよって意味だと思う
>>191 クラス上書きしないから、Forgeのjarの中に(クライアント版retroguard変換名になってる)
クラスをうまいこと(サーバ版rg名に)クラス名を翻訳してロードしてくれるのかな・・・?
※ つまり、クライアント/サーバでクラスが共通。
という意味だったんだけど
確かにどう読んでも >183 はそんな意図は一向に伝わっらない文章だな。
すまねぇ。
クライアントとサーバでコンパイルしなおすのってretroguardでクラス名が変わってしまう事が
その理由って解釈で、それを翻訳できればソースを分ける理由はなくなるはず。
ならばサーバ版ソースコードが無くても納得はできる。
Forgeにはバイトコード操作ツール入ってるから不可能とは言い切れないけど、かなり無茶
な方式だから実現可能なのかどうか・・・
315以降(MC1.4.2以降)にサーバmodを作った人は居ないか?
recompileしてstartserver.batで起動してみればいいのでは
1.3以降難読化テーブルがクライアントとサーバーで統一されたんじゃなかったっけ?
え、マジ? と、client.srg と server.srg を比べてみたら、マジだった。
中まで確認せず、サイズ違うしとか思ってた。 ・・・律儀に別製作してたよorz
925 名前:名無しさんの野望[sage] 投稿日:2012/12/05(水) 20:45:21.13 ID:a9Y2eB46 [1/2]
【クラフトドクター】
様々な病気(状態異常)がランダム(特定のトリガーで発生も有る)で起こる
例えばポーションの弱体化のような症状
薬をクラフトして、病気の豚さんなど助けよう(経験値が報酬)
エンドコンテンツはCTスキャナー
様々な病気を一瞬で的確に治療法を教えてくれる、通常は試行錯誤して治療する
作って・・・ってかまさか有る?
これとか、
>>168 俺的に興味あり、誰か作って下さい
>>198 お前がどっか逝け、ってかここ来るなw
PCゲーム板で作成のみスレは板違い?ソフトウェア板行き?
もし197がプログラムに疎い金持ちとかだったらどうすんの?
197「お礼にカンパしますよ。」とか・・・ありえないかw
単芝はお帰り下さい
スルーというものもある レスをつける価値がある内容かをもう一度考えてからレスしよう
1.4.5でModLoader前提でmob追加しようとしてるけれど MMM氏が苦戦してる理由がわかるわ… 特にバニラにない機能をもたせようとすると サーバークライアント間の役割分担、データの同期で難易度がマゾい かといって、Forgeに乗り換えるのも 今までの知識があまり使えなさそうで躊躇してしまう…
土台さえわかれば言うほど難しいことはないし、ドキュメント類も用意されてる、 ちゃんと作ってあげれば、簡単にマルチにも対応も出来るってのもでかい Forgeも使えば、既存書き換えでしか出来なかったことがいっぱい出来るようになったり、他のModとのコラボもやりやすくなる ModLoaderは作者がMinecraft離れ気味で今後いつ切れてもおかしくない状況だし、 Mod作成する上での制限も多くて不具合あっても放置されることのほうが多いから 今後もMod作成とかバージョンアップ行う予定でいるなら、 食わず嫌いするより早いとこFML環境に以降して慣れたほうがMod作成は捗るぞ
質問させてください。 二個セットで使用する新しいブロックを追加するMODを作りたいと考えています。 そのブロックは、相対するブロックに向かってガイドラインを描写します。(要はコンパス) 悩んでいるのは2点。 1.ペアをどうやって指定すると便利か。置き順か、クリックで指定か、等。 2.ペアの座標をどうやって保持・保存するか。 まだぼんやりとしたものしか考えられてないので、なんでもいいのでヒントください。
設置したらstackTagCompoundに座標埋め込んだブロックをドロップすればいいじゃない
1. TileEntityに相手方座標を記憶するフィールドを用意する 2. dimension, x, y, z をカプセル化する適当なクラスを用意する(仮にWorldCoordとする) 3. 右クリック時にクライアント側の適当なクラスのWorldCoord型staticフィールドを チェック、nullならクリックしたブロックの座標をWorldCoordに格納してセット。 nullでなかったら2つの座標値をサーバに送ったあとnullをセット。 4. サーバ側で2つの座標値から正当性チェック エラーがなければ両方のTileEntityに相手方の座標をセット 5. 2つのタイルを更新(getDescriptionPacket()は定義しておく) こんなとこじゃない?手になにか持ってるかとかShift押してるかとかの判定は3で出来る。
ML儲はグダグダしてねーでさっさとForgeに移行しろ
Forge厨お疲れ様です!! っていう不毛な議論がお望みか? 俺ァ、嫌だね。
じゃあ今はどうやってんだろと見てみたらmcpに含まれてるみたいだね MD5もそれと同じだった
. . .... ..: : :: :: ::: :::::: :::::::::::: : ::::::::::::::::::::::::::::::::::::::::::::: Λ_Λ . . . .: : : ::: : :: ::::::::: ::::::::::::::::::::::::::::: /:彡ミ゛ヽ;)ー、 . . .: : : :::::: ::::::::::::::::::::::::::::::::: / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . ::::::::::::::::::::::::::::::::::::::: / :::/;;: ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::  ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄
ツルハシとかで掘ったものを自動精錬させることってModLaderだけで出来る? 鉄鉱石掘ったら鉄のIngotになるような
一括破壊系と同じアプローチで行けるだろうよ
>>213 言い方が悪かった
新規アイテムを追加してそのアイテムで
鉱石(粘土)とかを掘った時に鉱石インゴット(レンガ)に直接変えたいんだけど
その一括破壊系ってやつと同じ処理でできるのかな
新規アイテムを追加するタイプのそれと同じ感じだな Item.onBlockDestroyedで対象のアイテムをドロップしてブロックを空に置換すれば行けると思うよ ソース読んだだけだから間違ってるかもしれないけど
onBlockPlacedBy中でブロックを置くときにターゲットしていたブロックの情報を 取得する方法ってなにかないでしょうか? (ターゲットしていた面の値を知りたい) Minecraft mc = ModLoader.getMinecraftInstance(); double d = (double)mc.playerController.getBlockReachDistance(); int side = mc.renderViewEntity.rayTrace(d, 1.0F).sideHit; これでいけそうな気がしたのですが、同じ面でもタゲっている位置で値が変わってしまい どうもうまくいかないようでして。 なにかもっと単純に取得する方法はないでしょうか?
>>217 Item.onItemUseをオーバーライドするぐらいしか無さそう
# ItemBlock.placeBlockAtでも行けるかな
1.4.6のFMLでパッケージ名が大変なことになってるんだがどういう事だおい・・・
net.minecraft.item.Itemとかマジで言ってんのか
置換してくれるツールは無いっぽい?(fml.pyのgen_renamed_confで近いことはやってるみたいだ)
bukkitとの統合とか考えてのことなんだろうか?
まず原木がBlockLogだというのを忘れていてBlockWoodをみていました。 BlockWoodに書いていないのでどうやってmeta値を求めているのだろうと悩んでいました・・・ 非公式wikiの技術共有Blockメソッドも見ていたのですが、MC44版と古いのも 目に入っていませんでした。 結果 BlockLogをみたらMC1.4.5ではfunc_85104_aを使って自分でブロックを置いたときの 処理を行っており、そこに側面値も引数でうけとっていたので解決しました。 ついでに1.3.2では BlockPistonBase.determineOrientation(par1World, par2, par3, par4, (EntityPlayer)par5EntityLiving); こんな方法で取得していたのですね。
ああぁ 補足ってわけでもないですが1.3.2のはどっちの方角から実行したかって情報ですね。
221 :
名無しさんの野望 :2012/12/19(水) 16:49:41.36 ID:7j1dEyzB
MCP723 / Forge436(Recommend) ・MCPをC:\minecraftに解凍 ・ForgeをC:\minecraft/forgeに解凍 ・forge/install.cmdを叩いてインストールした ・recompile.batでエラーは出ない ・Eclipseのワークスペースをminecraft/eclipseにした 以上やったところ、 src/common配下のソースが全く見えない?状態になってて(src/minecraftの下は見える) import cpw.mods.fml.common.Side; とかのインポートや参照が全滅してしまった。 しばらく前のバージョン(394)では上記手順で問題なく認識できてたんだけど、 何かEclipseの設定を変更しないといけないとかがありますでしょうか?
>ソースが全く見えない?状態 ファイルがあるんならEclipseでリフレッシュしたら
223 :
名無しさんの野望 :2012/12/19(水) 19:12:18.50 ID:7j1dEyzB
>>222 もちろんリフレッシュとクリーンもやってみたけどだめでした。
1.4.5のForge安定版って436でいいんですかね?
原因がよくわからないし1.4.6が出るまで待つかな…
eclipse上から見える/見えないとか、リフレッシュしたかとかじゃなくて、 直接エクスプローラなどでソースがあるかを確認してみたのかな? ソースがあるなら、プロジェクトの設定でソースフォルダのあたりを見直したり再設定したりしてみよう mcp の eclipse/ 以下にあるプロジェクト設定に問題があるのか、それ以外に問題があるのかをまず切り分けよう プロジェクトはそこにあるものを使わなくても、1から自分で作成できるしな
ベッドで寝て WorldTime が飛んだ瞬間を、ベッド側から知る方法はありませんか? Block に毎 tick 呼び出されるメソッドがあれば簡単なのですが、無さそうなのでどうしようかなと。
Block#setBedOccupiedをオーバーライドしてみるとか occupiedがtrueで就寝、falseで起床 BlockBedにもsetBedOccupiedがあるけどこれはstaticなので オーバーライドには無関係 WorldServer#tick -> WorldServer#wakeAllPlayers -> EntityPlayer#wakeUpPlayer -> Block#setBedOccupied
>>226 Block#setBedOccupied か…… 1.2.5 には無いみたいだ。
けどヒントにはなったよ。Block#setBedOccupied の代わりに、Block#onNeighborBlockChange で待ち構えてみる。
どうもありがとうございました。
ふと思ったんだが、minecraft.jarをロードする時点で難読化を解除するMODとかあれば、 もっと開発が楽になったりするのだろうか。
プレイヤーの採掘速度を変えようと思ってEntityClientPlayerMP周りを弄ったけど、 なんだかサーバーに弾かれてるっぽくて、ブロックを破壊しても忽然と復活する・・・ こういうのはパケットを送ったりすればいいのか、それとも問答無用で弾かれるのかな
もしかして:保護領域
採掘早すぎるとサーバーと同期できなくなるから復活するっていうマルチ化の弊害じゃなかったっけ?
あれを意図的に起こしてるわけか
アイテム持ちながらスニーク+右クリックで蔵側のBlock.onBlockActivatedが起きなくなってやがる・・・ 何でPlayerControllerMP.onPlayerRightClickでスニーク判断してるんだよonBlockActivatedの中でいいだろ畜生
>>228 そうなれば、レシピ追加modをもっと発展させた、
いわばmodツクールみたいな都合のいいソフトができるのかなぁ
プレイヤーを変容させるMOD、たとえばプレイヤーがアイアンゴーレムやクモ になったりするそういうのの作り方がわからぬ。 どうすればいいんだ
>>235 そういうMODをデコンパイルしてみるんだ
>>236 そういうMODのソースコードを見るって事か
ありがとう
>>233 俺もそれではまった
スニーク状態でGUI切り分けしてたせいで対応くそ面倒かった
Forge445で環境作ろうとforge内のinstall.cmd実行してDL/デコンパイルは終わったんだけど そのままrecomplie実行するとサーバソースがありませんってエラーが出た decompile実行するとこれまたエラー == Decompiling server using fernflower == > Creating SRGs > Applying Retroguard '"D:\dev\Java\jdk1.6.0_32\bin\java" -cp "runtime\bin\retroguard.jar;lib;lib\*;ja rs\minecraft_server.j...' failed : 1 == ERRORS FOUND == Unrecoverable error during obfuscation, see log file for details. RetroGuard error: COM.rl.obf.classfile.ClassFileException: ClassNotFound pl ================== Decompile failed 何度か最初からやり直しても変わらないけどどうすりゃいいんだろ
!! Can not find server sources, try decompiling !! と出ていたので失敗してると思っていたのだけどclassファイルはちゃんと生成されてました。 自作MODを1.4.5用に修正してコンパイルしサーバに入れてみたけど動いているので問題なさそうです お騒がせしました
1.2.5でstay1.2.5潰さないように村人追加するのって難しい? メイドさん村も欲しいがキモい村人の村も作りたくなった
とりあえずやってみれば難しいかどうかは判断つくと思うよ 難しいと思うかは人による
全く何も知識ない状態 コピペで簡単なのならなんとかなると聞いてダメ元で質問してる このレベルだと厳しいかね?
>>244 Javaに触れたことも無かったがコピペやらデコンパイルやら繰り返してたら直感で覚えてしまったぞ
執念さえあればどうにかなるぜ
プログラミングはパズルだからな
作成ではなく修正ですが質問させてください
通称、水影MOD(GLSLとSEUS v10 with water shader)に水影用修正テクスチャ
を使うと色々表示されないブロックがあったのでsoartexFanVerのseus対応版
を使ったのですが、こっちは水に対応してないらしく水面にニンジン葉が出ます
http://minus-k.com/nejitsu/loader/up212151.png 水影用テクスチャと見比べるとニンジンと競合する場所があるので
http://minus-k.com/nejitsu/loader/up212210.png SEUSシェーダーのzipにあるfinal.fshの水面処理関連(520行目あたりから)の
どっかのtexture2Dの引数をいじればいけるかなと考えています。
マではありますが、shader初挑戦なのでgoogle先生に聞きながらやってます
//REFRACTION のコメントのあたりが臭いのですが、まだうまくいきません
どなたかシェーダーに強い人お助けを
そのソースやテクスチャ関連を弄ったことがないので、あんまり足しになることは言えんけど テクスチャ座標は、一つのint値の8bitを使って16x16のテクスチャ位置の座標情報を持たせてあったはず なので、そのあたりを処理してるとこを見つけ出せば修正は容易な気がするよ ビット演算については割愛するけど、 int x = (textureCoord & 15) << 4; int z = textureCoord & 240; こんな感じで分解してやることが出来る たとえば、247の画像の赤枠左上のテクスチャであれば、左から10、上から12番目の座標が必要になるので x座標=160 (16px ×10)、z座標=192 (16px ×12)になるので、 xのほうを4ビット右シフトし、x = 160 = 1010 0000 → 0000 1010 (=10) 10 + 192 = 202 が赤枠左上のテクスチャの位置情報になる。こんな感じ 勘のいい人は気づくかもしれないけど 左から10(= 1010) 、上から12 (=1100)、160(=1010 0000)、192(=1100 0000)、202(=1100 1010) あとは、そのあたりの数値を処理してる場所を探せば置き換える値も見つかるんじゃないかな
あー、座標は 16x16 テクスチャの話ね つっても、もっと高解像度のテクスチャの場合であれ、 この座標にテクスチャの大きさにあわせた倍率をかける感じで座標出してると思うけど
的外れだったらゴメンネ
>>248-250 うおwテクスチャサイズ(64)掛けちゃダメだったのか
ありがとう、やってみます。
質問なんですが mobのモデルをプレイヤーモデルにする方法がわからないのです。 例えば、「ModelMagmaCube.java」のファイルを「ModelPlayer.java」 として使うには「ModelMagmaCube.java」のどこのソースを いじればいいのでしょうか? 詳しい方お願いします。
202(0xCA)のテクスチャ番号を呼び出してる場所が見つからないので
色々なとこのtexture2Dの第2引数に1個ずらして確かめるつもりで
+ vec2(0.0f,1.0f)入れてみたけど、水面のニンジンが消えない・・
http://minus-k.com/nejitsu/loader/up212306.png ぶちきれてニンジン潰したった
今のところシェーディングの知識が足りなさすぎるんで
修正すべき箇所を見つけられないけど、チェストが半透明になってたので
透過処理の対象となるテクスチャ番号(?)の情報がかなり古いVer
を元にしている気がする(チェストでも悪戦苦闘中)
>>252 コンストラクタとrenderとその他必要な部分をいじるといいよ
>>254 その他必要な部分というとどんなところでしょうか?
また、MODにより追加されたMobのモデルにするときも
同じ方法でできますでしょうか?
良かったらご回答お願いします。
>>253 使っている SEUS のバージョンが分からないけど、ここでは v10 RC2 with water shader と仮定する
人参が映らない v10 RC5 の各ファイルと比較すると、どうやら問題点は
gbuffers_textured_lit.fsh の以下の部分
float texblock = 0.0625f;
if (tex.r > 0.99 && tex.b > 0.99 && tex.g < 0.1f) {
transx -= texblock * 3.0f;
iswater = 1.0f;
} else {
iswater = 0.0f;
}
gl_FragData[0] = texture2D(texture, texcoord.st + vec2(transx, transy)) * zero * color;
ここが見つかれば直すのは簡単だろう
>>248 3Dグラフィックでのテクスチャ座標はテクスチャの大きさに関わらず0.0〜1.0。
ちなみに、0.0625 = 1/16
テクスチャ座標 texcoord.stの指すところがマゼンタで塗りつぶされてると transx が -3/16 になるから、左に3ブロックずらして gl_FragData[0] にテクスチャをセットする…おお、これっぽい! サンタさんありがとう!
>>258 ちなみにRC5の方では↓の様ににテクスチャ使わない方式に変わってる
if (tex.r > 0.99 && tex.b > 0.99 && tex.g < 0.1f) {
tex = vec4(0.5f, 0.9f, 0.9f, 0.2f);
iswater = 1.0f;
}else {
iswater = 0.0f;
}
gl_FragData[0] = tex * color;
@SideOnly(Side.CLIENT) ってのが出てきたんだがこれは何だろう?
>>261 クライアントでしかそのメソッドを実行しないって指示
263 :
名無しさんの野望 :2012/12/26(水) 22:04:02.23 ID:ajaimQ1Y
>>262 つまりクライアント側で独立してるってこと?
独立してるっていうか一種の契約みたいなもんじゃね 実際、MODがロードされる時にその指定に合わないメソッドは削除されるので 間違って呼び出されるとNoSuchMethodException(Errorだっけ?)で落ちる
265 :
名無しさんの野望 :2012/12/26(水) 22:23:07.94 ID:ajaimQ1Y
266 :
名無しさんの野望 :2012/12/28(金) 14:47:00.07 ID:CBwmt45a
1.4.6環境に移行と思って、1.2.5時時代に作った今真っ赤かのソースと奮闘中なんだけど、 xxxx.item.stackSize(EntityItem)とxxxx.item.itemID(EntityItem)が EntityItemからItemがいなくなってて使えないんだけど、みんなはどう対応した?
>>266 ちょっと読んできた
Forge環境の情報だがfunc_92014_d()でItemStackが返ってくる模様
268 :
名無しさんの野望 :2012/12/28(金) 15:45:50.42 ID:CBwmt45a
>>267 ナイトきた!これでかつる!
func_92014_d()で、確認したら動きました!
ありがとうございます!
269 :
名無しさんの野望 :2012/12/29(土) 23:49:19.79 ID:N6OZEZmQ
Forge471がインストールできなくてぐぬぬ エラー: C:\forge\mcp\lib\asm-all-4.0-source.jarの読込みエラーです。error in opening zip file エラー: C:\forge\mcp\lib\guava-12.0.1-sources.jarの読込みエラーです。error in opening zip file っていわれた。 フォーラムでも報告あるみたいだけど、Forgeの鯖が落ちてるのと関係あり? 今Recommended落とすと471なんだけどどれがお勧めなんでしょ?
asmもguavaもForgeがつくったライブラリじゃないし、探せば入手は出来る つっても、sourceはなくても動作はするから無視できそうな気もするが 過去の環境があるならそっちから持ってきてもいい
startclient.batやstartserver.batで 他のMODを入れて起動したい場合はどうすればいい? mcp/jars/mods/に普通に入れると起動中にフリーズしちゃう 仕方ないので毎回reobfuscate.batでclass化して プレイ環境の方に入れてるんだが恐ろしく手間がかかる
>>271 デコンパイルの時にjarに放り込めばいいよ
Forgeの場合は無理だが
tes
ちょっと質問です。 MineCraftのModの場合、何か描画をしようと思ったらテクスチャをいじるのが基本に見えたのですが 自由に線や円を描画したり、文字を表示したりすることは難しいのでしょうか? 例えば、自プレイヤーの目の前に、線や円の図形を描画したり、画面ウィンドウの下端に独自の文字を表示したり ということを、ModLoaderやForgeを使ってやってみたいと考えています。
>>274 MMMさんのACHUD(だっけ?)ってmodがまさにそんな感じだから、MLで十分できるとおもう。
どうやってるかは知らない。
テクスチャ変更は張るテクスチャを変えてるだけで、描画とは違う また、FMLやRMLはMODを読み込むためのModLoaderで、 Forgeはマイクラのソフトウェア的な拡張。つまりまず役割がちがう これらは描き出す処理を行うためのフックポイントの提供などをしてくれるけど、直接描画する機能はない 自由に描画をやりたいならMinecraftが3Dとかに使用してるLWJGL、OpenGLを勉強しよう つか、そういうことしてるMODは沢山あるんだから、そのソースとか見てみるといいよ
>>275-276 ふむふむ、なるほど、ありがとうございます。
実現しているmodは色々あるのですね。
OpenGLは分かっているつもりでしたが、mod wikiでAPIを見ても描画フックの仕方が
よくわからずにいたので、質問させて頂きました。
ちょっと、どのmodが実現しているが分からないのですが、まずは、jp-wikiのmodの
ソースを見てみようと思います。
ありがとうございました。
>>277 >テクスチャをいじるのが基本に見えた
>OpenGLは分かっているつもりでしたが
まず結論としては、OpenGLを使って画面に描画しようと思えば、
フックとか関係なく、どのタイミングででもどんな形ででも描画できる。
なので厳しい言い方になるけど、「分かっている」と言っていいほど分かっている人の台詞ではない。
ModdingWikiを見るのもいいけど、そのレベルではまずは本体ソースを見て、
どこでどんな処理をしているのか、説明できるようになっていくのを目指すのが良い。
そうすればどこから描画処理が始まって、どんな書き方で描画命令を書いているのかがわかる。
マイクラ自体が描画の始め終わりや透過、カメラ位置の指定などをかなり外側のメインループ寄りでやっているので
上手く描画されない時の原因を特定するのはわかっていてもかなりややこしい作業になる。
しかも、それに関しては作る物の性質で千差万別にやり方が変わるので、
チュートリアルを見て云々、みたいな話も期待しないほうが良い。
(いっそModdingではなく、ゲームプログラミングのためのOpenGLを使った3D描画のチュートリアル、みたいなのを見るのは良いと思う)
なので、現状でMODのソースを見て描画を挟む処理部分だけ見ても、
根本的な理屈がわからないと自分のやりたい事の実現に持っていくのは難しいと思う。
描画フックって言葉から察するに、DirectXのイメージなのかな。 あっちはAPIがいろいろ用意されてて、Hook使って割り込みさせるから。 Gui系のソースとRender系のソースが何やっていて、 どのタイミングでコールされているかソースから読み取れれば、 あとは描画処理ベースの話だと思うよ。
質問と答えがかみ合ってないような気がするが
Forgeのフックの用法が分からないというケースもある 既存クラスの書き換えは出来るだけ避けたいものだ
〜って難しい?できる?系の質問ってよくあるけど、どういう回答が期待されてるんだろうね
>>282 エスパーかスーパーハカーの出来るって解答を期待してるんだろう
やり取りができる対面の会話なら普通の質問だし 単に2chに慣れてないだけじゃないの
>>284 対面の会話ですら最低限の情報は相手に話すぞ
>>282 の言ってる質問にはそれが無いんだよ
うんごめんフォローしたみたいになっちゃったけど質問不備は同意 対面なら細かいやり取りで意図が分かってくるけど 2chじゃそれができない(or歓迎されない)って想像力が足りないんだろうな、と思う
287 :
278 :2013/01/05(土) 14:50:38.02 ID:OlC/KpCh
質問の不備や是非の話になっちゃってるけど、
内容自体はちゃんと具体的だと思うよ。
その上で、実際の描画のやり方以前、かなり初歩の段階で見当違いな事を言っているので
もっと手前の段階から理解していかないと駄目だよ、と言いたかった。
>>282 こういう聞き方って要は「こうすれば出来るよ」っていう回答待ちなんじゃね。
ただ大抵の場合はそのニ、三歩前の段階を理解できてないケースが多いと思う。
その手の質問する人向けの正しい解答は、「きっとあなたには無理ですね」だと思う 分かる人はその手の質問をまずしないから
環境1.2.5 + ModLoader での質問です。 防具のテクスチャの置き場所について教えて下さい。 ClassPath の /armor/* に自作防具の png ファイルを置いています。 MCP にて開始した場合は png ファイルが読み込まれ、正常に描画されます。 ただし実環境に持ち込むと、テクスチャが正常に読み込まれていないようです。 (エラー落ちなども発生しないが、setupTexture が標準出力に流れてこない) 実環境では mod.zip 内の /armor/* にテクスチャを配置していますが、場所か環境が異なるのでしょうか。 比較のために fragileArmor-1_2_5-1 も試してみましたが、こちらもテクスチャが読み込まれません。
自己解決。PlayerFormLittleMaid を実環境から消したら表示されるようになりました。 これが介入していたみたいです……失礼いたしました。
テスト環境で豆腐ハウス作ってたら爆発して焦った。 よくよく思い出したら爆発処理の変更テストのために感圧板いじってた
かなしみ
なんで繋がらなくなったんだろうな
フォーラムの運営費用だけでも数十万いってるらしいし 負荷分散も必要なのかもなぁ
oh月曜からmoddingをはじめたばかりなのに・・ 運営も大変ですなぁ
復活してるね ありがとう管理者様
やったー思いの外はやかったね 鯖管おつおつ
300 :
名無しさんの野望 :2013/01/12(土) 04:32:08.48 ID:rQiKel/z
13w02aってforge勢にとって致命的な変更な気が…
どのあたりが?
302 :
名無しさんの野望 :2013/01/12(土) 11:39:57.58 ID:rQiKel/z
Textures for blocks and items now have individual image files (read more below) (テクスチャを、大きな画像ファイルからブロックごとの画像を切り出す方法からブロックごとの画像を単独のファイルとして保持する方法に変更した。詳しくは後述)
ML勢の歓喜の雄たけび
まあ、単に画像を管理する(人間の)側からすれば後者の方が色々と楽だろう。 一部だけ差し替えたり、別々のパックから組み合わせたり、 テクスチャをMODに対応させるのだってしやすくなるんじゃないかな。 問題は、SpriteIDとかTerrainIDとかは大丈夫なのってことぐらいで。
mojang自身が各種IDを使いきりそうって状態で、このままの仕組みのままAPI導入とかただの嫌がらせですわ
>>308 スプライトのこと気にせず使えるよ!やったね!ってことだろ多分
311 :
名無しさんの野望 :2013/01/13(日) 17:41:41.12 ID:LkrPxy9d
リスポーン時にアイテムばらまかないmodない?
>>311 チートコマンドのkeepInventory使えばいいと思うよ
313 :
名無しさんの野望 :2013/01/13(日) 17:52:10.34 ID:LkrPxy9d
315 :
名無しさんの野望 :2013/01/14(月) 18:22:50.47 ID:DzGHcxKX
軽量化MOD(1.4.7対応)ない?
Minecraft 1.4.7
minecraftforge-src-1.4.7-6.6.0.497
eclipse
という環境でMOD作成しています。
作成したMODをeclipseから起動すると正常に起動できるのですが、
実際にmodsフォルダにいれて起動するとエラーがでます。
cpw.mods.fml.common.LoaderException: java.lang.ClassNotFoundException: net.minecraft.src.sample.spritesample.client.ClientProxy
と、エラーが出ているので作成したClientProxy.classが正常に読み込まれていないということまではわかりました。
生成されたclassファイルを確認しましたが、sample/spritesample/client/ClientProxy.classに入っていました。
ソースの内容は、以下のサイト(Minecraft Modding Wiki)
ttp://minecraftjp.info/ →Tutorial一覧
→MinecraftForgeUniversal #183〜#430
→SpriteID無限化(独自のterrain.png, gui/items.pngの利用)
に記載されてあるものを参考にしました。
MinecraftForgeUniversal #445〜のバージョンから、パッケージに変更が入ったようなのでそのあたりもチェックしました。
赤く表示されている部分もなく、eclipseからは正常に起動&MODも機能しています。
ソースを保存したあとはrecompile.bat→reobfuscate.batの順番でclassファイルにしています。
Proxyを使用しているのはスプライト無限化のためですが、
もしかしてProxyシステムを使わなくても(例)samplefood.javaにオーバーライドでsample.pngを参照するだけでもいいのでしょうか?
連投申し訳ありません。 最後の2文ですが、プロキシ関連をソースから削除してオーバーライドで参照しただけのMODを作りました。 プロキシ関連を削除したことによって本体にMODをいれても起動&MODも機能しました。 スプライト無限化のほうは、IDCheckerという残りのスプライトIDを確認できるMODを導入したうえで、 プロキシ関連を削除した自作MODの導入前と導入後で残りのスプライドID数を確認したら減っていませんでした。 なので、オーバーライドだけで十分だったようです。 プロキシがうまく動いてくれていなかったのが気になりますが、現状はこれでいってみようかと思います。
reobfuscateはnet.minecraft.srcを一番上まで持ってくんだよ ForgeのMODはもうほとんど(全部?)がnet.minecraft.srcは使わないようになってるよ net.minecraft.srcに置くのは目当てのソースがどこにあるかぱっと見分からないしね RML時代の悪しき習慣とも言える
Minecraft→src→net.minecraft.srcパッケージの中にファイル作るのは古いやり方っぽかったから
Minecraft→srcの中に
>>317 で言うところのsample.spritesampleパッケージ作って
そこにClientProxy.javaとか全部入れる感じの方向でやってる
アイテムでメタ値毎にテクスチャを変えたいんだけど ブロックで言うgetBlockTextureFromSideAndMetadataみたいな事って出来るのかな? 出来るなら教えていただきたい 環境 1.4.6 RModLoader
ヒント:染料
>>322 あってるかは分からんけど染料でテクスチャ指定してそうなのが
getIconFromDamage
っぽいんでこれで色々やってみる
おかげさまでメタ値毎にテクスチャを買えることが出来た ありがとう!
325 :
名無しさんの野望 :2013/01/22(火) 15:39:48.15 ID:OgrSAoQ3
満月の夜になると主人公めがけて団体で一斉にワラワラとおそってくるMODとか欲しい ブロックもガツガツ壊してくる 満月は寝れない たまにボスが居てそいつ倒すと通常に戻るとかっていいな〜
ここはいつからリクエストスレになったんだ?
eclipseの中にJDK入ってるらしいけどやっぱりマイクラ用に別にJDKインストールしなきゃいけないのかな?
自分はJDK入れてからEclipse入れるって手順でやったから分からんな もしEclipseだけ入れれば済むか試すなら、うまくいったら儲けもの、 動かなかったらあとでJDK入れてEclipseからそれ使うように設定する、 って感じの手順になるんじゃね
Eclipseの中のJDKはMCPからは見えないよ まあパス通せばいいんだけどね
>>330 さんの言うとおりパス指定で行けました。
特に問題も今のところ無いので、JDK入れるのめんどくせぇって人はお試しを
マルチなどでクライアントに表示されたメッセージを取得するのにはどうすればいいのでしょうか
バニラのブロックが破壊された時に一緒にこっちで追加したアイテムも出したいんですけど EventのHarvestCheckがそれっぽいのでこれ使ったらいいんでしょうか… バニラの地層をいじらずに確率で追加の鉱石をドロップするイベントみたいのを一応つくろうと思ってるんですけど
なんかやってみたらHarvestCheckって ブロックが採掘できない時に呼ばれるだけでそういう時に使うものじゃないっぽい…?
>>332 自己解決しました
BaseModのserverChatをオーバーライドすればよかったのか
336 :
334 :2013/01/30(水) 22:41:44.16 ID:0uaeD0/i
mineAllのソース見ると結構複雑なことやってるみたいなんで諦めて既存書き換えの方向で行きます…
何か都合のいいフックとかイベントがないとなると、最終的にはStoneChanceが着地点になりそうだな
StoneChance調べたら丸石のクラス入れ替えてるmod…? そういうやりかたもあるのか…
☓丸石 ○石
340 :
名無しさんの野望 :2013/02/05(火) 01:35:17.38 ID:mF5VJOXQ
MOD作成は全くの素人なんですけど 月面MODというのを作りたくなって ・重力変更 ・地形変更(石だらけの世界) ・時間を夜に固定 ・「真空」の概念の追加(空気残量のコードの流用) これらの変更は可能でしょうか? 技術的にできそうなら今からminecraftの勉強するつもりなのですが……
MODに不可能はない
個々にだが、どの要素も実装してるMODは見かけた事があるので 無理ってことはないだろう 複合できる技術があるかは別だが、期待してるぞ
てか宇宙MODってあったよな?
Forge鯖です。
ちょっと聞きたいが
サーバーとクライアントでconfigの内容が違ったらどうなるの?
MCPじゃ試せないからだれか教えてください。
>>340 全部可能ってか似たようなMODあるしな
>>343 俺も宇宙MODと呼べるものがあるのは知ってるけど
余計な情報なしに
>>340 が考えて作る月面MODが見たい
>>344 んなもん作りによるとしか
蔵側でconfigによって動作変えてるんなら問題起こるだろう
MCPじゃ試せないってどういうことだ
蔵起動してconfig変えて鯖起動じゃいかんのか?
>>346 その発想は無かった
ちょっと試してくる
ありがd
1.4.7 + ModLoader + シングルプレイ環境での質問です。 サーバ側の処理として EntityLiving#setPositionAndRotation → World#spawnEntityInWorld を行ったのですが rotationYaw の値がうまくグラフィックに反映されず。 調べてみるとクライアントとサーバで rotationYaw の値が同期とれていなかったのですが、 これを同期するにはどうすればいいですか?
MOD作ったことないけど、手動でaddEntityToTrackerするか spawnEntityInWorldの前にaddSpawnしておくかすると 自動でパケットをクライアントに飛ばしてくれるようになるかも
MCPがMinecraft Coder PackからMod Coder Packに名前変わってた
352 :
349 :2013/02/19(火) 00:17:20.14 ID:UPjtUx2v
>>350 ありがとう。お手数おかけしてすみません。
だけど spawnEntityInWorld の中で addEntityToTracker されているみたいだったし、
Packet24MobSpawn も Packet30Entity も飛んでいたから、ちょっと事情が違ってたみたいでした。
いろいろ調べてみると、同期されていないと思っていた rotationYaw の値は正しく同期されているようでした。
Packet24MobSpawn が ×256÷360 されていたので同期されていないと思ってました。勘違い。
モブ側の挙動がおかしかったようで、そちら側を修正することにします。失礼しました。
乙乙 原因分かってよかったよかった
TileEntityの挙動がおかしい、なぜだ ・・・と、同期しないといけないってことを忘れて悩んでしまった マルチ化してからisRemoteかどうかを確かめるコードが手放せないから困る
質問なんですが EnderStorageってMODが上手く入りません 前提MODも入れる場所も間違ってないはずなんですが・・・ 入れ方教えてもらえますか?
質問させてください。1.4.7環境ModLoader使用です。 「ピッケルで壊しやすいブロック」などを追加したいときは、各アイテムのblocksEffectiveAgainstを書き換えるのが正攻法ですか? それとも他にオーソドックスな方法があったりしますか?
>>358 ツルハシ以外で叩くと何もドロップしないけど
ブロックのmaterialをrockにするとか?
他の他のツールでも取得出来る様にするなら分からん・・・
ブロックのmaterialを自分で作れるならそっちを使うとか出来そうだけど
360 :
359 :2013/02/27(水) 01:37:53.22 ID:S32T4HZ1
ごめ、破壊速度だからmaterial自分で作っても意味ないや 石みたいに適切なツールじゃないとドロップしないようにするとかだ
IC2のAPIにElectricItemクラスがあるけど、 同じようにElectricBlockクラスのようなものはありませんか? ElectricBlock.charge(x,y,z,amount,tier,…) みたいに使いたい
RML で出来ていたことが FML で出来なくなると、ちょっとヘコむな。 FML 対応やめようかなぁ……
その肝心の内容を書かなきゃ問題の周知にも解決にもならないんだぜ
RMLでできることはほとんどForgeのFMLが吸収してくれるから、 やりたいことはForge対応じゃなくてUniversal対応じゃないの?
何のこと言ってるかわからないから一応書いておくけど \forge147\mcp\src\minecraft\net\minecraft\src にModloader用のソースをつっこむ ほとんどエラーだからこの時点でコードは触らない。 RMLと違ってForgeはパッケージ分けされてるから、 パッケージを読み込む、見つからないパッケージの型を 読み込んでいくeclipseだと簡単なんだけどね。 それが終わると残るのは数箇所のエラーで済むと思うけど。 ModLoder.getInterface()とかModLoder.addRecipe()みたいのは、 FMLが勝手に認識してくれるからそこは直さなくていいともう。 Universal(マルチでも使えるように)対応するなら、 話はもっと複雑だけどFML対応ならこれでいけるぞ
じゃあ、内容を書いてみます。RML 1.4.7 と FML4.7.4.520 の差異で気付いたところ。 【その1】 BaseMod を継承した抽象クラスと、そのクラスを継承して作った MOD 本体を別々の zip に分けていると、 RML では問題なくロード出来るが、FML では MOD が BaseMod を継承していないと判定される。 →MOD の構造を変更することで対応 【その2】 ModLoader#setPrivateValue について、RML では final フィールドに対しても使えるが、 FML では対応していないので IllegalAccessException がスローされる。 →RML の相当の setPrivateValue を自前で持つことに。 【その3】 ItemSpade#blocksEffectiveAgainst が setPrivateValue で書き換えられる(RML) のと 書き換えられない(FML) という差がある。 →未解決。final が外したことまでは確認できているが、その後なのに 「IllegalAccessException: Can not set static final」 と怒られる 【結論】 FML は RML のノリで扱うと痛い目を見る。
>>366 MinecraftForge.setBlockHarvestLevelで代用できないかな?
ツールの方の設定変えたいならこっちかも setToolClass
やりたいことは結局のところ setBlockHarvestLevel なんです。 ただ、RML にて自前でやっていた処理が Forge 自体と競合するのなら、 もはや対応不可能としてMODのサポート外にしてしまって良いかなと思ってます。 「自前でやるけど Forge があるならそれを使う」 みたいな処理の山になるのは嫌なので。 代用を探していると本当に気が滅入ってきます。
>>369 そうだね〜逆にForgeはパッケージ化した分、セッタとゲッタ色々用意したからそれ使ってね〜ってスタンスで、
ModLoaderはsetPrivateValueとgetPrivateValueあるからそれ使ってねってスタンスだしね
逆にForgeパッケージ分け、src.*に全部ぶかえれば、 final見れるかもしれないけどめんどくさすぎるね
>>369 連投で済まないけど、そこの変数privateか、publicに書き直して、
コンパイル通してさ、ItemSpadeのclassもreobfにできちゃうけどそれは捨てて、
マインクラフトの実機環境に載せてみたらどうなるかな?
うまくいけばスコープできるかもしれない。
RMLとFMLの違いっていうより作者のスタンスが問題の根本原因じゃないかな。 リフレクションのユーティリティをAPI機能だと考える事がまず間違ってる。 プライベートフィールドは、クラス機能として、値が書き換えられることを一切考慮されてない部分。 その値を変更するのは、既存書き換えをやるのと根本的には同じ事。 RMLが機能提供してて簡単に出来てしまうので、そのあたりの感覚がマヒしてたり無い人もいるだろうけど、 極力リフレクションで値書き換えるような実装を、リリースする対象で「やるべきでない」と思うよ。 得にfinalで修飾されているような、クラス内からの変更すら考えられてない部分は、 他の環境に影響を与える可能性がより高くなる部分なので、 RMLのノリっていうか、そういうノリでMOD作る作者は既存書き換えたほうがいいんじゃないかな。 MOD利用者や、他のMOD製作者のためにも、BTWみたいに割り切った対応をして欲しい。 じゃないと、競合による問題が発生した場合に、他のMOD作者に迷惑をかけることにも成りかねない。
もちろんリフレクション使うなって話ではないよ。そのあたりはケースバイケース。 ただ、どういうケースで使えるかってとこの判断が曖昧なら、一律使わないか既存書き換えれって話ね。 あと、FMLのissueでセキュリティ関連の話とかも出てるから、 今後リフレクションに対する制限が増える可能性もあるかもだね。 あと、その3の問題は、情報足りてないからどういう環境で発生させたエラーかは分からんけれど、 実行時にItemSpade#blocksEffectiveAgainstがstatic finalな事が原因だから 開発環境上じゃなくて実際のプレイ環境上での話しなのかな? そうだと仮定すると、開発用じゃないほうでfinalを外す書き換えが漏れているとかだと思う。 (もしくはforgeだとfinalに変更されてるのかな?) ちょっと逸れるけど、エラーの根本原因は、static final フィールドへの不正なアクセス(書き込み)。 なのでパッケージとかアクセス指定子とかはあんまり関係ない。 static final は変更がない事が明示されてるコードで、コンパイル時点でコンパイラ様の手で インラインな値に置換される場合があり、ランタイムでの変更が不可能になってる可能性があるための制約だと思う。 もしForgeじゃなくFMLで起きてるなら互換性のバグだろうし、PR送ればマージはされそうだけど、 誰もそんな使い方してないから発見されず放置されてんじゃね。
何が言いたいかというと、RMLで出来ることは提供されてるAPIだけで、 RML上で無理やり対応してることはRMLで出来ることではない、ってこと。 RMLとかForge/FMLとか、ほかに問題があることじゃない。 自分でお行儀の悪い実装をするのなら、他のMODと競合しても仕方がないことだと思って割り切っちまおう。 でも、FMLのruntime de-obfuscateきたら、RMLベースの開発環境は本気で終わりそうだし、 今後もMOD開発するつもりの人は、はやいとこForge/FML環境に乗り換えたほうがよさそう。 再コンパイル再難読化しただけのバージョンアップ対応みたいなのも要らなくなるだろうし。
根本的に、他人のプログラムを既存コード触らず(再設計無しに)外部から改造するって作業だから
可能な手段が黒魔術的な方法しか残らないこともあるのは(むやみに忌避しても)仕方ないんじゃね
(競合が問題なら、「MLの恩恵に与るならMLのカバー内容で協調しろ」的な方向性よりも
競合情報の提供を求めて公開する方向でやる方が、建設的でより多くにとって幸せだろうし)
例のそれは自分とこのforgeだとpublic static final Block[]だったよ
static finalなフィールドはリフレクションじゃ書き換え不可能らしいから
forge界隈でよく聞く常套手段の
>>372 がうまくいくといいけど
連投スマソ。
>>375 で1点訂正
FMLのバグじゃなくForgeでの変更によるものみたい。
なので、RMLとFMLの互換性問題ではなさそう。
つまり、リフレクション使ってForgeと競合する実装を行っていた事が原因。
// こういった問題が起きやすいから、リフレクションは極力使わないほうがいいと思う
取れる対策は、Forgeにある機能をRMLでも再現するために、処理を分けて両対応のMODを目指すか、
ForgeかRMLのどちらかの環境での動作サポートを切るかの2択じゃね。
その下二行で話が終わると、せっかく詳細書いてくれたのに
>>362 で終わってる話になっちゃうな
>>377 黒魔術的な方法である事を理解して貰うのは大変だし、それなら使わないことを進める方が楽だからなー。
リフレクションのデメリットを教えたりするのは、突き詰めたらSecurityManagerだとか
もっと深い話まで発展しかねない部分だから、こんな場所でやるのは無理だし、
そういうのって各自が必要に応じて勉強すべき部分だと思う。
だから、privateなフィールドにアクセスできる便利な方法、って認識で使わないほうがいいよって感じ。
このあたりの情報って、ぐぐったら setAccesible(true) を説明なしに使ってたりするから、けっこう危ういのよね。
理解不足で多用しちゃうと、きちんと作られたアプリケーションに出くわしたときに調査できずに死に兼ねない。
ちなみにFMLだとそこにはfinalがついてなかった。
forgeは代替となる手段を用意してるから、変更は認めないようにする制約を追加してる、って感じなんだと思う。
>>379 そだね。
>>362 の「RMLで出来ていたこと」って表現には語弊があるけど、
自分のレスは、情報をちょっと足して無駄に長文にしただけで、結論はそこで出てると思う。
それ以外の対策方法(アンチパターンとなるような逃げ道)は、自分が理解出来てる範囲では見当たらない部分。
黒魔術どころかなんかもっとやばいの召喚する儀式でよければ、
クラスローダーのっとってロード時に値を差し替え…みたいな手あるけど、
(操作したい対象がprivateだし参照だから散らばってることは無いだろうし多分可能)
さすがにアホすぎるしなww
なんどもすまそ。意味不明だから訂正 > それ以外の対策方法(アンチパターンとなるような逃げ道)は、 > 自分が理解出来てる範囲では見当たらない部分。 それ以外の対策方法(アンチパターンとなるような逃げ道)は、 自分が理解出来てる範囲では見当たらななかったす。
急にスレのレベルが上がった
クラスローダー関連はForgeさんがcoremodとして大まじめに枠組み提供してる部分じゃね まあそれを採用するとしても結局Forge用別MOD作ることになるわけか
>>384 別MODにする必要はなくね。
同じMODのコードで動かせることを目的とした場合の手段としてあげたネタ話。
まぁそもそもFMLRelauncherは拡張を考慮して無いし(そんなことする必要ないし)、
色々面倒すぎて、同じコードで動かせることのためにやるような事じゃないw
あとすごく重箱の隅だけど、coremodはFMLの機能だからForgeは何も提供してないぜ。
Forgeが提供してるのは、複数のMODがやりたがるような事を、競合なくできる仕組みだけ。
386 :
362 :2013/03/03(日) 18:14:08.48 ID:9PmyYpAX
確かに「RML ではできていたこと」って表現は微妙でしたね。 リフレクションを自前でやるか、FML がやってくれるかという差でしたし。 ちなみに final を無かったことにして値を書き換えるのは RML でも FML でもやってますね。どちらも黒魔術の領域。 しかも Forge だとさらにアクロバティックに、com.sun.reflect を直接リフレクションで叩いてますし…… 『Forge よ、お前は sun の jvm でしか動かない子なのか』 とか思ってしまいます。 まあ、一番謎なのは、競合の有無とかは置いておいて、 なぜ public static final Block[] を Forge 環境下で書き換えられないか、だったりしますが。
え、エラーメッセージに答え出てるのに理解できてないの?
388 :
362 :2013/03/03(日) 19:46:59.99 ID:9PmyYpAX
>>387 でてた?
通常リフレクションでは final フィールドの値を書き換えることができないから、
Field 自体をリフレクション使って final を 『外して』 書き換えられるようにする。
これが RML の setPrivateValue の挙動。
それと同じ実装を自前で用意して、Forge 環境下でも動作するようにしたい。
だけど、同じ処理でも RML でやると上手くいくが、Forge では上手くいかない。
どちらの環境でも最初は final 付いているが、処理の途中で final が外れたのは確認できる。
しかし RML では上手くいき、Forge では IllegalAccessException で弾かれるのはなぜか?
という話でした。
ぼくはよくりふれくしょんでぷらいべーとふぁいなるってついているめんばーをかきかえたり いかにもきょうごうしそうなぶぶんにてをだしてすりるをたのしんだりします doNFobVlさんにばれたらまほうでてんぷらにされますか? ぼくはぷろぐらまーではないのでてんぷらにしてもおいしくないとおもいます
>>386 小姑的だけど、そういうのとは少しちがうかな。
APIの機能として提供されている(サポート範囲)なのか、提供されて無いのかの違い。
リフレクションはRMLの機能ではないから、RMLで出来ていたっていう表現だと
RMLがそういった機能を提供していて、Forgeでその互換性がなくなったように
読み取れるような書き方してあるので、語弊があるかなって思っての指摘。
実際は、RMLで出来ないことを、既存クラス書き換えて実現してたら、
Forgeと書き換えクラスが競合してエラー出た、ってな感じの状況。
なので、上で書いたことに繋げると、そういう影響範囲を把握できて無い部分を
無理やりリフレクションで弄るくらいなら、競合したことがすぐにわかるように、
既存書き換えたほうがいいよ、って意見を書いた感じ。
リフレクションので参照くらいは問題ないけど、JVMとか環境に依存した動作がある可能性高い部分なので、
値の変更みたいなのは、影響範囲が限定されてるか、動作を保障できる範囲じゃない限りやらないに越した事は無い。
> 『Forge よ、お前は sun の jvm でしか動かない子なのか』 とか思ってしまいます。
Forgeは提供している機能に動的なEnum操作をする必要があるから、
言語仕様上JVM依存の処理を使う部分があるのはしょうがないんじゃないかな。
むしろ、どんなJVMにも通じるような手段を持ってるなら、是非修正してPR送るべきだと思う。
つーか俺も知りたい。
ってかいきなりForgeのここがダメだ、みたいな感じの話題を振るのは別の目的があるの?
もし、共感得たいとか宗教戦争がしたいとかなら、blogとかでやろうな。
doNFobVlって何かの単語かと思ったがIDかwww
>>386 ,388
ああ、言ってる意味はわかった。
ってかRMLのこれはちょっとまずいんじゃないかなw
さすがにjavaのクラスをリフレクションで値変更するのはまずい実装だと思うわw
ただ、JVMがmodifiersだけを見て制限を変更してるかは、JVMの実装に依存するからなんともだな。
そんなんできたらセキュリティの制御が出来なくなってザルJVMになってしまいそうだし、
もう少し制限がされてるような気がするよ。
あと、先にも書いてるけど、static final がついてると展開される可能性があるから、
そういう意味でも実行時に値を書き換える、リフレクションの対象にするのは難しいと思う。
ついでに言うと、finalついてても、アクセス制限だけ弄れば
インスタンス変数は変更はできるから、RMLのmodifiersフラグ周りの処理自体無駄な気がする。
ここ時々ハイレベルになるな 勉強になるわ
ID:doNFobVlがMLはオワコンだと思っていて(
>>376 )、Forgeを否定するのはML教の信者だと思っている(
>>390 )
ってことがよくわかる有意義な時間だったね
>>392 で嘘書いてたので訂正
finalがついている場合に変更できるのは、Fieldインスタンスがコピーしてきた値だけで、
クラスインスタンスのフィールドの値は変更できていないようだった。
Fieldクラスのmodifiersを書き換えても結果は同じ。
テスト環境のJREは java version "1.7.0_15"
Java(TM) SE Runtime Environment (build 1.7.0_15-b03)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
同JVMの6update41でも結果は同じ。
つまり、finalつけてるフィールドの値は普通にリフレクション使っても変更できない。
なのでRMLのmodifires弄ってる処理は得に意味はないみたいだね。
RML使ってないけど、後学のために > しかし RML では上手くいき、Forge では IllegalAccessException で弾かれるのはなぜか? このへんの具体的な理由は自分も知っておきたいところ
ID:OKJ2xc80 これがML信者か
>>397 話しについていけないのが悔しくてくだらない事しか言えないだけのバカだろ。
>>396 理由は
>>377 のとおり。
Forgeだと blocksEffectiveAgainst が static final なので変更できない。
RMLやFML環境、バニラではそこは final がついてないから、アクセス拒否されることないし、書き換えも可能。
ただ、いま試しなおしてみたら、ちょっと面白い動作してることに気付いた。
Java7だとstatic finalなFieldへのsetで不正アクセスの例外は発生してない。
どちらにしても、finalついてるクラスメンバーやインスタンスフィールドの値は変わってないんだけど。
>>399 > RMLやFML環境、バニラではそこは final がついてないから、アクセス拒否されることないし、書き換えも可能。
おおなるほど(FMLも含むのか)ようやく話が分かったわ、ありがとう
FMLってForgeと一体化したんじゃなかったっけと思ってたけど
Forgeと別個のFML環境もちゃんと用意されてたのね
よくForgeのフォルダ見たらfmlはfmlでmcpフォルダと似た構成になってるのに今気づいたわ
>>399 貼れるかな? 実験コード。final 付いていても書き換え可能だった。こちらの環境は……
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
import java.lang.reflect.*;
public class Test {
public static void main(String[] args) throws Exception {
System.out.println(new Foo());
for(Field f: Foo.class.getDeclaredFields()) {
if ((f.getModifiers() & 16) != 0) {
Field fm = Field.class.getDeclaredField("modifiers");
fm.setAccessible(true);
fm.setInt(f, f.getModifiers() & -17);
}
f.setAccessible(true);
f.set(null, new Object());
}
System.out.println(new Foo());
}
}
class Foo {
public static Object value01 = new Object();
public static final Object value02 = new Object();
private static Object value03 = new Object();
private static final Object value04 = new Object();
public String toString() {
return value01 + " / " + value02 + " / " + value03 + " / " + value04;
}
}
>>401 を受けて再テスト
結果が異なったのは、フィールドの型の違いが原因だった。
Stringだと書き換えが出来ないが、Objectを拡張したクラスで試したところ書き換えができた。
プリミティブ型(int)で試した場合は、Stringと同じ結果となった。
Oject型でのテストは、Java6だとstatic final の書き換えで失敗し、Java7だと書き換えに成功した。
いずれのテストでも、Field#modifiers の値の変更による結果の違いはなかった。
Object型であるStringで期待通りの結果が得られないのは、コンパイラかJVMかわからんが、
Stringを特別に扱っていることによる影響だと考えれそう。
試しては無いけど他の不変の型(Integerとか)も同じように制限されてそう。
と、さすがにmodとは関係ない話題になってきたので、これくらいにしておきます。失礼しました。
コンストラクタで与えたEntity側のfloatの変数の値に応じてRendererでの描画処理を変更したいんだけどどうすればいいの? Entity側は与えた値になってるのにdoRenderの中から参照すると0になってるんだけど・・・
writeEntityToNBTとreadEntityToNBTでNBTとして同期するデータを設定してやるとか?
406 :
名無しさんの野望 :2013/03/04(月) 22:41:05.77 ID:3RefWp4w
finalは「定数」じゃなくて「一度代入したら変更できない変数」
この「変更できない」ってのは一番外側にかかるので、
final int a=1;
a=2;
はIllegalAccessExceptionで死ぬ。
setAccessible(true)したら、例外は発生しないが値は変更されない。
final Hoge hoge=new Hoge();
hoge.a=1;
は問題なく変更される。
なので
>>402 前半の結果は当然。
Stringとかラッパークラスとかは知らね。
「一番外側」って・・・
>>406 参照とかそういう基本的な部分については分かるだろうって細かくは書いてないけど、そういうことじゃないよ。
結果は書いてるとおり。
昨日書いたコード一式うpるので、気になるようだったら自分で試しておくれ。
ttp://www1.axfc.net/uploader/so/2817310.zip パスはmod
プロジェクトのJREまちがって7のままでうpっちゃってるけど、ライブラリをJRE6に変えてあげれば、
準拠レベルも6になるから、テストの起動構成で実行用のJREを6にしても動くとおもう。
あと、TargetClassの"Object"の部分を別の型に全置換して、BEFOREとAFTERの値を型に合わせて書き換えたら別の型でも試せると思う。
そういや昨日Integerみたいな不変の型も同じかもって書いてたけど、Integerで試した場合は書き換え出来た。
Stringとプリミティブ型のみが特別な扱いされてるみたい。
もっかいまとめると、たぶんこんな感じ。
finalがついたフィールド値は、Java7なら、「プリミティブ型」もしくは「String型」以外の型のフィールドであれば、変更が可能。
つーわけで長々とすまんかった。
>>404 405も書いてるけど、クライアント側のみでEntityに値を設定しているとかでなければ、
サーバーとクライアントのEntityの値の同期が取れていない可能性が高いんじゃないかな。
シングルの場合でもサーバーとクライアントはインスタンス的には別のEntityを持ってるから、
サーバーで値を更新したのなら、同期取ってあげないといけないよ。
RenderにわたってくるEntityはクライアント側がもっているEntityインスタンスで、サーバーのものではない。
>>402 static finalのプリミティブ型やString型を参照してる部分を、
コンパイラがリテラル値に置き換えてるんじゃねーの?
mob制作で躓いた。メソッド解説がマジで欲しいぜ・・・
各種解説ページを手掛かりにソースコードあっちこっち追いかけてると だんだんぼんやりと全体の動作が脳に刷り込まれてきた感じがする
IC2のブロンズ装備が入ったチェストを砂漠の寺院で見つけたのですが、バニラで自然生成されるチェストに、自前のアイテムを放り込むには何処を弄ったらいいのでしょうか。 RML環境でそれらしい物を探したのですが、見つけられませんでした。
RMLにはないよ 既存クラス書き換えになる
Entity の NBTTagCompound をサーバとクライアントで同期するパケットってありませんでしたっけ? TileEntity 用の Packet132TileEntityData はすぐに見つかりましたが、こんな感じの。
エンティティの同期周りは自分も調べてるところなんだけどさっぱりだなあ
DataWatcherとか使うんじゃなかったっけ Entityは触ったこと無いので間違ってたらゴメーンネ
418 :
413 :2013/03/10(日) 23:38:11.63 ID:oJI37fi8
>>414 ご回答ありがとうございます。
Forgeに移植することにしました。
で移植してaddDungeonLootと言うそれらしきものを見つけたのですが、非推奨でした。それでDungeonHooksの代替クラス、ChestGenHooksを覗いてみたのですが、どのメソッドを使えばいいのかわかりません。
419 :
413 :2013/03/10(日) 23:42:05.67 ID:oJI37fi8
途中で送信押してしまった。。連投すみません
>>414 ご回答ありがとうございます。
Forgeに移植することにしました。
で移植してaddDungeonLootと言うそれらしきものを見つけたのですが、非推奨でした。
それでDungeonHooksの代替クラス、ChestGenHooksを覗いてみたのですが、どのメソッドを使えばいいのかわかりません。
どういった方法でチェストにアイテムを入れるべきなのか教えていただけないでしょうか?
@Instanceってmodidまんまじゃないと動かないんだな エラーメッセージでググっても全然動かなくて数時間悩んだわ
421 :
413 :2013/03/11(月) 23:43:39.02 ID:PlphXas5
自己解決しました。
Techne起動しねぇ 参ったこりゃ
423 :
名無しさんの野望 :2013/03/16(土) 15:45:36.33 ID:bmo7Vy8l
ぐぬぬ…moddingWikiが落ちてやがる…
OptifineやPlayerAPIみたいなソース無しjar投入系のMODやAPIを 今時(MC1.5)のForge開発環境に導入するのってどうやるんだろう install.shしてできたmcp/jars/bin/minecraft.jarにRenderPlayerAPI入れてcleanup.sh→decompile.shして > Unrecoverable error during obfuscation, see log file for details. > RetroGuard error: COM.rl.obf.classfile.ClassFileException: ClassNotFound qp と言われて失敗するところまでは試したけど、たしかmoddingWikiにもその辺の情報は無かったよね
425 :
359 :2013/03/17(日) 00:59:28.42 ID:Mm7BXOsG
>>424 ぱっと思いついたのが、他の環境でデコンパイルしてソースをForge環境に移動……
でもあれか、Forge環境とForge無し環境じゃ色々変わっちゃうんだっけ
名前つけて曖昧な答えとか恥ずかしい><
配布場所に書いてあるとおり。まずMCPによるデコンパイルと難読化解除を行う その後にForgeの同じソースとマージを行えばOK バニラのソース、Forgeのソース、APIのソースの3つを用意して WinMargeとかで3ファイル比較しつつ変更点確認しながらマージしていくのが確実だと思うよ 最近の開発環境事情からすると、めんどくさい仕組みのままだから、改善して欲しいところだな
あ、PlayerAPIの話な、Optiは見てない
429 :
名無しさんの野望 :2013/03/17(日) 11:48:16.89 ID:ip47v4AZ
テクスチャの切り分けツールってありませんか?
>>306 はテクスチャパック用だし、
>>307 さんのは2列以上あるとなんか画像が崩れる
>>427 forgeでないmcpにゲームフォルダから持ってきたバニラのjar(とnativeフォルダの中身)入れて
minecraft.jarにRenderPlayerAPI入れたら、デコンパイルまではできたよ! ありがとう
マージはマージ用ソフト使っても心折れたけど、RenderPlayerAPIがforge対応してるのをあてにして
APIのファイルをForge環境に上書きすることにして、今はEclipseに従ってエラー表示を消す作業してる
ModLoader1.5で ModLoadergetUniqueSpriteIndex()とか ModLoader.addOverride()がなくなってるんだけど、 それらに変わる処理ってなにか追加されてるのかな? どなたか知っていましたら教えてください。
>>430 おー、さんくす
インストールがめんどいがちょっとやってくる
434 :
名無しさんの野望 :2013/03/17(日) 13:04:52.07 ID:GD62px9W
>>432 それらに替わる処理は公式で追加されてるから
公式コードを参照して作ればいける
>>434 ありがとうございます。
なるほど、公式処理も結構かわってるのですね。
いろいろ参照してみます。
436 :
307 :2013/03/17(日) 14:25:07.91 ID:gPy9NV4o
>>429 透過のことをさっぱり考えてなかったのだぜ
修正してみた
上の人とは別の者ですが tex = par1IconRegister.func_94245_a("modname:top"); /mods/modname/textures/blocks/top.png 以上のようにForgeはテクスチャのパスにフォルダ指定できるけど、Modloaderは いまの所パスを追加することはできないですよね? たとえばModloaderで以下のようにしたいけど、func_94245_aにはパスを含ませると 画像を読み込んでくれないようです。 サラっとしか見てないけど文字列を内部ではファイルとして格納している部分がありそう なので単純にパスを作るだけのメソッドではなさそうで。 tex = par1IconRegister.func_94245_a("aaa/top"); /textures/blocks/aaa/top.png ファイルしか指定できないから他のmodとかぶらないようにするにはファイル名を ユニークな物にしないといけないのだけど、できるならフォルダで区別させたい所。
438 :
名無しさんの野望 :2013/03/18(月) 08:27:09.82 ID:7XzDNXbp
単純にこんなのを作ることが可能かっていう質問なんだが ・プレイヤーでスキル制を導入する。 例えば、鍛冶のスキルとか、きこりのスキルとか農業のスキルとか。 そのスキルのレベルを上げないと上位?の事が出来ないみたいな。 ・NPCになれるMOD? プレイヤーがいて、他のNPCがいるとする。 んで、指定したNPCの視点になって、そのMOBつうかキャラ?に設定された環境でプレイできる。 こんな感じの奴。単純にこんなかんじのを作ってみたいなぁって思ったんだが、可能?
439 :
名無しさんの野望 :2013/03/18(月) 08:51:36.27 ID:IJTIsQlq
>>438 できそうとは言えるが本当に可能かは作ってみないとわからない
つまり可能か聞く前につくってみなさい
440 :
名無しさんの野望 :2013/03/18(月) 13:12:28.65 ID:7XzDNXbp
>>439 わかった
プログラミング一回もやったことないから勉強してから挑戦してみるわ
custom lan port modっていうのをつかってUgocraftがマルチ化してるのを見て これつかえばメイドさんマルチでいけるんじゃね('A`)!?とか思い立っていろいろしてるけどいまいち使い方がわからん・・・。 UDPポート公開とかもできてるはずなんだが・・ どなたか知恵をかしてください!
>>441 スレ違いですよ。MODスレか質問スレ行きましょう。
>>442 スレタイ確認したら間違えてました・・・申し訳ない('A`)
板汚し失礼しました
Forgeのイベント系のチュートリアル載っているページないかな? LivingAttackEventでダメージ軽減とかやりたいんだけど、 全然使い方がわからない 参考までに環境は#518です。
>>444 reginn666氏のwikiにさわりだけ載ってる
後は似たような作り方で全部いける・・・はず
>>445 ありがとう〜
詳しく解説してあって助かりました!
ダメージ値で設置しているブロックのテクスチャが変わるMODを作っているんですが ブロックがアイテムとして扱われてるいるときは問題なく16以上も違うテクスチャで表示されていています。 ブロックを設置したときに0〜15までは問題ないのですが、16以上は15をマイナスしたブロック表示になってしまいます。 16なら0、17なら1という感じです。回避策はとかないですか?
>>447 メタデータが16以降ないのは仕様です。
TileEntity使えば1ブロックでも行けるけど何気に面倒
Blockのmetadataが0〜15までしかないからね ブロック設置時にTileEntityに書き込むくらいしかないんじゃね で描画はTileEntitySpecialRendererを使う
ボートなどのEntityを操作する方法はどうすればいいのでしょうか? ソースを見ているとDataWatcherクラスのaddObjectメソッドあたりが怪しいとおもったんですが・・・。
>>448 >>449 ううー、16までなんですね。
素早いご回答、ありがとうございます。
TileEntityは使ったことないですが勉強してみます。
>>450 どういう操作かはわからないけど、DataWatcherは
単にサーバーとデータを同期させてるだけなので、あんまり関係ないかも?
>>452 "w"キーを押すと前進
"s"キーを押すと後進
他のキーで・・・といった具合なんですが
DataWatcherクラスってそうやって使われるんですね
>>453 ボートの処理はボートによって特殊な移動処理をしているのではなく
riddenByEntityの情報に合わせてボートの位置情報を取得して、
ボートを描画してるだけっぽいですね
>>454 なるほど
そういうことなんですねありがとうございます
やっぱり他の人のソースを参考にするしかないですかねぇ
forge使ってエクリプスで⒈5用のアイテムとブロック追加チュートリアルやってるんですが自作テクスチャ何処に置けばいいんでしょうか? modsフォルダがいっぱいあってわかりません
457 :
456 :2013/03/20(水) 11:29:36.11 ID:8UKL+z11
すいません。自己解決しました。 ドライブ:\forge\mcp\src\minecraft\mods\【ドメイン名?】\textures又はblocks\ の中に入れたら出て来ました。jarフォルダとか片っ端から突っ込んでた・・・・ もっとエラーメッセージ見ればよかった・・・(;´Д`)
すんません間違えた・・・(´・ω・`) ドライブ:\forge\mcp\src\minecraft\mods\【ドメイン名?】\textures\items又はblocks\ もういい。休め。今日は休め俺!orz
Texture・MOD総合スレから誘導されてきました 他の方の質問に比べて稚拙かと存じますが、質問させて下さい 以下、元スレと同内容 2週間ぐらい前に非公式フォーラムで質問したけど流れてしまったのでこちらで質問させて下さい Flan's MODで銃器を自作しようとしているのですが、どうにもやり方が理解できず困っています 解説している所も幾つかあったのですが、どれも3Dモデルなどの解説で、肝心の銃の自作方法は見つかりませんでした。 銃のコンテンツパックの自作方法についてご存知の方がいらっしゃいましたら、ざっくりで構いませんので ご教授頂ければ幸いです
>>459 ご教授とまではいかず、教示ですまないけど、向こうで答えてしまった。
あれで何か問題有ったら/解決した場合はこっちでよろしく
次問題が有るときは使ったツール全部書いてくれると解決もさらに早くなったかと思う
>>458 の置き方すると、
startclient.batから起動したときはいいんだけど、Eclipseのデバッグから起動したら
FileNotFoundExceptionにならない?
パッケージ名が"mods.user.hogehoge"だとしたら
テクスチャファイル置くところは"mcp/src/minecraft/mods/user/hogehoge/textures/blocks/filename.png"
func_94332_aに指定するのは"user/hogehoge:filename"でいいんだよな?
Eclipseの方は、Eclipseフォルダ内にコンパイルされた未難読化クラスを実行してた気がするから そちらに配置する必要があるんじゃないかな
Eclipseってsrcに置いたら勝手にコピーしてくれたような
464 :
456 :2013/03/20(水) 13:29:51.30 ID:8UKL+z11
>>464 一番簡単に画像を表示させるには、
頭にmodsつけたパッケージを作るのが早いと思う。
package mods.sample; みたいに。
そうしたら、指定して
@Override
@SideOnly(Side.CLIENT)
public void func_94581_a(IconRegister par1IconRegister){
this.iconIndex = par1IconRegister.func_94245_a("sample:item");
}
んで、画像はここにおけば、Eclipseが勝手に引っ張ってデバッグでも表示してくれる
mcp/src/minecraft/mods/sample/textures/items/item.png
ドメイン名指定でファイル設定できるのForgeだけだから気をつけてね
>>461 画像置く場所とパッケージって本当はどうでもよくて、
パッケージがaaa.bbb.cccだとしても、
this.iconIndex = par1IconRegister.func_94245_a("sample:item");で指定したら、
mcp/src/minecraft/mods/sample/textures/items/item.pngに画像置いたら表示される。
"/mods"と"/textures/items"の画像表示用のパスが固定なだけで、
ドメイン名は固定されてない場所の設定パスって考えればいいかも?
実際zip化するときは、
/aaa/bbb/ccc/main.class
/mods/sample/textures/items/item.png
って感じかな。
でもなんか気持ち悪いから、
mods.aaa.bbb.cccってパッケージ作って
this.iconIndex = par1IconRegister.func_94245_a("aaa/bbb/ccc:item");で指定したら、
mcp/src/minecraft/mods/aaa/bbb/ccc/textures/items/item.pngに画像置いたら表示される。
実際zip化するときは、
/mods/aaa/bbb/ccc/main.class
/mods/aaa/bbb/ccc/textures/items/item.png
の方が気持ちいい感じがするってだけ・・・
468 :
456 :2013/03/21(木) 20:20:13.57 ID:MhIgzeVD
みなさんありがとう。とりあえずjava初心者なんで難しい事はわかんないですが 教えてもらったパッケージ作ってとりあえずそっちからテクスチャ読み込みで動かしてみます。 Forgeの公式チュートリアルで軒並み赤線が出て困るwwww orz
151でまたパス指定変わってるみたいだね 150をコピーしてメソッド変更だけでは読み込んでくれなかった
470 :
469 :2013/03/21(木) 23:14:59.96 ID:9C/w1XsE
ぐあっthe勘違い ファイル置く場所1段ずれてた 所でForgeの独自レンダーのrenderWorldBlockが実行されないのだけど、同じ人いないです?
描画結果はある程度キャッシュされるっぽいよ 周りにブロック置くとかするともう一度呼ばれる
472 :
469 :2013/03/22(金) 00:18:28.84 ID:Pfey147R
ソース追ってみたらRenderBlocks.javaのrenderTypeのdefault:がfalseを返して終了してた。 150では以下のようになってた。 default: return FMLRenderAccessLibrary.renderWorldBlock(this, blockAccess, par2, par3, par4, par1Block, l); Forgeならすぐ更新されるかな
数万ブロック程度のブロックデータを保存しておきたいんですが、セーブ機構で良い案ありませんか? NBTに全データ入れるか、それともどこかにファイルを作っちゃうか、とか……
>>473 それだけじゃ物によるとしか言えないような
ただコピーして貼りつけたいだけならNBTでもいいと思うけど
建築データとして配布したいならファイルを作るかな
質問です ボートのように乗ることができるentityに乗った時 entityの向きと自分の向きを同期するにはどうすればいいでしょうか? 例えばボートに乗っている時視点を右に動かすとボートの向きも一緒に右に動く といった感じです
1.5でテクスチャの取り扱い方変わって面倒だなぁと思ってたけどこれ アイコンの解像度とか個別に簡単に変えられるから段々便利に思えてきた
477 :
名無しさんの野望 :2013/03/28(木) 19:31:25.73 ID:DA8iLEhJ
いまドット絵作るために高度限界解除するMODを作ろうと思ったんですが、 ググったり動画みたりしても、レシピの追加や、ブロック、アイテムの追加などしか出て来ません。 バージョンは1.5.1です どなたかどうすればいいか教えてください!
既存クラスを大量に書き換えればできるんじゃないかなー(適当)
釣りだと思うけど > ググったり動画みたりしても、レシピの追加や、ブロック、アイテムの追加などしか出て来ません。 作りたいんじゃなくて出来合いのものが欲しいだけだよねこれ
間違いなく既存クラス書き換え それがいやなら1ブロックを小さな4x4x4ブロックに分割して描画とか しかしドット絵とかペイント眺めてればいいじゃんって思うんだが
>>480 ドット絵作るってのはある一定の人数いるからねぇ。
高さ上限が低かった時代に高くするってMODが昔あったな。
バニラでの高さ上限引き上げはそれだけ革新的だったんだ 単純にy座標で2倍、地表の空間部分として見たら従来の3倍までが 自由に使えるようになったわけで、通常の建築ならまず不足はしない ドット絵建築は賛否あるからなぁ、わざわざ大型MOD作ってまで Minecraftでやることかどうかは疑問視せざるを得ない
483 :
名無しさんの野望 :2013/03/28(木) 22:15:27.49 ID:DA8iLEhJ
>>479 MODの作り方が乗ってるサイトとかを回ったんですが、
レシピを追加するMODを作るやり方とかしか乗ってなかったって意味です
>>480 >
それがいやなら1ブロックを小さな4x4x4ブロックに分割して描画とか
なるほどそういう考えもあるわけですね…参考にします!
>>482 まぁそう言われてしまえばおしまいですが…
限界ギリギリのものをたくさん作ってたんですけど、
やっぱもっと大きな物を作りたいと思ってしまうんですよね(´・ω・`)
高度限界を制御してる変数をちょちょいと弄ればすぐだろ MODの勉強よりJavaの勉強が先じゃないのか
言い方あんまりよくないけど、聞かないとわからない人はたぶん聞いても分からない 何でって思ったりしたことを調べる事が楽しめる人じゃないと、長くは続かないと思う
487 :
名無しさんの野望 :2013/03/29(金) 10:01:13.35 ID:C/Sj3vOm
>>484 そうですね、Javaはほとんど勉強もなにもしてないんです(´・ω・`)
その変数をいじればすぐと言われたんですが、それがどこにあるのかわからななくて…
>>485 調べるのが苦痛なわけでもないし実際1週間くらいずっと調べてたんですけど
すべて自分でやろうとしなくても、素直に聞くことも時には大切かと思いまして…
>>486 もし484さんが作ってくださるというのであればすごくありがたいのですが…
ここはやはり自分で作ろうかと思います(`・ω・´)ゞ
高度限界を弄るだけならserver.cfgなり内蔵サーバーのコンストラクタでsetBuildLimitの引数書き換えるなりでいけるけど チャンクデータのファイルフォーマットが256以上の高さをサポートしてないから 実用目的ならまず高さ256対応のチャンクデータ作らないといけなくてこれが大仕事になる そもそもこんな需要のあるネタがそんなに簡単なら既に誰かやってるっての
需要は山盛りだけど供給ゼロっぽい以上、今はある程度以上には面倒なんだろうなあ、 と英語フォーラムぐぐって思ったけど、案外多少の面倒で誰もがスルーしてる状況なだけかも、 とか思いつつなんか為になる情報出たりしないか眺めてるわ 内容に触れない説教レスって、一見何も把握しないまま適当な説教したいだけの連中にみえる(失礼)けど、 実際にどういう難しさがあるかある程度把握したうえで言ってる人な場合も結構あるから受け取り方に困るよね
(´・ω・`)や(`・ω・´)の顔文字使いながら質問する奴は大抵地雷
いいか皆、これがレッテル貼りって奴だ
modding というよりは fix だけれども、フォーラムは登録して居なかったらここにチラ裏。 SMP でわんこが消えるバグを修正するには、 WolfEntity#setAttackTarget() 内の setAngry(true) が呼ばれる条件式で自身が野生であるかどうかもチェックするようにすればいい。 具体的には // if (par1EntityLiving instanceof EntityPlayer) if (par1EntityLiving instanceof EntityPlayer && !this.isTamed()) バニラのコードはどうやらシングルプレーしか意識しているらしく、 飼いならされているときには setAttackTarget の引数に飼い主は渡されていないことを利用し、引数が EntityPlayer 型かどうかしかチェックしていない。 しかし、SMP では飼い主以外のプレイヤーが存在しうる為、飼い犬状態から怒り状態へ移行してしまう。 ちなみに、setAngry(false) が呼ばれている部分は見たところ存在しないようで、これが野生の狼が怒ったら二度と手なずけることはできないという (正しい?) 挙動をする。
DataWatcher に巨大な String を入れた Entity を spawn させると、 Forge 6.6.0.497 環境だと落ちちゃうんですね…… なんで Entity の Spawn に、Forge だと Packet250CustomPayload 使ってるんですか?
一番大きいのはPacket24MobSpawnでEntityID127までしか使えない問題の回避の為だと思う
>>494 そういうことか。納得……
回避のために大量データを Packet250CustomPayload で運ぼうとしているけど、これ結構難しいな。
基本一方通行だから、要求に対する返答みたいな処理したいときには一苦労なのか……
MCP744 でデコンパイルしたら、Block の名前を付ける奴(旧名 setBlockName)が "getIndirectPowerOutput" になったんだけど、これって自分だけ?
>>496 多分
正確にはsetUnlocalizedName
まじかーどこでズレたんだ……そもそもどうやったらずれるんだ。 mcp.ocean-labs.de/index.php/MCP_Releases の MCP744 と Minecraft 1.5.1、 どちらも今日落としてきたものなんだけど、バージョン合ってるよね?
>>498 面倒ならMinecraftForge使ったら?
全部自動でやってくれるから
>>499 その言葉に全否定された気分なんだけど。
ああ、そういうことか…… Forge は独自に methods.csv 持っていて、 "func_71864_b" を "getIndirectPowerOutput" から "setUnlocalizedName" に変更しているんだな。 しかも変更しているのこれだけだし! ここだけ書き換えてデコンパイルしなおすか……
今日日既存書き換えMODなんて好んで使う人いないだろうし、バニラにMCPで開発する意味って殆どなくね Forge機能いらないなら、FMLで開発環境作ればいいような ForgeもFMLもinstall.bat実行するだけで全部DLしてくれるから、環境作成とか数分で終わるよ バニラと比較するにしても、それでDLされたものからファイルをコピーしちゃえばいいし
既存書き換えするようなMODの場合はcoremodsタイミングじゃないと間に合わなかろうから その場合実質Forge専用になりそう
釣竿を追加するmodのチュートリアルを誰か作ってくれ・・・
ForgeMODのSideProxyのことだけど、統合サーバー(ようするに一人用)だと クライアント側として一度しかModが初期化されないっぽいから 他にサーバー専用処理とサバクラ共通処理をもproxyに任せたかったら CommonProxyは基底としてServerProxy作ってproxyとして登録した方がいいんだよね? それとも各種マルチ環境だと事情が違ってこれだと不都合あったりする?
>>504 作り方は知ってますが面倒臭いから自分で調べてください
>>505 クライアントから呼んだらClientProxy側が勝手に呼ばれた気がします。
試してないので違ったらすみません
釣竿の射程うpと引っ張る力うpして釣り能力消した、 飛距離を表示してメジャーの代わりにするようなModネタで作ったことならあるよ たしか、釣竿を継承して作るだけじゃ処理挟めないとこがあって、 一部処理は釣竿側(飛ばすエンティティのほうだったかも?)からコピペして改変みたいな感じになった記憶がある
Privateに注意するだけでしょ
作れることは作れたけど釣り糸が表示されない・・・
510 :
469 :2013/04/17(水) 21:58:25.71 ID:dKxAG5SQ
環境はMC1.5.1 Forge(universal) #639です GUIを開いた時の処理で質問があるのですが、かまどのGUIを開いた時に燃焼の残りと 完成するまでの時間を取得していますが、自分で同じようなブロックを作って テストしてみたのですがTileEntityで保持している値を取得できませんでした。 たとえばバニラでは以下のようにして取得していますが、自分で作ったもので テストするとTileEntityFurnaceのコンストラクタで初期化した値がかえって きてしまします。(本来なら徐々に変化している値が帰ってくるはず) TileEntityFurnace furnaceInventory furnaceInventory.getBurnTimeRemainingScaled(12) ためしにBlockのclassの適当な場所で以下のようにやれば取得できます。 TileEntityFurnace furnaceInventory = (TileEntityFurnace)world.getBlockTileEntity(i, j, k); furnaceInventory.getBurnTimeRemainingScaled(12) ボタン等を追加した場合はパケット関係の処理が必要のようですが、GUIからTileEntity内部の値を 取得するにもパケット関連の処理が必要なるのでしょうか? 色々なソ−スをみてみたのですが、直接関係してそうな記述がみつからなかったので 記述の仕方もわからず、別の場所に問題があるのかパケット系が足りないのかが分からず 困っています。 パケットがらみが必要か不必要かだけでも分かると助かります。
>>510 ContainerのupdateCraftingResults()(鯖)とかupdateProgressBar()(蔵)で何とかなった記憶
パケットはこの場合は本体が何とかしてくれます。
ContainerFurnaceを参考にしてみるといいかも
>>511 Containerのほうに一連の記述を追加したらGUIのほうでも値を更新してくれるようになりました。
Containerは枠だけ作ってこれでもう完成だと思い込んで、ソースをみていませんでした。
よく見るとこちらもで値の更新処理をしているのですね。
ありがとうございました。
お前ら凄いな…
514 :
名無しさんの野望 :2013/05/03(金) 02:44:55.73 ID:Fz2r7TF3
あげ
515 :
名無しさんの野望 :2013/05/19(日) 23:22:27.05 ID:rySmoW/S
他MODのアイテムを簡単に取得するにはどうすればいいでしょう FFMみたいにAPIが用意されていればいいんだけど、普通はないですし。 今はClass.forName().getDeclaredField()で無理矢理取ってきてるんですが、 もっとForgeの機能とかでないものですかね? Gregとかどうやってるんだろう?
>>515 ロジパイプも同じようなことやってるしソース見るのおすすめ
ゾンビを元の7〜8倍ほどに巨大化したmobを追加したのですが、 下半身にしか、攻撃したときの当たり判定が出ません。 見た目通りの判定にするにはどうすればいいでしょうか?
エンドラのソースを見る
ディメンション追加系のMODで参考にするのにおすすめなのって何かないかな。 複雑なのが多くて、単純なのがあんまり見つからない気がする。
Minecraft Forge universal 1.5.2-7.8.0.712 なんか Entity#onUpdate が WorldServer でしか呼び出されていないんだけど、 WorldClient では呼ばれないんだっけ?
Forgeを利用してMODを作ってます。 Eclipseのデバッグモードで実行したままソースを変更してもリアルタイムに反映されないのですが、何か設定が必要なのでしょうか? 自動的にビルドのチェックは入ってます。
522 :
521 :2013/07/01(月) NY:AN:NY.AN ID:yPHw3Z5s
Youtubeなどにある矢に爆発をつけるようなものはリアルタイムに反映されました。 レシピ追加などは起動しなおさないといけないのですね、失礼しました。
MCPまだかな
1.6が正式に来てからじゃないと来ないんじゃ? pre版がほぼそのまま正式になることがほとんどとはいえ確実ではないしな
いつも本体のPre来たらMCPもPre来るじゃんと思って見てみたけどやっぱり来てるじゃん ビビらせんなよな
まじかどこだって思って探したらunsuportedって形できてるのか にわかmodderが露見してしまったはずかしい
1.6.2の話が出てるし1.6.1は飛ばしてもいいか
テクスチャパックからリソースパックになったところ眠い頭じゃどうすりゃいいのか分からんw
ググればテクスチャパックからリソースパックへの変換ツールが出てくる。
あーごめん、MODをどう作るかの話ね
1.6.1forgeきてた
533 :
名無しさんの野望 :2013/07/03(水) NY:AN:NY.AN ID:wn905pbY
動物系の処理がかなり変わってて解析するだけでも心が折れそう( ゚∀゚)・∵. まともに表示させることすらできてないよ!ないよ!
あまりのショックに間違えてあげてしまったorz
1.6.2pre用のMCP来てた
1.6.1以降のMCPにmodloaderを導入する方法を教えて下さい 1.6.1のMCPはminecraft.jarが不必要なようなのでどうすればいいのか分かりません
一回decompileして、自動で落とされるMCP\jars\versions\1.6.1\1.6.1.jarにmodloader突っ込んで、cleanupしてdecompile? 正しい手順かどうかは知らん
ただでさえ面倒くさい作業がさらに面倒になったのか modloaderも開発続けるならいい加減ソースパッチくらい公開すりゃいいのに
Forgeが簡単になりすぎたんや
間を取ってFMLで開発しよう
ModLoaderが安定しない 1.6からはForgeのみでの開発にした方がよさそうだ
win8 x86-64, MCP 8.04 でデコンパイルで躓いていたのだが、 org.lwjgl.lwjgl:lwjgl:2.9.1-nightly-20130708-debug3 のコピーに失敗していたから json から lwjgl の nightly を name に含むエントリーを削除したらうまくいった。
>>542 Jsonファイルにnightlyなんて一文字も存在しないんだが、具体的にどこを削れば良いんだ?
>>543 自分のjsonには
{
"name": "org.lwjgl.lwjgl:lwjgl:2.9.1-nightly-20130708-debug3",
"rules": [ { "action": "allow", "os": { "name": "osx", "version": "^10\\.5\\.\\d$" } } ]
},
{
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.1-nightly-20130708-debug3",
"rules": [ { "action": "allow", "os": { "name": "osx", "version": "^10\\.5\\.\\d$" } } ]
},
{
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3",
"rules": [ { "action": "allow", "os": { "name": "osx", "version": "^10\\.5\\.\\d$" } } ],
"natives": { "linux": "natives-linux", "windows": "natives-windows", "osx": "natives-osx" },
"extract": { "exclude": [ "META-INF/" ] }
},
が含まれていたからそれを削除した。 (書き込み制限のため一部改行削除済み)
もしかしたらOSや落とした時期で変わるかもしれない。
ちなみに、これはwin8でさっき落としなおしたもの。
>>544 見る場所は↓であってる?
minecraftforge-src-1.6.2-9.10.0.784\forge\mcp\jars\versions\1.6.2
>>547 1.
net.minecraft.srcはやめよう。それはマイクラ本体のパッケージ(名前空間とだいたい同じ意味)だよ
なので、その下にModのクラスファイルを作成するのは間違ってる
パッケージの名前は、慣習としてドメインがよく使われるけど、別にドメインじゃなくてもOKだよ
他人と絶対に重複しないような名前であることに意味があるだけ(ドメインは絶対に重複しないことが保証されてるのでよく利用される)
ドメインを持ってるならそれでいいし、持ってないならマイクラのIDとかでいいと思う。
マイクラのModで他人のIDをパッケージ名にするなんて早々ないだろうからね
2.
Forge(FML)のModとして認識されロードされるクラスは、命名規約はないよ。自由な名前をつけてOK
クラスを @Mod アノテーションで修飾すれば、Modクラスとして認識される
もちろん、スーパークラスも必要ないよ(Objectでいいよ)。POJOなクラスを自由に作成できる
FMLにもRML互換機能としてBaseModやModLoaderクラスがあったり、
BaseModを直接の親にもつmod_Xxxクラスのロード機能もついてるから、RMLと同じようにしても一応ロードはされるけれど
今から作るModで、あえてそういう作りにするのは意味ないし、推奨はしないよ
550 :
>>547 :2013/07/11(木) NY:AN:NY.AN ID:jmhCx+ww
>>548 わかりやすい解答ありがとう。
恥を忍んで聞いて良かった。
すっきりした。
参考リンクもサンクス
これ見つけられてなかった。
また疑問出てきたら質問させて頂きます
>>546 明記していなくて済まない。
自分はバニラのままで、win8 環境下であれば
%appdata%\.minecraft\versions\1.6.2\1.6.2.json
のことを指していた。
もうちょっとググってみると、Light Renderer の中の人も似たような問題に陥って同じ方法で解決したみたい。
連投失礼。書き忘れた。
>>546 もし、decompile ができないのであれば
forge も 9.10.0.789 (Recommended) が既に出ているから、
そっちだと解決しているかもしれない。
553 :
名無しさんの野望 :2013/07/12(金) NY:AN:NY.AN ID:5+smZEYn
>>551-552 バニラのVersion以下のことだったのね。
どちらにしても、昨日の段階だとnightlyがJSONに入ってなかったです。
削除して、再取得とかしてもだめだった。
が、今日やり直したら、ちゃんと出てきました。
ちょくちょくファイルが差し代わってるらしいから
それでファイルがおかしかったのかもしれないですね。。。。
昨日はlocalで新ワールド作成とかできなかったしwww
おつきあいありがとう
ブロックの向きをmetadataで保存しようとしてるんだけど 一度クライアントを落とすと向きが初期化されちゃうのはどうしてですかね・・・
同期
getblockmetadataと書くところをblockmetadataとか書いてたせいでした・・・
coremod作ろうとしてるのだが modding wikiみて基礎をつくって そこから特定のキーおしたらGUI開くようにしたいんだけど keybindingの仕方がわからない... 分かる方教えてくださいお願いします
FMLが持ってるModLoaderクラス、BaseMod用のコンテナあたりの キーバインディング登録の処理を参考にするといいよ キーコントロール画面に出さなくてもいいなら、TickType.RENDERで毎フレームHookして 自前でキー処理するって手もあるけど、あんまりおすすめしない
560 :
558 :2013/08/04(日) NY:AN:NY.AN ID:7kUF6ITe
>>559 サンクス!
やり方はわかって動くようになったんだが、
Eclipceから実行すると正しく実行されるけどコンパイルして実環境にもってくと
java.lang.NoClassDefFoundError: atp
でnet.minecraft.client.settings.KeyBindingが読み込め無いんだが
なにか原因分かる方います?
リフレクションとかそういうのは一切使ってないよな?
562 :
558 :2013/08/07(水) NY:AN:NY.AN ID:CFw5IZ6Z
解決した! @TransformerExclusionsで指定されてたパッケージ内に入れてたのが問題だった。
Peaceful環境下における満腹度の低下を考えております。 その類のmodは存在しますが、1.6.2未対応のため、自分でmodを作るに至りました。 空腹はFoodStatsクラスが担当し、このメソッドのonUpdate内で難易度の判定と、行動による満腹度の消費を実行するようです。 このクラスのインスタンスはEntityPlayerが持ち、満腹度の加算メソッド、更新メソッドを呼び出しています。 EventHandlerで処理を追加するだけでは、FoodStats内の難易度判定がくぐれず、停滞しております。 既存ファイルを書き換えれば簡単な話ですが、追加する形で方法がありましたが、ご教授お願い致します。
564 :
563 :2013/08/12(月) NY:AN:NY.AN ID:MUGysjlH
失礼、Forgeを使用してのmod制作です。 minecraftは1.6.2、Forgeは9.10.0.804を使用しております。
Forgeはしらんけど難易度判定を行わないだけでほかは同等の処理を外部で実行し foodExhaustionLevel foodSaturationLevel foodLevel を書き換えればいいだけじゃないの? 疲労追加からonUpdate前の間に処理ができないならプレイヤーの行動を すべて補足し再計算しないといけないだろうけど
566 :
563 :2013/08/14(水) NY:AN:NY.AN ID:iUlY/x6u
>>565 返信ありがとうございます。
単純に@ForgeSubscribeで追加したonLivingUpdate時や、onUpdate時にHealthやFoodLevelを書き換えても正常に動作しないようで、現在は正常に動作する書き換えタイミングを探しております。
こういった内容はもしかしたらPlayerAPIを使ったり、Coremodsでの書き換えが適当なのかもしれません、そちらも調べてみることにします、ありがとうございました。
サーバーとクライアントは別エンティティで、定期的に同期がとられている 更新対象のエンティティを間違えているとかは?
>>567 ありがとうございます、まさにその通りだったようで、EntityPlayerを取得する記述を変更した所、無事に動作しました。
追加のLivingUpdate内で難易度をハードに変更→FoodStats更新→難易度を元に戻すという処理で実現できました。
スマートではありませんが、FoodStatsのExhaustionLevelにはアクセス出来ないので、ひとまずこのようにしました。
目標のハードモードでの敵mob無し環境は、今回の処理とピースフル、及びコマンドの自然回復オフで実現できそうです。
他の方法では、ハードモード + mobの沸きを個別設定できるCJB ModsのMobFilerでも可能でした。
おかげ様で無事平和な日々が過ごせそうです、ありがとうございました。
569 :
名無しさんの野望 :2013/08/17(土) NY:AN:NY.AN ID:ZmI/CeP2
というか満腹度変更だけなら難易度関係なく直接setFoodStatus()するだけでいい
coremodsタイプのMODを作っていて、既存クラスを全部書き換える処理をしています。 以下の様なフォルダ構造でzip化し、拡張子をjarしてmodsフォルダに入れると、Modsには有効になっているように表示されるのですが ログには [ForgeModLoader] FML has found a non-mod file ChatLogger.jar in your mods directory. It will now be injected into your classpath. This could severe stability issues, it should be removed if possible. というメッセージが出ていて MDOの機能が有効化されません。MANIFESTにはちゃんとFMLCorePlugin: com.ChatLogger.asm.ChatLoggerCoreと書いています ChatLogger.jar │ GuiNewChat_Logging.class (GuiNewChatの書き換え後のクラス) ├─com │ └─ChatLogger │ └─asm │ ChatLoggerCore.class (implements IFMLLoadingPlugin) │ ChatLoggerMain.class (メインの処理) │ ChatLoggerModContainer.class (extends DummyModContainer) │ ChatLoggerTransformer.class (implements IClassTransformer, Opcodes) └─META-INF MANIFEST.MF
>>570 最近coremodsのロードで不具合が指摘されて修正されたようだけどそれとは違うかな
>>571 アドバイスありがとうございます
Forgeの最新版(9.10.1.859)を使ってみたところ、そのメッセージは消えたのですが、今度は
[WARNING] [ForgeModLoader] The coremod com.ChatLogger.asm.ChatLoggerCore does not have a MCVersion annotation, it may cause issues with this version of Minecraft
[Forge Mod Loader] Mod Forge Mod Loader is missing a pack.mcmeta file, things may not work well
というメッセージが表示されるようになってしまいました。
ChatLoggerCoreには@Mod(modid = "ChatLogger", name = "ChatLogger", version = "1.6.2")と書いているのですが
まだなにか足りないのでしょうか?
>>573 ChatLoggerPlusの方ですか
私は、自分が運営しているサーバーのwikiで「チャットログに流れたすべての文のログを時刻と合わせて取る」というMODを公開しているのですが
(こんな感じです→ 2013/08/30 NY:AN:NY.AN8 ○○ joined the game. )
最初は既存のクラスを直接書き換える方法で作っていたのですが、やっぱりmodsに入れるだけで導入できたほうが便利だと思い
この質問をさせていただきました
>>574 ああ・・なるほど、サーバー側ですか!
動作確認してないけど、ひょっとしたら、ChatLoggerPlusがそのままサーバ側でも動くかもです。
もしそのままがダメだとしても、対応は比較的簡単かも・・・。(時刻出力もしてます)
こちらのソースは、githubで丸ごと公開してるので、参考になるかもです。
https://github.com/jakenjarvis/ChatLoggerPlus あと、やってる事がかなりかぶってるので、もしよかったら共同開発しません?
興味があるようでしたら、メールでもください(^^;
で。coremodsは作ったことが無いので、ちょっとわかりませんが・・・。
考えられる原因ですが、ひょっとしたらzip圧縮の仕方が問題なのかもです。
7zipでフォルダを右クリックして圧縮だと、内部フォルダの階層が一つ深くなってしまい、読み込めない、なんてことで昔ハマりました。
フォルダを開いて、上位のファイルとcomフォルダを全部選択して、右クリックして圧縮するとうまく動いたりしませんか?
>>575 あ、すいませんサーバー側ではなくて普通のクライアント側MODなんですよ
圧縮の方法は、ちゃんとその階層まで言って全選択してやってるんですがねえ
ソースありがとうございます。参考になりそうです。
共同開発ですか、私なんてまだまだレベルが低いのでお役に立てそうにないです・・あんま時間も取れないですし。
せっかく誘ってくれたのにすみません。
>>576 あ、あれ?じゃあ、MODはモロかぶり?汗
もしかして昔からあったのかな・・・私が無駄骨だったんだろうか・・・
ちなみに、うちのChatLoggerPlusもmodsフォルダに置くだけですよ。
やろうとしてる事が、ちょっと違うのかな?
それから私もcoremodsがどういうものかも分かってないレベルなので、あまり気にしないで(^^
役に立つアドバイスが出来なくてゴメンナサイ
>>577 私もForgeのイベントからアプローチしようかと最初は思ったんですが、
他にもMOD開発していてそれもcoremodsタイプにしたいので
どうせならこのMODからcoremodsにしておこうと思って。
それにForgeのイベントだと、チャットログに流れた文章がそのまま取得できなく無いですか?
ClientChatReceivedEventじゃ駄目なん?
>>579 それでもいいんですけど
他のMODもcoremods化したいので
この方法で作りたいのですよ
それにClientChatReceivedEventでは私の取得したいものが取得できないので
>>580 ClientChatReceivedEventのパラメータの文字列は、Json形式っぽい文字列に変わってますよね。
おかげで、プレイヤー名が取得できるようになった。(これまではサーバで区切りが変わるので、面倒だった)
今までと同じような文字列がほしいなら、ChatMessageComponentクラスを見ればOKです。
func_111078_c()とかfunc_111068_a(true);あたりで何とごまかせますよ。
使い方は、ソースをChatMessageComponentで検索すると、いくつか使ってる場所が見つかると思う。
{"translate":"commands.clear.usage"}
こういうのが、ちゃんと
/clear <プレイヤー> [アイテム] [データ]
こう変換できます。
私はチャットの内容の書き換えまで考えて、現在コーディング中なんですが、
結局、privateメンバーのアクセスメソッドがprotectedなので、ChatMessageComponentのラッパークラスを作りましたよ。
ところで、coremods化する利点って何でしょう? どこか書いてある場所があるなら、URLほしいかもです(汗)
>>581 プラグインで流れるメッセージとか色コードも取得したいんですが、それもできるんですか?
>>582 jarに入れるよりもmodsに入れるほうが楽・・というところぐらいですかね
でもそれって私の中だと結構大きいので(私自身めんどくさがりだし・・)
それになんかそっちのほうがスマートな気がするんですよね
forgeがjar書き換えに対し警告を発するようになったからな〜。
>>583 色なんかもちゃんと§で復元されてますよ。
例えば、
{"color":"dark_green","translate":"commands.help.header","using":["1","4"]}
が
§2--- ヘルプページの §21 / §24 ページを表示(/help <ページ番号>) ---
なる。
printChatMessageあたりで検索して、呼び出し元と先の両方を確認すると、
そこから先は、これまでと同じ仕組みだってことが分かると思う。
>>583 >>584 ああ・・・もしかして・・・
coremods化すると、class上書きする場合もmodsフォルダに入れるだけで済むようになるってことかな?
>>585 そうです。
optifineはjar書き換えmodの代表例ですが、現バージョンからforge環境下では拡張子を.zipに変えてmodsに入れるだけで導入可能になりました。
また、jar書き換えmodをforge環境下で導入する際はランチャー側で実行オプションを付けforgeのエラーチェック機構を無効化する必要があります。
なんだか少しだけ違うところがある気がするので補足的な ## クラスを書き換え(置き換え)る方法 jar改変になる。同じクラスの書き換えを行うModがあると、競合が起こり起動出来ない問題が発生する。 Mojangもjarの改変は非推奨。(ソースはcpw氏のツイート) ## 拡張クラスなどを作成し、実行時のインスタンスを置き換える方法 出来る箇所が限られているが、普通のModとして振る舞える。ただし同じことするModがいると競合を起こす可能性がある。 安全に作ってあれば同じことをするModが居ても落ちないが、少なくとも一方の機能が死んだり想定外な動作をする可能性が高い。 落ちない代わりに問題が発生した場合の原因究明が困難になる可能性も高い。 ## coremod (プラグインの実装次第だが、)部分的な拡張であれば1つのメソッドに対し複数の処理追加なども出来る。 coremodであるということで、クラス改変を行う機能を有している事が明確になるので、インスタンス置き換えよりは調査しやすい。(ユーザー視点) 動的なクラスそのものの改変なのでその負荷増加はクラスロード時のみになり、リフレクションよりパフォーマンス低下が少ない。 ただしバイトコード操作を行うので基本的にリフレクション以上に泥臭い実装になりがち。 また、低レベルなJavaの知識(クラスのバイトコードやクラスローダー周りなど)や、asmなどのライブラリの知識も必要。 必要のないcoremod化はあまりメリットないので、明確な既存機能の変更理由がない限りはcoremodはオススメはしないよ。 例えば、非公開のフィールドの値を参照する程度なら、(実行頻度にもよるけど)リフレクションでも十分だと思う。 大幅な改修に利用するのはさておき、ForgeがHookできるポイント(イベント)を提供してくれていないとこに 俺々Hookイベントの発行機能を追加する、みたいな目的で使うのが一番多いんじゃないかな。
588 :
585 :2013/09/11(水) 00:45:33.54 ID:PesAPWfn
>>587 詳細ありがとうございます!
そうか、リフレクションって手もあったか。すっかり忘れてたw
私の場合、今の所、必要性はないので、coremod化は考えなくてもよさそう。
んーしかし、クラスローダー周りの知識は怪しいなぁ・・・(汗)
既存ブロックに新しい変数を追加したいんだけど、これってどうすればいいんですかね?
mod作成初心者です。 1.5.2のminechemに他modのアイテムの組成を登録するmodを作成したいのですが minechem apiはあったほうがいいですかね? 過去のapiを用いても作成できますか?
>>591 オーバーロードってそのクラス以外で出来たっけ?
出来れば既存クラスには手を加えたくないんだけど方法あるかな?
ブロックに変数追加って言うのは、Blockクラスに数値やらなんやらを追加したいの? それとも設置してあるブロックに対して個別になんかを設定したいの?
>>593 それぞれのブロックのクラスに定数置いて、
ワールド上のブロックにも変数を設置したい
定数はその定数を参照するクラスに長さ4096(Block.blocksList.length)の配列持たせてブロックIDで参照するとかすればいいけど、 ワールド上のブロックそれぞれに変数ってのはかなり大変な気がする。
方法だけじゃなくてやりたいことも書かないとそれが最適な方法かはわからないと思う
TileEntityならNBTでなんとかなると思うけど既存ブロックの場合は難しそう
バケツミルクを精錬するとチーズができるMODを作っています。 肝心のチーズができる部分はできたのですが 空のバケツをかまどに残す方法がわかりません・・・ 残すやり方教えて欲しいです。
ブロッククラスのインスタンスに情報を追加するだけなら、ブロックIDをキーに値を得れるマップなんかがあれば解決できる。 全座標毎に情報を持たせたいのであれば、チャンクに保存されるデーターの構造を変更して新しい情報を加えるか、 新しい座標毎の情報の永続化の仕組みを用意した上で、その情報が必要となるタイミングでのロードとか設定のタイミングとか ゲームの根幹部分から手を入れていく事になって、とても大変だと思うよ。 結果として何がやりたいかって部分がわからないから、ブロック毎に情報をもたせるって考えが 既に間違ってる可能性もあると思うけどね。他の手段で本来の目的の部分を達成出来るかもしれない。
1.5では StringTranslate.getInstance().getCurrentLanguage() で現在の言語("ja-JP"とか)が取得できてたのですが、 1.6では ・getInstance()がpublicじゃなくなった ・getCurrentLanguage()が根本的になくなった ということで取得できなくなってしまいました。 他に取得できる方法ありませんでしょうか。 なお、最終的に取得したいのは日本語か否かだけです。
>>601 私も他のクラスでgetInstanceが無くなってて置き換えた記憶があるよ。
getCurrentLanguage()でソースを全検索したら、どこかで使ってるところない?
その使い方見て真似できればOKだと思う。
>>602 なんか
Minecraft.gameSettings.language
に普通に設定が置いてありました。
さんくす。
>>603 二日前だと…
ああ・・GUI作るのめんどくさい・・・ GuiSlotが使い勝手が悪い・・・。 どこかに、パーツ的なソース転がってないかな。
とても局所的な質問なのですが、Containerを使ってTileEntityの内部データをシンクロしているとき、 Container内のメソッドupdateProgressBar(int, int)の第二引数に入ってくる値が2バイトしかないのは 仕様なのでしょうか? シングルでは4バイト帰ってくるのですが、マルチ環境では下位2バイトしかなく困っています。
607 :
名無しさんの野望 :2013/09/30(月) 21:50:35.39 ID:rINz7EgV
1.4.7から追加されたonSetBlockIDWithMetaDataって1.6.2から何になったかご存知のかたいたら教えてください><
ちょっとは探す努力を汁 1.4.7のBlock.onSetBlockIDWithMetaDataはChunk.setBlockIDWithMetadataから呼ばれてる だから1.6.2のChunk.setBlockIDWithMetadataの該当箇所を見てみる そしたらちっとも変わって無いんだがおい
610 :
名無しさんの野望 :2013/10/13(日) 23:48:34.08 ID:vcj6LO4r
moddingwikiの食料追加のテンプレをそのままeclipseに突っ込んだんだが テクスチャを追加しようとすると「func_111206_d」でエラーはくんだけどこれって何かいじらんといけないのかな いろいろ調べてみたけどエラーでてる人見つけられなかったので詳しい人教えてください。
mcpのバージョンが新しいものだと古い版でfunc_111206_dみたいな難読化された名前がまともなsetTextureNameっていうのになってるからかな mcp/config以下で難読化された名前を検索するとmethods.csv等で正しい名前が書かれてる行にひっかかるから それを参考に名前を置換すれば多分通る
612 :
名無しさんの野望 :2013/10/14(月) 00:20:31.41 ID:yqaTZDNQ
お前は未来と会話してるのか?
しょーもないな
615 :
名無しさんの野望 :2013/10/14(月) 16:56:17.12 ID:u9sSnr7T
eclipseでやってるんだがマインクラフトを実行しようとしても エラー: メイン・クラスnet.minecraft.launchwrapper.Launchが見つからなかったかロードできませんでした って言われる。助けてくれ
書いてあるとおり、Forgeで修正された起動構成のmainクラスに設定されている そのLaunchクラスが参照できない状態だから実行に失敗している クラスパスに不備があるとかだろう 環境依存の問題だから現状提示されている情報じゃそれ以上のアドバイスはしようがない 調べてダメなら環境を再作成して何も変更していない状態で機動確認 →自分の改修を追加して起動確認といった感じで準に試して行って問題がないかを調べれ
617 :
609 :2013/10/31(木) 17:06:47.03 ID:jTG+pYcq
Gregがやってるようなレシピ削除ってどうやるの? GameRegistry.addRecipe()で上書きは試したけど駄目だった。 CraftingManagerをコメントアウトしたらできたけど、なるべくForgeだけで対応したい
CraftingManager.getRecipeList()でList<IRecipe>がそのまま出てくるからそれをゴニョればいいだけちゃうの
620 :
名無しさんの野望 :2013/11/08(金) 00:02:36.78 ID:uhbGW3oN
この板にどれほどのmod製作者が居るのかはわからないけど支援
621 :
名無しさんの野望 :2013/11/13(水) 00:48:16.01 ID:AUz8e8uE
162以降でどうにかして高さ制限を取っ払えないものか
高くするのはセーブ形式にも関わりそう
623 :
名無しさんの野望 :2013/11/16(土) 22:41:28.51 ID:6H3iPsQp
forge960から環境が変わったと聞いて試しに構築してみたのだけど、もしかして一部の コードを除いて今まで見れていたバニラのコードを参照するこが出来なくなった? eclipse上で実行出来るまでしか環境つくってない(従来のreobfuscate_srgに当たる処理がわからない) けど、バニラのソースコードを参照する方法ってあるのでしょうか? (とりあえず.javaファイルは存在しない) もしないのならmod更新や新規で作るのが大変になりそう。 既存のコードを参考にしてた部分が多いからこれはきつい。
実行すら出来てない俺が言うのも何だがForgeGradleはコミットが毎日5件以上あるしまだまだ開発途上だからなあ サイトで配ってるのは古いし自分でForgeGradleをビルドして使うのもアリかも
ようやくMCPのalphaが出たか
農業面だけ徹底的にリアルにしたMod作ったら遊んでくれる?
>>628 現実とリンクして四季を導入して一年単位でいろんな作物育てるModなんだけど…
チョット待て収穫がリアル年単位なのかw 鯖MOD型でちゃんクロード維持 昼夜も24時間にしてベッド飛ばしも無しかね? 単純に日数計算型? 定点カメラ付きで複数人動画投稿とかしてないとモチベーション持たなさそう
人気を気にしてmod作ってたら絶対モチベ保たないぞっと
冷害とか台風とかまで頑張って追加したらハードすぎるかなぁ
>>635 逆に自分のためだけのがモチベ持たんわ
自分の価値観で全てを決めるな
>631 別に嫌味じゃなくてすげーなと思って聞いてみた 自分だと24時間鯖置く余裕無いしな ただリアル近辺に貸し農地すらない人にはひょっとしたら癒やしになるかもなぁ
>>637 嫌味だとは思ってないよ
寝たら時間飛ぶとかあり得ないからもちろんなしだって言いたかった
起動してない間もどうにかして時間経過させとくようにできるといいけど
結局24時間チャンクロードしつつ鯖稼働じゃないと 天候や動物被害の出来事が反映しにくいし ゲームオンオフだと日付差分一括処理だろうけど その間の世話とか被害の対応とかはどういう扱いにするのかとか リアルさが犠牲になっちゃうね
流石に無理だな マイクラ内1分をリアル時間1秒とかにするしかないんじゃね?
問題は山積みですなぁ
時間の流れを現実同じにすることはリアルさなのかな? 農業として徹底的にリアルにするなら空腹度の変化、水と海水の区別、水の挙動のリアル化等が必要になりそう
農作物ItemStackが格納された環境や時間経過によって腐ったりしたら結構面白いかな
現実とリンクは難しくね? 現実とは別の時間の流れ方でもそれはそれで面白そうだけどな もし作るならカレンダー関連は充実して欲しいところ、種蒔きの日やら収穫日やら肥料撒く日やら書き込みたいし
現実の天気と合わせるMOD無かったっけ
bukkitじゃなかったっけ
遊んでくれるかという観点では 農業や食べ物系MODは、ある程度のプレイヤー作業を必要としながら ご褒美が薄い点が辛いからなぁ。 FFMの農業、養蜂は最終的に資源、エネルギー補給に繋がるが そういうのナシだと、どうやってご褒美を作るかがキモになりそう。
牧場物語ならNPCとの交流に使ったり おしゃれや家具集め、新しい道具、設備のための金稼ぎだが もしもしでも農場ゲーは有るっぽいがあれの目標はどこにあるん?
BTWのハードコア地層が気に入ったから パチもんのMOD(高度に応じて石ブロックの硬さ、採掘レベルが変わる)を作ろうとしてるんですが 1.複数の異なる硬さのブロックを作成し、チャンク生成時にチャンク内を走査し、高度に応じて石ブロックを置き換える 2.複数の異なる硬さのブロックを作成し、プレイヤーが石ブロックを殴ると、高度に応じて殴ったブロックが置き換わる の2パターンが思いついたんですが 1は処理がかなり重い 2は殴った瞬間にブロックが変わるからダサい といった問題を持っています。 なにかもっといい方法はないか、アドバイスお願いします。
ワールド生成法則の書き換えとかかな
鉱石生成ロジックを流用とかどうだろう ダイヤがほぼ100%の分布率ならそれはもうダイヤ層だろうし フラットなものよりは凸凹が自然な感じになるかも 問題はそれを多階層化できるかだけど・・・ 下手の横好きによるアイデアなので的外れなこと言ってたらごめんね
BTWのアレってBTW抜いたあとバニラでログインすると普通の硬さのブロックに戻ってるから、複数のブロックを生成してるのとは違うっぽい
アドバイスありがとうございます。 ワールド生成規則はどこをいじるのかわからないので、 鉱石生成ロジックをいじるの、ためしてみます。 BTWの仕様が理想なんですが、どうやってるのかさっぱり分からないのでパチもんを作ろうかなーと。 ブランチマイニング不可(非効率)で、ダイヤとかを掘るにはグリモアの凶悪な敵が出る深さを探索しなきゃならない みたいな感じにしたいのです。
PlayerEvent.BreakSpeedで出来そうな気がしないでもない
BTW地層はメタで変えてるのかな 生成方法をいじるとcoremodになりそう
BTW地層の仕組みはいいよね、他のMODとの連携とかもしやすいだろうし。 BTWそのものは他MODとの共存なんてほぼ不可能だけどな…
660 :
658 :2013/12/03(火) 20:40:51.42 ID:kNlTYeTa
661 :
657 :2013/12/03(火) 20:41:23.58 ID:kNlTYeTa
名前欄ミスった
たしかBTWのハードコア地層はダメージ値変えてるだけかな あの地層概念はバランスよく出来てると思うわ
BTWからサトウキビの判定やネザーでのMOBスポーン判定の修正とかそういう妥当な改善点だけを抜き出したMod欲しいな
1.7.2の中身見てきたけどnet.minecraft.initにBlocksとItemsができた? なんかforgemodから既存ブロックを書き換えるのが難しくなりそう
1.6.4のgradle使ったやつを試してみたんだけど、 Eclipseもバージョンアップ一緒にされてしまったみたい。 ソースが警告で真っ黄色&Forgeのソースもすごい行開いたり、 行番号的なコメントが大量に表示されて見にくくなったんだけど、 どうにか昔みたいに表示できないのかな?
bukkitでは既にBlockID取得関数がdeprecatedなんだな
従来のブロックアイテムIDはただの付属データになる
1.7.2のMCPとForgeの開発が大変らしいので1.6.xからMod作り始めようかと思うんだが とりあえず、EclipseとForgeのsrc落とせばいいのかな?
Forgeだけでおk 開発はNotepad.exeとJDKだけでもできる
Eclipseで1.6.4の開発をしようとしてるんだけど Clientを実行しても「Class:Startが見つかりません」とか出てエラーになる 1.5.2に戻すと問題無く出来たんだが、なんかやり忘れてる事があったりする?
ちなみにForgeはいれてない。ソースも全く弄らず
modding wiki 見てこい
「1.5.2 に戻すと」 あたりの文面から不思議なことやっている気配がする。 eclipse の環境を 1.5.2 で作ったあと、ソースだけ 1.6.4 に差し替えた? 新ランチャーが 1.6 で登場しているから、そのあたりが 1.5 と 1.6 で差異があるね。
675 :
名無しさんの野望 :2013/12/23(月) 13:11:41.42 ID:nkjL9gvT
>>674 いや、Eclipseで最初に読み込んだのは1.6.4だった
というかMCPのフォルダを二つ作ってEclipse起動時のワークスペース領域の読み込み先を変えてるだけなんで環境とかは関係無いかと
MCPのstartclient.datだと普通に起動できたんでとりあえずこっちでやることにするわ d
>>676 メニューの「プロジェクト」-「クリーン」で直ったような気がしなくもない
1.7.2のFML出たな
MCPのベータ来たからdecompileしてみたけど、本家のほうもパッケージ階層化してきてるんだね。 Forgeにあわせてきてるのだろうか。 1.6.2からの修正量が少なくなるようにForgeががんばってほしい
MCPはbeta FMLはvery alpha FMLは正式リリースまでに何回か大きな変更が加えられるだろうな
MCP の download list にはまだ乗ってないのな。どこにあるの?
forge1.7.2キタ─────-!!!
Forge1.7.2どうすりゃいいのかわからn
forgeの1.7.2とりあえずマイクラ起動まで設定終わったけども、 FMLのKeyHandlerやら、IPacketHandlerがごっそりなくなってたり、 srgの出力とかもどうやるかわからずほとんど様子見だわ Eclipse立ち上げて、ヘルプのとこのマーケットプレイスからgradleプラグインインストール ダウンロードしたforgeのソースを適当なところに解凍してコマンドプロンプトから 「cd /d (forgeのソースのパス)」、「gradlew setupDevWorkspase」を実行。 forgeのソースとは別に、Eclipseのワークスペース作ってEclipseの立ち上げ、 ファイル>インポート>Gradle>Gradle Projectのルートフォルダにforgeのソースのパス、 Build Modelでプロジェクト作ったらとりあえず、ソース編集できるところまで。
>>686 setupDevWorkspace
あと、ソースを解凍した後にフォルダ名を変えたら setup に失敗した気がする。
(悩んだ挙句、フォルダ名を変えずに "forge-1.7.2-10.12.0.968-src" のまま実行したら上手くいった)
eclipse の場合、"gradlew eclipse" をかわりに実行するのでもいいかも。
689 :
686 :2013/12/28(土) 13:53:49.02 ID:knAEbObn
>>687 setupDevWorkspaceはおまじないみたいなもので、
実際はGradle Project作るときにやってくれているはず。
gradlew eclipseコマンドの方を使った場合、
Eclipse>ファイル>インポート>既存プロジェクトをワークスペースへ
でプロジェクト自体をインポートできるのでこっちの方が楽かも。
てか、こっちの方が安定してますね。
そんな難しいことしないで gradlew setupDevWorkspace gradlew eclipse を実行して Eclipseを起動するときのワークスペースに forge-1.7.2-10.12.0.***-srcの直下に出来ているeclipseフォルダを指定するだけでいけない? あと環境作っても難読化?のせいでExampleMod.javaの System.out.println("DIRT BLOCK >> "+Block.dirt.getUnlocalizedName()); でいきなりエラー出てるね コメントアウトすればマイクラ起動が出来るけど、まだまだこれからって感じだな・・・
691 :
名無しさんの野望 :2013/12/28(土) 16:24:37.45 ID:knAEbObn
>>690 それでいけるね。
ちょっとエラーが出る要因がわからなかったから別にしておいたけど、
直下のeclipseでワークスペース指定すると、いちいち実行環境作らずに、
ただ使いたいだけなら、そのままデバッグまでいけるからそれが一番いいと思うわ
ModLoader互換のがごっそりいなくなってるけど、
これから追加されてるのか、もうサポート終わるのかなぁ。
ModLoaderから乗り換え組は大変そう・・・
bye bye modloader なんて書いてあったから互換は無い
現在のForgeバージョンで本気で1.7に対応してる人っているのかな? 試しに小さいmodでやってみたけど、メソッド名やフィールド名が難読化されてるるし バニラのソースも現バージョンだとデフォルトで見れないからMCPベータでデコンパイルしたのを外部エディタで MC1.6.2の頃の物と比較しながら見ないとどれか分からないしで、なんとなく現在はこんな手法になっているのかぁ ってのも確認するだけになってしまってる。 あとうちの環境だとデフォルトワールドを生成するとクラッシュする フラットなら生成できるのだが
まだForgeはMOD作れる段階じゃない
Eclipseならプロジェクトエクスプローラーのforge-1.7.2-10.12.0.968-src.jarからソース見れるよ それが見にくくて、MCPベータでデコンパイルやつ俺も見ちゃってるけども #968だとうちの環境でもDefaultworldはエラーになる Item、Block、TileEntityは正常に追加できて動いてる事まで確認できたけど、 GUIとかPacket系はまだまだ作れる感じじゃないねぇ とりあえず、デバッグついでに犬と猫とゾンビと戯れてるわ
MCP9.02beta(1.7.2)に旧版modソース突っ込む →名前マッピングされてなかったり変更されてたりで修正箇所たくさん(´・ω・`) ソース修正等してeclipse上で動くようにした →recompileは通ったがreobfuscateでエラー エラー内容を見て原因と思われるnet/minecraft/creativetab/CreativeTabsをconf/joined.excを見ながら修正してみる →recompileしてreobfuscate…エラーでないで完了 minecraftのjarに突っ込んで起動してみる →ClassNotFoundエラーが出る reobfuscateの生成クラスを確認してみるとinterface等が再難読化されてないのが原因っぽい ↑今ココ MCP更新されるまでどうしようもないんか… 試してないがForgeの方もまだだめなんよね?
Forge導入すると湿地に木が生成されないな 素直にMCPとForgeの安定版を待つか
interfaceに public static final String __OBFID="CL_0000~~~~";をconf/joined.exc見ながら定義したら再難読化してくれるようになったわ。 classにはprivate static final String __OBFIDで定義されてるが、interfaceだとprivate使えないから変になってたんかなー
700 :
名無しさんの野望 :2013/12/31(火) 16:23:17.21 ID:G6dnepg4
解答してgradlew eclipse実行してフォルダごとプロジェクトに追加して実行したけど tried to access field net.minecraft.util.WeightedRandom$Item.itemWeight from class net.minecraft.item.Item ってでて落ちるeclipse以外からだとソース見れるのにeclipseから見ると存在しないって言われる 何が悪いんだろう
チェストの容量増やすにはどのクラスいじればいいんですか
IronChastあたりのソース見ちゃえばいいんじゃないかな
forge 1.7.2でキーイベントのセットって出来ない? 1.6.4まではあったhandlerが無くなってるけど
705 :
名無しさんの野望 :2014/01/05(日) 16:24:48.58 ID:4hUz3tvU
>>704 ありがとう
でもそれ見ただけじゃ実装方法が全くわからねー
サンプルに入れとけよ
706 :
名無しさんの野望 :2014/01/07(火) 22:11:57.42 ID:0oFRQHTN
1.7仕様変わりすぎだな
>>704 をみてイベント自体の受け取り方はわかったけど肝心のキーはどこから取得するんだろう
取得するクラスが用意されてない?
InputEvent.KeyInputEventだとキープレスの時はコールされるけど、 キーリリースの時にコールされなくてうちの環境だと使えなかったから、 TickEvent.ClientTickEventにKeyboard#isKeyDownで実装した。 ClientRegistry#registerKeyBindingでキー登録できるけど、 マイクラ内部の方には表示されなかったりまだちょっと不便な感じ パケット送信が跡形もなく変わっててまったくわからない
708 :
名無しさんの野望 :2014/01/09(木) 11:59:45.02 ID:slfnDlPK
難読化するには
>>697 ,699以外の方法ないのか
forumとかに載ってる方法だと難読化されないな
Javaのコードなんか難読化してどうすんの??
え?
Javaのコードなんか難読化してどうすんの??
え?
リアル農業とかすげえな FFMの養蜂とかもきっと自分がやりたいから作ったんだろうなあ なんで蜂・・・?とか思ったけど作者はきっと蜂が好きなんだろうなw
>>697 とりあえずこの方法でできた
Step1:環境作成
http://www.youtube.com/watch?v=CFytRiis6M0 [実行]→[実行構成]
※クライアント
メインクラス: net.minecraft.launchwrapper.Launch
プログラム引数: --version 1.6 --tweakClass cpw.mods.fml.common.launcher.FMLTweaker --accessToken Player1234
VM引数: -Dfml.ignoreInvalidMinecraftCertificates=true
※サーバー
メインクラス: cpw.mods.fml.relauncher.ServerLaunchWrapper
引数なし
Step2:修正&デバッグ
src/main/java/ に過去verのソース入れる→コンパイル&実行してチェック
Step3: リリースビルド
直下に Release.txtを作成→gradlew build と書いて保存→拡張子をbatに変更して実行
build/libs/ にjarファイルができる
地平線とか遠くの山の輪郭を描画できるmodがあればマイクラの世界はよりいっそう美しくなると思うのだがどうだろうか
山の輪郭はリソースパックで何とかならないだろうか
アホな質問だが バニラに存在するアイテムの新規レシピ 例→木の棒8つで木材 だとかは今からJAVA始める初心者でも簡単にできると聞くが バイオーム追加とかだと難易度はどれくらい跳ね上がるんだろうか?
バイオーム追加はバニラなら簡単に作れるけど、Forgeでやるなら逆に面倒
coremod作りたいんだけど coremodLocationがnullで1.6までの方法じゃ既存クラス書き換えが出来ない どうすればいいんだろ
721 :
名無しさんの野望 :2014/02/03(月) 01:43:55.68 ID:BOM3GpvH
えらく初歩的な質問ですまぬ。 BuildCraftの拡張MOD(Additional PipesとかFFMとかみたいなやつ)を作りたいんだけど前提になるBuildCraftってどうやってソースに追加すりゃええのん?
質問です 1.6.4forge(9.11.1.965)開発環境をつくりたいのですが install.cmdを実行しても環境が生成されないです mcpディレクトリは自分で作るんですか? もしそうならどこのディレクトリにつくるんですか? 情弱ですいません
723 :
名無しさんの野望 :2014/02/04(火) 02:25:57.02 ID:ygrMXfrq
724 :
720 :2014/02/04(火) 18:08:58.35 ID:pF01yQYH
1.6環境で試したら同じエラーが出たからForgeじゃなくてこっちのミスだった クラスパスの追加?をしないとパスが回ってこないんだろうけどいまいち分からん 一応フォルダを追加してみたり.classを追加したりしてみてるんだけどcoremodLocationがnullのままだった 誰か詳しく教えてください
>>723 メッセージは
Checking MCP zip (may take time to download)
[Errno socket error] [Error 10035] 不可の操作をすぐに完了できま
せんでした。
とでます
mcpディレクトリを作ったら
古くせえやつをはよ消せってなります
>>725 ミス
正しくは
Checking MCP zip (may take time to download)
[Errno socket error] [Error 10035] ブロック不可のソケット操作をすぐに完了できま
せんでした。
です
Forge-1.7.2-10.12.0.1025-src だんだんまともに易読化されてきたな そのおかげで古いままの同梱のサンプルソースがコンパイルエラーになるが
728 :
名無しさんの野望 :2014/02/12(水) 02:17:48.84 ID:7IXBCvcI
1.7でMod作って導入してみたのですがクラッシュします。 一応Eclipseでは動作してたのでmod自体の問題じゃないと思うのですが。 導入方法(配布ファイルの作り方)が変わっていたりするのですかね? 一応binの中にあるフォルダごと圧縮したりclassだけ圧縮したりいろいろ試してるのですが全然分からず。 周りの1.7対応のmodが皆.jarなのは気のせいですか?
binのなかのclassは使えない コマンドでgradle buildすると、build\libディレクトリの中に難読化済みclassが入ったjarができる
gradlew build だった
731 :
名無しさんの野望 :2014/02/12(水) 07:23:16.14 ID:ZyvNziVj
1.7.2と1.7.4って内部的にそんなに違うかな?Minecraftの根幹らへんのことは分からないんだけど、MCPの1.7.4への対応って難しいのかねぇ
732 :
名無しさんの野望 :2014/02/13(木) 00:44:37.94 ID:zZJCrp3+
>>429 ありがとうございます。ありがとうございます!!
使える様になりました。 心から感謝します!
733 :
名無しさんの野望 :2014/02/19(水) 12:19:54.13 ID:9ewkCdNG
734 :
名無しさんの野望 :2014/02/20(木) 21:08:32.35 ID:t4rEin88
MCPがさっぱり分からん。 jarsにminecraft_server.1.5.2を入れたのにデコンパイルすると !! missing なんちゃらと出る
入れなくていいし気にしなくていいよ
forge-1.6.4-9.11.1.965 Minecraft1.6.4 Eclipse MMMLib-1_6_4-kai-2 littleMaidMob-1_6_4-kai-1 この環境でリトルメイドモブのアドオン作りたいんだけど とりあえずnet/minecraft/srcにjavaファイル全部置いて、パッケージエラーが出たファイルは規定の位置に移動させた しかし、protectedのメソッドやら変数やら見に行っている記述が何箇所かあって、不可視だって怒られてる このエラーを解決しない事にはアドオン作成に取り掛かれそうにないんだけど、解決方法がさっぱり分からん…
forgeのソースをバックアップしておいて、全部publicに変更してみれば? ぶっちゃけアクセス制限はコンパイル時のみで、実際は親子関係にかかわらずアクセスできたりするもの Javaの場合は知らないけど、C言語なんかはそうだった
738 :
名無しさんの野望 :2014/02/23(日) 15:15:37.36 ID:T8gc8Oc4
MOD内にlangフォルダを作ってeu_US.langとja_JP.langを置いてみたら、ちゃんとアイテム名は適用されるんだけどもその後ろに.nameってついてしまう これを改善する方法ってどなたかわかりますか?
739 :
S :2014/02/23(日) 21:27:51.40 ID:WiMHVSsm
>>738 =の左側に.nameってつければいいんじゃない?
mod専用ってbukkiもmodに入るんか?
>>470 入らない気もするけど、BukkitPlugin作成スレがないからなあ
でもやっぱMod作成できる人しかいないんじゃない??
いつも番号間違える すまん
>>737 うーん、そんなもんなのかな?
ちょっと非公式フォーラムの方にも聞いてみる。
ありがとね
うーん、非公式フォーラムに、何か書き込めなかったわ エラーが無くなるまでprotectedをpublicに変更してみたけど、メイド生成でぬるぽして駄目だったし… どうやら俺にはMOD制作は難しいらしい…
>>741 Bukkitもパケットやらあって難しいから人少ないのかな
746 :
名無しさんの野望 :2014/02/25(火) 12:45:51.84 ID:aP0FksR9
>>739 やってみたけど、そしたら翻訳そのものが適用外されなくなった…
他のMODを参考に作ったりもしてるけど未だ上手くいかず
ブロックを右クリックするとEntityを生成する、というのを作りたいのだけど、 サーバ側でspawnEntityしてもクライアントに反映されない…… 何か同期処理が必要なのかな
どうなんだろう。パケット追加しないとだめなのかなぁ
>>748 同じコードで、バニラのMobをスポーンさせると普通にクライアントにも同期されるんですよね
バニラのものも、全部パケットで同期されてるのかな
独自のEntityは自分で同期しないと駄目ということ?
あっ、NetworkModアノテーションを付け忘れてるだけだった…
稀によくある
752 :
名無しさんの野望 :2014/02/28(金) 20:00:38.37 ID:5ksug5TQ
教えてほしいんだけど、スキンを変更するmodってある?
無ければ作るってことじゃないの
植物追加したいなーと思ってModdingWiki見たら白紙でわろた 初心者には無理だとつげているのか…
スキン変更なら公式の使えば良くね? それかファイルを差し替えるか
もしかして:割れ
良くJava初心者でも簡単なModdingならできるって言われてるけど、何処から入ればいいんだろうか? Java開発環境はインストールしてあるから、IDEAでも入れればいいのかな
そういう「歩き方」はさすがにテンプレ見ろよ
エンティティIDの挙動は不思議だなー コンストラクタの時点ではクライアントとサーバで違ったりするのに、いつのまにか同期されるからIDを使った処理が面倒……
Javaは初めてで本も見たことないぐらいだったけど、プログラミングの基本?を覚えてたから単純なのだけどすぐ作れた ブロック追加アイテム追加食料追加モブ追加クイエイティブタブ追加地形生成 ぐらいなら
littlemaidmob1.6.4のリソース配置教えて欲しい テクスチャとか、モデルのクラスファイルとか。 マイクラの起動はするけど、メイドのスポーン時にぬるぽが出てダメだ。
疑問に思ったのでちょっと質問します モッドのテストさせる時、製品版のでやりませんよね あれって一応割れになっちゃってるんですかね? これは回答頂かなくてもいいのですが、あの技術でマイクラできちゃうって大問題ですよね
じゃあ回答しないわ 質問の意味も分からんし
>>764 自分のIDでやりませんよね。PlayerってIDで勝手にログインされますよね?
ってとこは製品版ではありませんよね?
Moddingの際のテスト起動は割れ行為になっているでしょうか。
という質問です。 分かりづらくてすいません。
VM引数にアカウントとパス追加すれば自分のアカウントで起動出来るよ 俺もそこんところはよく分からん
768 :
名無しさんの野望 :2014/03/01(土) 20:12:32.57 ID:2X2CKP3W
>>752 の者です。
char.png入れ替えたらできた。
今までスキンってmodで変えてると思ってた・・・www
>>757 割れじゃないよ。
あんな2000円くらい余裕でだせるwww
割れを使ってるやつの気持ちが分からん。
で、仮にもスキンを変更するmodって作れるのか?
mod作成の知識ないから・・・。ごめん・・・。
>>768 Minecraftの公式サイトでログインするじゃん?
"Profile"をクリックするじゃん?
……スキンのアップロードフォームがあるじゃん?
公式でやると無改造でいけるし、マルチならこっちじゃないと反映されないよ
シングルプレイでのスキンを変更するMODなら作れると思うよ 適用するテクスチャをダウンロードするんじゃなくてローカルのファイルを参照すればいいはずだから メリットがよくわからないんで誰も作らないだろうけど
マルチでかえるの無理なんかな? メイドさんみたいなグラフィックごと変えれる 鯖のMODあるじゃん。あれみたいな感じで・・・
>>771 二つ上のレスに答えがあると思うんだけど
絶対割れだろこいつ
割れじゃなきゃ公式使えばいいしな ネットに繋がってないならマルチ出来ないし・・・
別に割れだったら割れ鯖経由でテクスチャは変えれるんじゃないの?
そういう関連の記事はMOD探してる時に見かけたから。
>>770 シングルのはテクスチャ変更だけで出来ますね。
ModdingWikiは1.5.2向け情報っぽいけど1.6.4Forge環境を構築するのにも普通に応用できる?
ForgeGradleってのが1.6.4からあるから無理 WikiじゃなくてQiitaとかmodderのブログとか見た方がいい Gradleはすごく便利だけど、ややこしいからね ここで名前出すのはアレなので、適当にggって
Gradleの方法も載ってます
>>762 じゃないけど、俺も知りたい
いいMODだからもっと拡張して遊びたい
780 :
名無しさんの野望 :2014/03/02(日) 09:58:58.88 ID:Uzvjycr1
>>768 だけど、
本当だわ。
profileクリックしたら簡単にできたわ。
何かマジで関係ない事聞いてたみたい・・・。
ごめん。
後、modで気になったことなんだけど、ときどきmodダウンロードしたら、
zipファイルの時があるんだけど、あれってjarに変えずにそのまま使うの?
まぁ、変えても変えなくても反映されなかったんだけど。
PC初心者スレにでも行け
wikiを全ページ熟読してこい
反応無いって事は、誰も知らないのか フォーラムで聞いた方が早いかもな
そんな態度ならフォーラムでも教えては貰えないと思うぞ
あー
>>762 ってもしかして開発環境の作り方じゃなくて普通にMODの導入方法についてなのか
なら単にスレ違いじゃないか
便所の落書き相応の態度だろ なにカリカリしてんだか
MODのデコンパイルの仕方知ってる人いる? ちょっと書き換えたいんだけど、デコンパイルの情報が皆無でこまってる・・・
MODの画像がマイクラバージョン.javaのclassファイル追加する奴なのですが、 画像を変更したく、jd-guiでデコンパイルした後にコンパイルしなおそうとすると、 どうしても「シンボルがみつけられません。」とでてコンパイルできません。 助けてくださる方おられますか?
画像の変更だけならデコンパイルなんかしなくてもassetのフォルダの中身だけ変えればいいよ classファイルはそのまま使い回せばいい
forge#1024で言語変えてもUSに固定されて日本語に変更出来ず langで日本語に対応出来てるかわからんのだが
793 :
名無しさんの野望 :2014/03/03(月) 17:24:19.65 ID:z4EsddFn
Forge1.6.4での開発です ItemIDを5000ぐらいに設定したのですが、TooManyItemsで確認してみたら5200ぐらいに変動していました。 これは何かの仕様なのでしょうか? それとも設定が間違えていたりするのでしょうか? ちなみに500あたりに設定したブロック達は変動していません。 (Blockは0~5000 Itemは5000~30000 あたりに設定しろ と教えて頂いたのですが)
仕様でシヨウか
795 :
名無しさんの野望 :2014/03/03(月) 19:04:43.58 ID:z4EsddFn
>>794 すいません。ネタをあまり理解できない馬鹿者で。
仕様と言うことでこの問題は放置してもいいのでしょうか?
797 :
名無しさんの野望 :2014/03/03(月) 20:15:02.09 ID:z4EsddFn
仕様
>>791 外部URL参照なのですが、そのURL部分だけ変えて
コンパイルできればいけるかなーとおもったのですが・・・
assetフィルダも確認してみましたが、何も追加されてないようなので;
800 :
名無しさんの野望 :2014/03/03(月) 21:44:30.80 ID:z4EsddFn
>>789 func_12345とかfield_12345とか程度のソースでもいいなら
MCPのデコンパイラ(fernflower.jar)使えばいい
どうしても関数や変数名が知りたいなら手動reobfuscateでggr
適当なバージョンのMCPをダウンロード
.minecraft\versions のForgeのjarと.minecraft\libraries\net\minecraftforge にあるjar、さらにデコンパイルしたいMODを解凍して
中身を1個のzipに入れて圧縮して拡張子をjarにする
適当なフォルダを作ってそのjar放り込む
そのフォルダに新規txt作って中に次のように書く(MCPのディレクトリ等は適宜いじる)
java -jar C:\mcp903\runtime\bin\fernflower.jar C:\dec\(デコンパイル対象).jar C:\dec\src
保存したら拡張子をBATにしてダブルクリック
終わったら、srcフォルダの中にjarができてて、中にデコンパイル済みのjavaファイルがはいってる
基礎的な質問ですが失礼します。 forgeの1.7.2からはmcpはついてこないのでしょうか? 1.6.4までのforgeはminecraftのソースを参照しながら制作ができましたが、 1.7.2のforgeではどこにもminecraftのソースを見つけることができませんでした。 これは自分でmcpの1.7.2対応版を使ってデコンパイルして、 forgeのフォルダに置かなければならないということでしょうか?
ソースはあるが圧縮状態だからそのままだと参照しかできないかな
何とか出来たのでご報告
>>801 MCP調べてたら、開発版がでてたんでそれでなんとかなりました。
class書き換えで導入するものだったので、それを入れてmcp903でデコンパイル
必要な部分を書き換えてコンパイルしてぶち込んだら成功しました。
1.7.4 1.7.5もコレでできると思うので頑張ってみます。
>804です。 1.7.4 1.7.5ではやっぱりできませんでした・・・ CHICKEN JOCKEY PROBLEMS FIXとか作ってる人は どうやって既存classいじる手段を見つけてるんでしょう?
自力でデコンパイルして頑張ってるんだろ
それがJavaなのさ
出来なかったらMCPとか作れないでしょ
ソース見て理解できて実用化出来た時の快感
確かに分からなければMCPは作れないですよね;
大人しく対応まつしか自分には出来そうにないですわ・・・
>>810 うらやましぃ
簡易的なチェスト作ったんまが ブロックを壊した時に、インベントリに保存されてるアイテムを その場にドロップさせたはずなんだが なぜだかwestとsouthよりにドロップしちゃう breakBlock弄ればどうにかなるか?
1.6.4のEntityまわりのmodのチュートリアル・解説・ソース ってある?(英日問わず) forgeのチュートリアルも詳しくのってないし・・・。 とりあえずバニラのボートを魔改造して遊んでるけど、 物足りん。
815 :
名無しさんの野望 :2014/03/13(木) 16:23:54.58 ID:MwvhmolM
Mod作成って言うとアレなのですが、関連してくると思ったのでここで質問させていただきます。 皆様はアイテムやブロックを追加の際、テクスチャは自分で作っているのでしょうか? 自分で作ったり、募集スレとかで作ってもらったり、友人に作ってもらったり、しているのでしょうか? 一度とある人に頼んだら、そこらのテクスチャを持ってきたので頼むのは怖くて仕方ありません。(正直、そこまで有名なModのテクスチャではありませんが、知っている方に著作権だなんだ言われたので) 皆様はどのようにしてテクスチャを描いたり描いてもらったりしているのでしょうか。お教えください。
そらもうポチポチ自分で納得いくようドット打ってるよ まぁドット絵自体が趣味だからね 書いてもらいたいなら非公式フォーラムあたりで募集すれば? 作ってくれる奴がいるかどうかは別として、あそこだと無断二次使用とかばれるだろうからそういうのは持ってくる奴とか居ないだろうし
16x16ピクセルくらいなら絵心のない自分でも描けると思う
818 :
名無しさんの野望 :2014/03/13(木) 19:16:20.71 ID:MwvhmolM
>>816 >>817 ほう・・・・・
例えばですが、石とか土とか鉱石ブロックとか。すっごい細かいですが、色が違いますよね。
アレのやり方というか、何か裏ワザ的なのはありますか?
ちょっとそれてきちゃいましたが・・・
確かに石とか土とかの自然物テクスチャは難しいよな 裏ワザとかも特にないし だからやるならこまめに調整していきながらやるしかないかな まぁサイズが16だと表現の限界はどうしてもあるわけだからそこまで難しく考えずに色を置いていくと良いよ
820 :
名無しさんの野望 :2014/03/13(木) 21:04:48.04 ID:MwvhmolM
>>819 自分で選んでやっているんですか・・・ ビックリしました・・・。
頑張ってみます笑 ありがとうございます。
息抜きにテクスチャやるのがいい
>>914 thx
いろいろいじくってみるよ
あとオープンソースってことは
これを元にしてMODを作った場合、公開は許可を得なくても可能なの?
一応作者に報告したほうがいい?
オープンソースってのは自由に改造して再配布できるものを指すので、ソース公開してるだけじゃオープンソースとは限らない オープンソースじゃない単なる「ソース公開」だと、作者に許可を貰わない限り引用以外の再配布は違法になるんだよ法的には
テクスチャがどこから読み込まれるのか教えてください。
forge-1.6.4-9.11.1.965-srcで開発をしています。
自作ブロックのコンストラクタで
this.setTextureName("nishina:pink_block"); //ブロックのテクスチャの指定
と指定しています。
pink_block.pngは
\forge-1.6.4-9.11.1.965-src\forge\mcp\jars\assets\nishina\textures\blocks
と
\forge-1.6.4-9.11.1.965-src\forge\mcp\src\minecraft\assets\nishina\textures\blocks
に置いています。
startclientをしたところ、こちらの質問と同じピンクと黒のブロックが表示されました。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11113393041 startclientをしたときのassetsはどこから読み込まれるのでしょうか?
826 :
825 :2014/03/15(土) 13:32:12.65 ID:+HPf8o42
天地を逆さまにするMODとか楽しそうだけど作る技術がない
forge-1.6.4の最終版(965)で簡単なmod作ってたんだけども zipやらjarに配布用で出力する方法がいまいち分からない mcpとeclipse(pleiades)で開発してるんだけどeclipseからテストプレイする時は正常に適用されて動く その後バージョンやサイトによって手順ばらばらでどれが参考にするのが正しいのか分からないけど ○○.batやって△△.batやったら出てくる(これ自体もサイトによって地味に違う)ってのに従って 出て来たのがフォルダだからzipに固めてゲームで使ってる方のmodフォルダにぶちこむとエラー 先人様1.6.4のforge環境の出力まで手順書いてる参考URLとか無いですか だいたいが「以上、こういう風に環境構築してあとは好きにmod作ればおk」で終わってたり 「こうしたらフォルダに変なのが出てくるよ」っていう感じ終わってて困ってます
829 :
825 :2014/03/16(日) 15:45:45.25 ID:ykNE9oVN
ちょうど私もforge-1.6.4-9.11.1.965で開発しています。
ただeclipseは使ってません。
テストプレイに成功したということは、
forge\mcp\bin
の下に自分が作った*.javaに対応する*.classができてますか?
それができていたら次はreobfuscate.batを実行します。
forge\mcp\reobf
の下に*.classができるはず。
で、その*.classファイルをテクスチャ等と一緒にjarファイルへ入れるわけですが、
*.classはどこにおいてもForgeのクラスローダーが見つけて読み込んでくれるんじゃなかったかな?
テクスチャはassetの下の所定の場所に置かなければならないはず。
http://nishina2525.cocolog-nifty.com/blog/2014/03/minecraft-mod-7.html のnishina.jar解凍してファイル配置を参考にしてみてください。
(まだ無機能ブロック1個を追加するレベルですが)
831 :
825 :2014/03/16(日) 17:52:48.02 ID:ykNE9oVN
抹茶w 料理系MOD?
チュートリアル一通り終わらせた! これらのMODを一まとめにしたいんだけど、どうすればいいのやら @MODつけまくってmodsの中がごちゃごちゃしてるわ
同じパケにぶちこんで@Modのやつはどれか1つのファイルでいけるはず
ああそうか半角スペースだとインデント消えるの忘れてた 見づらくて申し訳ないです
Block.javaがメンバ変数としてblock_a、block_bを持つのはおかしいんじゃないかな。 独自ブロックを定義するクラスがBlockだとバニラのクラスと重複するので チュートリアルに習ってBlockSample.javaだとするけど、 BlockCore.javaの方で block_a = new BlockSample(1000, Material.rock); block_b = new BlockSample(1001, Material.rock); として、BlockSampleのコンストラクタを2回呼び出す。 BlockSampleのコンストラクタはif文で切り替える。 public class BlockSample extends Block { public BlockSample(int par1, Material par2Material) { super(par1, par2Material); this.setCreativeTab(CreativeTabs.tabBlock);//クリエイティブタブの選択 if( par1 == 1000) this.setUnlocalizedName("blockSample_a"); //システム名の設定 else this.setUnlocalizedName("blockSample_b");
837 :
836 :2014/03/18(火) 00:52:35.66 ID:UNZ9NEJP
>>836 は無かったことにしてください。
独自クラスはBlockSetなんですね。でもファイル名をBlockSet.javaにしないと。
class BlockSetがメンバ変数としてblock_a、block_bを持つのはおかしいんじゃないかな。
BlockCore.javaの方で
block_a = new BlockSet(1000, Material.rock);
block_b = new BlockSet(1001, Material.rock);
として、BlockSetのコンストラクタを2回呼び出す。
BlockSetのコンストラクタはif文で切り替える。
public class BlockSet extends Block
{
int id;
public BlockSet(int par1, Material par2Material)
{
id = par1; // idを保存しておいて他のメソッドでもifで切り替える
super(par1, par2Material);
this.setCreativeTab(CreativeTabs.tabBlock);//クリエイティブタブの選択
if( par1 == 1000) // idで切り替え
this.setUnlocalizedName("blockSample_a"); //システム名の設定
else
this.setUnlocalizedName("blockSample_b");
(中略)
public int idDropped(int metadata, Random rand, int fortune)
{
if( id == 1000) // 保存しておいたidを使ってここでも切り替え
メタじゃダメなん? BlockCore.javaの方で block_a = new BlockSet(1000, Material.rock)setUnlocalizedName("blockSample_a"); block_b = new BlockSet(1001, Material.rock).setUnlocalizedName("blockSample_b"); とかはBlockSetでやってないからダメか
839 :
836 :2014/03/18(火) 01:04:13.68 ID:UNZ9NEJP
私も教えてください。
forge-1.6.4-9.11.1.965-srcにおいて、デコンパイルする方法を教えてください。
とりあえずの目標はMOD(ID Checker)のソースを読むことです。
個別classファイルをデコンパイルするツールはあるらしいのですが、
forge+mcpの環境においてデコンパイル←→リコンパイルできるようになれば
動作確認もしやすくて良いかな、と。
forge-1.6.4-9.11.1.965-src.zipを展開してinstallを実行。
直後に(MOD等導入せず)decompile.batを実行しても
大量のエラーを吐きます。どこを直せばよいでしょうか?
エラーメッセージはこちらの末尾にリンクを張りました。
http://nishina2525.cocolog-nifty.com/blog/2014/03/minecraft-mo-10.html
難読化されたままでいいならjd-guiとかでいいと思うが、名前戻したいならわからん
>>836 回答thxです。長文失礼します
Block.javaは素でネーミングミスしました
既存クラス書き換える気は毛頭ないです申し訳ない
最初は同じくifを使うその切り替え式アプローチで試していたのですが
エラー(文法エラーではなくテストプレイのクライアントがMOJANG画面後に落ちる)が出ました
素人考えで予想するにはどうも「this.set○○」で「this」を使っている為にどちらのブロックも
BlockSampleに対し重複して情報がセットされている気もします
もしくはthisは問題なく私が別の場所でミスしている可能性も大いにあり得るのが何とも
他に自分で書いていて怪しく思ったのは「if(par1==1000)」のID比較部分です
最終的には私も数値で比較する事で妥協している状態に落ち着いているのですが
当初は「if(par1==blockA_ID)」の様に比較してこれは流石に何かが違うと思い「if(par1.equals(blockA_ID))」で試した時、
「equals() を基本タイプ int で起動できません」というエラーが出ました。
(当然Coreのフィールドを確認しても「public static int blockA_ID = 1000;」でIntです)
更新押してからレスすれば良かった……orz
844 :
834 :2014/03/18(火) 11:23:35.23 ID:DJr1ipan
なんとか綺麗に纏める事が出来て解決しました
>>843 もありがとうございます以後参考にさせてもらいます
>>840 回答ありがとうございます。
ほかのアプローチを試します。
>>845 どんなことをしてるのかわかればいい場合が大半のはずなので間に合うかなーと
作物の上でジャンプすると小麦と種がドロップする仕様になってるけど、 それってどこで動いてるん? BlockCropsみてもいまいち
すいません自己解決しました。 BlockBushのgetPlantTypeなのね
forge-1.7.2-10.12.0.1034でMOD作ってリリースファイル作ろうとしたらエラー吐きやがった 誰か知恵を頼む FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':reobf'. > MALFORMED * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 8.747 secs
下のオプションつけてみろって試した?
どうやらjp_JPに反応してたみたいです _が_だったのが原因でした
細かいけど ja_JP な
これから環境整えてお勉強しようと思ってるんですが、 1.6.か1.7.どちらがいいのでしょうか
>>853 しばらく1.6で留まろうとしてたけどAE2が来て事情が変わったわ
1 . 7 は じ ま っ た な
勉強に使うなら1.6のほうが情報多いからいいかも でも、Forge1.6にあったModLoaderの名残が1.7.2で無くなってたりしてて 情報の見極めは必要かもなぁ
>>854 >>855 ありがとうございます
とりあえず1.6で始めて、
情報が増えるにあわせて1.7にうつることにします
TileEntityを勉強中でBlockNote.java、TileEntityNote.javaあたりを読んでいます。
2つ質問させてください。
1. BlockNote.onBlockClickedで直接音を鳴らさないのはなぜでしょうか?
TileEntityNote.triggerNoteでいったんWorld.addBlockEventを呼び、
BlockNote.onBlockEventReceivedで受け取ってから音を鳴らすことに、
何か意味があるのでしょうか。
2, TileEntityの内容をセーブするにはどうしたらよいですか?
NBTTagCompound.setIntegerとNBTTagCompound.getIntegerが
セーブロードをしてくれるのではないのでしょうか。
現状ではゲームを再起動するとTileEntityのフィールドが初期化されてしまいます。
現在のソースはこんな感じです。
http://nishina2525.cocolog-nifty.com/blog/2014/03/minecraft-mo-12.html
Ebon mod、作者がオープンソースを明言しているのですが、ライセンスについての記述が見当たりません。 このような時はどのようなライセンスに準じてソースを使用すれば良いのでしょうか?
>>857 2のほう
任意にデータ更新するときはonInventoryChangedを呼ぶ必要がった気が
>>859 回答ありがとうございます。
試してみます。
質問させてください。 現在縦2ブロックの追加ブロックを作ろうとしています。 当たり判定や、視覚的には縦2ブロックのブロックの追加に成功したのですが、 ドアのように、上段を選択することが出来ません。 Javadocやソースを眺めていても、 それらしき関数を見つけられませんでした。
ドアは2ブロック分おいてることになってるはずだけど、そういうことじゃなければわからない
>>863 ありがとうございます。
やりたいことが出来ました。
質問失礼します。 乗り物系のentityを制作しているのですが、 そのentityを設置すると少しの間は表示されるのですが、 そのあとすぐに消えてしまいます。 調べてみるとその場所には一応そのentityの当たり判定はのこっているのですが、 表示がされていないのです。 わかる範囲では調べたのですが原因がわかりません。 もし分かる人がいればご教授をおねがいします。
(旧版)IC2:純潔なIC2 IC2ex:魔の手に汚されたIC2 IC2+Greg:もはや悪堕ちしたIC2
くたばりな
以前ここで質問させてもらった者です。 あれから一応自己解決することができました。 失礼しました。
いやいや、どこをどうやってどう解決したのか
互助会だからね
どの書き込みかすらわからん
なんとかチュートリアルでブロックを追加する所まで出来ました。
作りたいブロックが一部だけ半透明のブロックなのですがどのように作れば良いかわかりません
埋め込み式のメーターのようにガラス張りで開いた穴の内部が見えるようにしたいです。
その内部が光源にできればなお良いのですが...
テクスチャで再現し、通常ブロックで作るのは難しそうでしたので質問させていただきます。比較的近いブロックはビーコンでしょうか? モデリングが必要ならばしようと思っています
http://i.imgur.com/vZtE0vt.jpg
874 :
名無しさんの野望 :2014/04/29(火) 17:55:06.34 ID:aYO9IZKY
マジで困ってます。誰か助けてください。 eclipseでコード書いて実行してみてうまくいったので、recompileのあとreobfuscate行い、 reobfファイルの中にきちんとクラスが出力でき、出力されたクラスを○○MOD.v,1.0.0/○○MOD/○○MODに置いて zip化し、.minecraft/modsにぶちこんでマインクラフトを起動してみたんですが、 しばらくMojangの画面が出た後勝手に閉じてしまいそのままランチャーに戻ってしまうのを繰り返してしまいます。 クラッシュレポートは出てこないでそうなってしまうので、原因が全くわかりません。 どなたか解決策をご存知の方がおりましたらご教授願います。
875 :
874 :2014/04/29(火) 17:59:46.98 ID:aYO9IZKY
書き忘れました。 マインクラフトのバージョンは1.6.4でforgeのバージョンは9.11.1.953 レシピ追加のクラスを出力しました。
何故1.6.4最終安定板の965使ってないの?
877 :
874 :2014/04/29(火) 18:40:19.74 ID:aYO9IZKY
>>876 Forgeをダウンロードするときのダウンロードページを1.1〜1.6.4の
ページにしていましてその中の最新のものをダウンロードしていました
それが最終版だと勝手に思い込んでいました。
OptifineやFPS++のバージョンの兼ね合いで953メインの人も多いのではないだろうか
>>874 そもそも実環境にForge入ってるならクラッシュレポート表示されなくても
ForgeModLoader-client-x.logに出力されてるんじゃないの?
あと、大抵eclipseで動いたけど実環境で動かなかったの系は、
zip(jar)化したときにフォルダの階層間違えてる事が多いかな
880 :
874 :2014/04/30(水) 23:16:06.67 ID:lcgMuTlk
>>879 クラッシュレポート出力されていました。申し訳ありません。
○○.zip/○○/○○.classでレシピ追加のクラスを配置したのですがこれは間違いでしょうか?
クラッシュレポートは?
882 :
874 :2014/05/01(木) 00:14:58.90 ID:bUzynAPi
883 :
874 :2014/05/01(木) 01:00:56.56 ID:bUzynAPi
フォルダの階層を見直してみたら解決しました! 本当にありがとうございます!
LittleMaidMobをどうにかしようと思って触ってたら
>>744 >>762 と同じ状態になったw
MMM_TextureManagerがdefaultTexturesを正常に読み出せてないっぽい?
リソースの配置が悪いんかなー
良いmodだし気前よくソース出してくれてるから
弄って遊んでみたいんだけど、難しいね
どうやったら戦闘が楽しくなるMODが作れるのか。 遠距離攻撃の充実?
自分で面白いと思う戦闘があるゲームをパクって実装すればいいよ 基本の戦闘システム流用する限り武器防具増やしたところでどうしようもねぇ
確かにね。 左右後のダブルタップでドッジとか簡単に追加できそうだからやってみようかな。 1.7xのMCPなかなか出ないな。
...きゅーぶわーるど(小声)
889 :
名無しさんの野望 :2014/05/10(土) 01:13:08.18 ID:EZHaVh9t
質問いいですか
891 :
名無しさんの野望 :2014/05/10(土) 10:21:19.48 ID:EZHaVh9t
ガチの質問かよ
結局ここ需要あるん?
聞きたい内容がまとまるくらい理解が深まってたら だいたい聞かなくても解るというのが世の常 逆に言うとこういうスレは、調べれば解ることでも 気軽に聞いてみるという使い方が正解のような気がする
895 :
名無しさんの野望 :2014/05/10(土) 16:09:17.44 ID:EZHaVh9t
今 1.6.4の環境を組んでるだけどEclipseの設定がうまくいかないんだ。 ここからどうすればいいかな?2ch-ita.net/upfiles/file12331.png
>>895 よく解からんけど、JDKはインストールした?
Modding wikiはJDK6でやれって書いてあるけど俺はJDK7使ってる
→「JDK7」で検索
んで環境変数の設定はした?
→「JDK 環境変数 windows7」とかで検索
Forgeのinstall.cmd実行した時に
Download of minecraft_server.1.6.4.jar failed hash checkとかエラー文が出なかった?
→「forge-1.6.4-9.11.1.965 の開発環境構築について」で検索
Eclipseそのものの設定はする必要ないはず
ワークスペースの指定で「ほにゃらら\forge\mcp\eclipse」を入力すれば
あとはもう何もしなくてもテスト実行出来る環境のはずだよ
897 :
名無しさんの野望 :2014/05/10(土) 16:53:15.51 ID:EZHaVh9t
>>896 JDKは8入れた
環境変数もやった
Forgeはmodスレで教えてもらったから文字列変えたし
もしかしたら環境変数の設定が上手く行ってないのかJDKが7じゃなきゃダメなのかな
>>897 ってかなんで1.6.3.jarなんて要求されてるんだろう
Forgeのソースforge-1.6.4-9.11.1.965-src.zipを使ってるなら
当然1.6.4.jarが要求されるはずだけど。
JDK8でも動くうとは思うけど詳しくは解からん。
それよりそもそもforgeのinstall.cmdで失敗してるように見える
965ならgradleは使わないでいいはずだし・・・
899 :
名無しさんの野望 :2014/05/10(土) 19:14:06.36 ID:EZHaVh9t
>>898 うーん どっかで手順間違えたのかな...
よく見落としたりするからな俺...
forgeのソースがあるフォルダまでのPathに日本語名とかスペース入ってるとか Windowsの権限管理とかでファイル生成が出来てないとか zipの解凍ソフトが悪くてファイルが足りてないとか Minecraftの普通のゲームランチャーで該当verの プロファイルを作るとか要らなかったっけかな? あとまあとにかくinstall.cmdのログなりで変なエラー出てないか確認するとか、 ダブルクリックで実行じゃなくてコマンドプロンプトから実行してきちんと見る スクロールして見れないとかならinstall.cmd >log.txtとかで実行してファイルに落とす (進行状況見えなくなるけど) 思いつくのはそんなもん
901 :
名無しさんの野望 :2014/05/10(土) 20:52:28.07 ID:EZHaVh9t
構築環境 OS Windows8.1 UP1 CPU i7-3770k 使用するもの JDK 8u5 mpc 811 forge-1.6.4-9.11.1.965-src.zip Eclipse 4.3 環境構築手順 1 JDK ダウンロード 2 JDKインストール 環境変数変更 3 MPC ダウンロード 4 MPC 解凍 展開 5 Forge ダウンロード 6 Forge 展開 一部文字列変更 7 install.cmd 実行 コマンドプロント確認 8 Eclipse実行 9 終了 こんな感じでもう一度やって見ます 多分環境変数とForgeあたりが原因だと思います
ん?Forgeのinstallコマンドでmcpも勝手にダウンロードしてくれるから 自前でmpcダウンロードする必要ないよ decompileもリソース配置もrecompileも全部Forgeがやってくれる
eclipseならforge-1.6.4-9.11.1.964のgradle使えばいい forge gradle eclipse でググればいくつか日本語の記事が出てくる 1.7向けはgradle必須になっているから今から慣れておいたほうがいいと思う 開発するmod毎にソースを分けられるから便利よ
904 :
名無しさんの野望 :2014/05/10(土) 22:43:57.20 ID:EZHaVh9t
905 :
名無しさんの野望 :2014/05/11(日) 00:28:55.29 ID:fMGR1cNd
せめてスクショ撮れよw
スクショも取れないほどPCの基本操作怪しいってレベルだと 流石にMod作成に手を出すのは……という不安がある
珍しく伸びてると思ったら直撮り君か
リアル画面撮影久々に見たわw
そろそろ次スレの季節だが次スレ要る?
次スレは欲しいな
>>2 の1.6.4のチュートリアルがあるModdingWikiとかも最近更新されてない気がするし
もう50レスほど伸びたらその時もっかい考えりゃよくね
とりあえずテンプレをどうにかしないとな
テンプレ作っても精々modding wikiのURL載せるくらいじゃないだろうか ところでRendererLivingEntity.setRenderPassModel(ModelBase par1ModelBase) って設定できるPassModelって具体的にどういう時に使われるの? Sets the model to be used in the current render pass (the first render pass is done after the primary model is rendered) ってコメント付いてるけど意味がよくわかんない
917 :
905 :2014/05/17(土) 12:39:56.53 ID:+507qbU2
問題タブ見るたびにいつも思うんだが EntityLivingBaseのpar2 = par2;って何なの
920 :
名無しさんの野望 :2014/05/17(土) 15:23:19.68 ID:+507qbU2
大方のMODが1.6.4で更新止まってるのってなんか理由あるの?
あるよ
主要なmodは殆ど1.7.2に移行してるんじゃない? むしろ止まるのは1.6.4の更新かと 1.7.2が遅れてるのはLMMやGoG2なんかのEntity周りのコードが多いmodかな
1.8なんでまた遅れてるんだろ modderはもうSSでの開発環境を作って対応作業終えてたりするんだろうか 何もしてないからそわそわしてしかたない
Pixelmonを個人的に日本語化して遊びたくてソース覗いてるんだけど やっぱり難しいな・・・ そういえばminecraftって、他の海外ゲームmodみたいに日本語化されてるものがほとんど無いよね? 本体は日本語対応してるのに、modの日本語化って難しいのかな?
langファイルで日本語化すりゃいいんじゃねーの? 対応してないのがほとんどないってのはminecraftはmodの数多いから仕方ないんじゃね それでも有名どころはなんだかんだで大体公式非公式合わせて日本語化されてるしな そう難しいことじゃない
BCって日本語対応してたよね?
928 :
S :2014/05/25(日) 22:54:00.70 ID:oGmgMfBg
>>925 LanguageRegistry.addName(〜, "・・・・");
こんな文があれば
LanguageRegistry.instance().addNameForObject(〜, "ja_JP", "・・・・");
こう書けばできるんだけど…
見当たらない…
langファイルがあれば、中身翻訳するだけなので簡単ですよー
>>926 langファイルがあるやつならそうですが、ないやつはそうとはいかないんですよ…
>>927 してますよー
langファイルが無いってsetUnlocalizedNameとかで 設定した文字列がそのまんま表示されてんのかな
Forgeの機能を素直に使っているならLangファイル作ってあげれば適用される LanguageRegistry.addName が無くても GameRegistry.registerItem又はregisterBlock を使っていれば言語ファイルでほぼ対応可能。 IDwakander で UnlocalizedName を調べればいい。 一番めんどくさいのはローカライズの部分を自分で実装しているmod。 これは本当にめんどくさい。
あー訂正
ソースのほうで LanguageRegistry.addName している奴は無理くさい
>>928 の通りにソースに日本語の記述を追加しないとあかんな。
>>925 多分必要性が低いからじゃない?
俺も英語サッパリ分からないけど日本wikiあるから全く困らないな
ゲーム中も英文読む場面なんてAM2とかtinkerの本くらいしかないしな
しかも読まなくても遊ぶ上で不自由はないし
Player***の中にはいきりたってる奴もあるだろ Mod作ってるときにたまに引く
936 :
名無しさんの野望 :2014/06/09(月) 23:19:58.40 ID:2hxbkKLX
質問させていただきます FFMの化学肥料のレシピを追加するMODを作ろうと思っているんですがFFMのitemの参照先が分かりません…
>>936 FFMは知らんけど、他modのアイテムのインスタンスを得るなら
@Mod.EventHandler
public void postInit(FMLPostInitializationEvent event) {
Item a = GameRegistry.findItem(modId, name);
Block b = GameRegistry.findBlock(modId, name);
}
とかじゃないかな。
他modと連携考えたことないから、どういうのが一般的かはよく知らない。
レシピ追加形MODを作ろうとしていてclassファイルをつくったあとどうしたらいいんですか?mcmod.infoとか色々要るようですけど
classのパッケージ階層に合わせてフォルダを作ってzipで圧縮する。 mcmod.infoは必ずしも必要ではなかったと思うけど、 他の適当なmodを解凍して真似するのが一番わかり易い。
package net.minecraft.sec.mods; の場合 MOD.zip/net/minecraft/sec/mods/.classですか?
水流って内部名称とかあったりする? getBlockで水流があるかどうか取得したいんだけど、やっぱり水源のみ取得するべきなんだろうか
waterMovingのこと?
getBlockIDじゃなくてgetBlockって言ってるってことは1.7.2だから Blocks.flowing_waterかな ところで world.getBlock(x, y, x).equals(Blocks.flowing_water) と world.getBlock(x, y, x) == Blocks.flowing_water って処理速度的に差はあるんだろうか。 オブジェクトの比較は.equalsでやるもんだと思ってたけど マイクラのソースん中でも普通に==で比較してるんだよね
なんだx, y , xって、x, y, zね
>>943 遅レスすまん、助かったよありがとう
郷に入っては郷に従えってことで == で比較するようにはしてるなぁ
world.getBlock(x, y, x)がnullだったらマズイってのもあるか・・・ 値比較じゃなくてアドレス比較だから==でもOKとかそんな感じ? よくわからん。 そんなことよりなんでBlock.getItemだけSide.CLIENTなのおおお FoodStats.addStatsは指定ないのに FoodStats.setFoodLevelはSide.CLIENTなのはなんでやねえええん くそがーー
メタデータがないブロックに対してメタデータを取得した場合って0かnullのどっちが返ってくるんだろう
0
うおーー できねー なんでだー コマンドプロントのgradlew setupDecompWorkspace --refresh-dependencies eclipse がgreadlewは、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはパッチ ファイルとして認識されません。 とかでます 助けてー―――――――――――――――――――――――
いいからsageろ
gradlew.batがあるんだからそのメッセージが出る事はあり得ないんだけどな ディレクトリの移動すら出来てないんじゃないだろうか
1.7.2 forge導入済みのmods list画面に表示される"Config" "Disabled"ボタンの"Disabled"が何故か赤文字で表示されるんだけど、何が影響してるのか、またその解決法わかる人いるだろうか coremodsとして作れば仕様らしいけど、そういった手法使ってないから自分ではお手上げ状態なんだ 一応modとしては問題なく動くんだけど悔しすぎて仕事が手につかないよ
>>953 解決はしてないけどその後のことレスしとく
coremodじゃなくてもDisabledボタンが赤文字になる現象は1.7.2の他modでも確認出来たのでforgeの仕様っぽい
マルチ対応のmodが赤く表示されるんかな?もしかするとだけれども
次スレどうする?
スレ進行は遅いけど需要がない訳じゃないしたてた方がいいんかな?
980辺りでいいかな?
次スレ
>>980 ぐらいからで良さそうだな
テンプレは
>>61 で良いんじゃないだろうか
moddingスレだからツール・Plugin作成云々はいらんと思うけど
>>958 情報集約的な意味でまとめてもいいんじゃないか?ツール作成の質問なんて少ないだろうが
コード読み込みとか解析とかするなら内部ツールも外部ツールもそんなに変わらんとは思う
>>959 958はそれもmoddingに含まれるからわざわざ書かなくても良いんじゃねって意味じゃね?
>>960 確かにそうだな、余計な口出ししてすまんかった
ぶったぎってすまん。14w27aでブロック関係の関数の仕様がまた大幅変更・・・めんどくせぇ 今まで World.setBlock(int x, int y, int z, Block BlockId, int Meta, int flag) 使用例 土の設置 World.setBlock(x, y, z, Blocks.Dirt, 0, 2); ジャングルの木材の設置(メタ情報あり) World.setBlock(x, y, z, Blocks.Planks, Planks.Jungle.GetIndex(), 2); 14w27a World.setBlock(int x, int y, int z, BlockData data, int flag) 使用例 土の設置 World.setBlock(x, y, z, Blocks.Dirt.ToData(), 2) ジャングルの木材の設置(メタ情報あり) World.setBlock(x, y, z, Blocks.Planks.ToData(Planks.Jungle.GetIndex()), 2)
>>963 冗長なコードだなぁよく使うものなのに何でだろ
1.8までにもっと使いやすくならんかな
idなくなったからメタデータに変更した、だけ?
簡略化して便利にしたつもりだと思うんだが Blocks.Planks . ToData( <ジャングルのメタ番号> ) はできるが Blocks.FromID( <木材のID> ) Blocks.FromName( <木材の名前> ) という関数はまだ存在するが Blocks.FromID( <木材のID> ) . ToData( <ジャングルのメタ番号> ) こういう使い方ができない Blocks.FromName( "jungle_planks" ) . ToData() 今後はこう書けよってことじゃないのかな
クリック処理でsetPositionでentityを動かしたいんだけど、NBTに登録した座標をsetPositionに値を渡す以外にやることってある? NBTの値を渡すだけだと、entityが消えてなくなるんだ
1.7.10だとMCP使ったデコンパイルが出来ないのって俺だけ? 公式のnews欄にあったやつDLして使ったんだけど libraries??tv??twitch-external-platform??4.5 のコピーに失敗しましたって言われる(先に手動でコピーしといても同じ) 1.6.4の方は問題なく使えたんだけども
>>968 1.7.10は少しいままでと違うみたい
どう違うかはわからないけどごめんね
1.7.7からシンボルが変わってるよ
私もjavaの入門的にmoddingを始めた初心者なのですが、
>>968 と同じ状態です。
シンボルってなんでしょうか?説明の難しい語句ならば、検索用のワードだけでも教えていただければ幸いです。
mc908だよね realmsのバージョンちがいくらいしかひっかからなかったけど ついでに他のModもデコンパイルしたらってこと?
>>972 上の人は分かりませんが、私は完全バニラです
コピー出来ないって言われてるフォルダもたぶん同じです
>>971 ネタか何かか?
ネットでJAVA調べながらってのも良いけど
何か初心者用の本買った方が良いぞ
classとかmethodとかしっかり書いてるのがいい
java シンボル
でググってみろよ