約 2,901,103 件
https://w.atwiki.jp/cyclo-cross/pages/34.html
VOODOO モデル名 Wazoo 【メーカーHP】 定価 ¥161,700 重量 ? フレーム VooDoo Black Magic double-butted heat-treated thin-wall cro-mo steel tubing main tubes and stays. フォーク Evo Carbon Cross ヘッドセット FSA Orbit X ハンドルバー Ritchey Logic ステム Ritchey 4-bolt F.メカ Shimano FD-4503 R.メカ Shimano Tiagra シフター Shimano Tiagra Dual Control ブレーキレバー Shimano Tiagra Dual Control 補助ブレーキレバー ? ブレーキ Avid Shorty 4 Cantilever チェーン Shimano CN-HG53 チェーンホイール FSA Omega Mega EXO 34-50T Compact B.Bセット ? サドル WTB Rocket V Comp シートポスト Ritchey F.ハブ A-Class Citi D1.1 R.ハブ A-Class Citi D1.1 スポーク A-Class Citi D1.1 リム A-Class Citi D1.1 フリーホイール Shimano HG70 12-25 9 Speed タイヤ WTB Cross Wolf Comp 32C ペダル Xpedo SL Cro-Mo F.ダボ穴 ? R.ダボ穴 ? ボトル取付場所 2 カラー Bottle Blue サイズ 50,53,56,58,61,64cm
https://w.atwiki.jp/sharak-models/
total - ! today - ! RSS変更のお知らせ 1 item(s) Last-Modified 2008/06/11 20 50 52
https://w.atwiki.jp/v2cwiki/pages/141.html
目次 ローカル板について ローカル板の作成 ローカルスレッドにこのレスを追加 書き込み内容をローカルスレッドに保存 ローカル板関連のスクリプトimageExtract.js sortResThread.js newresthread.js ImageResThread.js resExtract.js ローカル板の活用 ローカル板について 参照: V2C 使用法 ユーザ定義板・ローカル板 の「ローカル板」 ローカル板とは、ローカルに作成されたWebを介さない自分だけの板のことです。ユーザ定義板一覧に作成できます。その板内では、ローカルスレッドとして、新規スレッドを立て、書き込むことができます。メモをはじめ、日記やリンク集、AA倉庫として活用することができます。また、通常のスレッドから、気に入ったレスを、ローカルスレッドへスクラップすることや、自分が2ちゃんねるに書き込んだレスを自動で送ることもできます。 参考: 窓の杜 ローカルに自分専用の板を作成できる2ちゃんねるブラウザー「V2C」v2.4.0 ローカル板の作成 板一覧「ユーザ定義」タブを開く。 ローカル板を作成したい場所で「右クリック」→「ローカル板の作成」。 板の名称と、ログを保管するフォルダの名称を入力。 ローカルスレッドにこのレスを追加 ローカル板のローカルスレッドに、気に入ったレスをスクラップしておくことができます。 使い方ローカル板、及びローカルスレッドを作成してあることを確認。 スクラップしたいレスのレス番号上から「右クリック」→「ローカルスレッド」→「このレスを追加」 スクラップ先のローカルスレッドを選択。 書き込み内容をローカルスレッドに保存 参照: V2C 使用法 書き込み設定 の「書き込み内容をローカルスレッドに保存」」 ローカル板のローカルスレッドに、自分が2ちゃんねるに書き込んだレスを自動で保存しておくことができます。 使い方き込み履歴を残すローカル板を用意。ここでは仮に、板名:書き込み、フォルダ名:kakikomi、として登録する。 メニュー」→「設定」→「書き込み」→「一般」→「書き込み内容をローカルスレッドに保存」にチェックを入れる。 らにその下のリストボックスから”書き込み”板を選択し、スレの切り替え条件を選択する。 これで準備完了。次回書き込みの際には、自動で書き込み板に新規スレッドが立ち、書き込み内容が保存される。 ※他のローカル板への書き込みには、この機能は適用されません。 関連項目: Jane互換ファイルの「kakikomi.txt」 ローカル板関連のスクリプト ローカル板を活用するためのスクリプトを以下に紹介します。スクリプトのダウンロードはスクリプト一覧から、設定はスクリプトを参考にしてください。 imageExtract.js + imageExtract.js を展開 概要 ローカル板の機能拡張スクリプト。開いているスレッドから画像が含まれるレスのみを抽出し、ローカルスレッドを作成する。 元レス http //yy61.60.kg/test/read.cgi/v2cj/1252074124/851 設定方法 こちらの移動先にある『imageExtract.js』から同ファイルをダウンロードします。 その後の設定方法については スクリプトの「設定方法」 を参考にしてください。 【登録場所】 全体・レス表示 【ラベル】 画像レスまとめ(単スレ) 【コマンド】 ${SCRIPT Fw} imageExtract.js ローカル板のフォルダ コメント 名前 コメント sortResThread.js + sortResThread.js を展開 概要 ローカル板の機能拡張スクリプト。レス表示欄に開いているTwitter、ローカル板以外の全てのスレッドから、レスを時間順にソートしてまとめ、ローカルスレッドを作成する。また、アクティブなローカルスレッドに対して使用すると、そのレス順を時間でソートすることができる。 元レス http //yy61.60.kg/test/read.cgi/v2cj/1252074124/670,672 設定方法 こちらの移動先にある『sortResThread.js』から同ファイルをダウンロードします。 その後の設定方法については スクリプトの「設定方法」 を参考にしてください。 【登録場所】 全体・レス表示 【ラベル】 ソートしてまとめ 【コマンド】 ${SCRIPT Fw} sortResThread.js ローカル板のフォルダ コメント 名前 コメント newresthread.js + newresthread.js を展開 概要 ローカル板の機能拡張スクリプト。レス表示欄に開いている全ての未読有スレッドから、新着レスをまとめ、ローカルスレッドを作成する。 元レス http //yy61.60.kg/test/read.cgi/v2cj/1252074124/646,649 設定方法 こちらの移動先にある『newresthread.js』から同ファイルをダウンロードします。 その後の設定方法については スクリプトの「設定方法」 を参考にしてください。 【登録場所】 全体・レス表示 【ラベル】 新着レスまとめ 【コマンド】 ${SCRIPT Fw} newresthread.js ローカル板のフォルダ コメント 名前 コメント ImageResThread.js + ImageResThread.js を展開 概要 ローカル板の機能拡張スクリプト。レス表示欄に開いているTwitter、ローカル板以外全てのスレッドから、画像が含まれるレスをまとめ、ローカルスレッドを作成する。スレを横断して画像表示ウィンドウやサムネイルモードで一括表示させたい時にどうぞ。 元レス http //yy61.60.kg/test/read.cgi/v2cj/1252074124/647,650 設定方法 こちらの移動先にある『ImageResThread.js』から同ファイルをダウンロードします。 その後の設定方法については スクリプトの「設定方法」 を参考にしてください。 【登録場所】 全体・レス表示 【ラベル】 画像レスまとめ 【コマンド】 ${SCRIPT Fw} ImageResThread.js ローカル板のフォルダ名 コメント 名前 コメント resExtract.js + resExtract.js を展開 概要 ローカル板の機能拡張スクリプト。アクティブなスレッドから、選択単語or指定単語が含まれるレスを抽出し、ローカルスレッドを作成する。 備考 レス表示から実行する場合検索ボックスを表示します。 正規表現は不可。 抽出の検索対象は本文のみ。 元レス http //yy61.60.kg/test/read.cgi/v2cj/1252074124/651 設定方法 こちらの移動先にある『resExtract.js』から同ファイルをダウンロードします。 その後の設定方法については スクリプトの「設定方法」 を参考にしてください。 【登録場所】 全体・レス表示・選択テキスト 【ラベル】 選択単語でレス抽出 指定単語でレス抽出 【コマンド】 ${SCRIPT Fw} resExtract.js ローカル板のフォルダ名 コメント 名前 コメント ローカル板の活用 + ローカル板の活用 を展開 ローカル板活用法投稿フォーム ※wikiのリンクや画像を表示する機能を使いたい方は、投稿フォームからではなく、直接本ページを編集して投稿してください。 (投稿フォーム仕様:1レスにつき10行、1500文字まで) コメント テスト専用のスレを立てる。テストし放題 あ 規制報告用に、荒らしのレスを溜めておく スレ立て誤爆をしやすいため、ローカル板編集の際は、オフラインにする テキスト選択ができる書き込みプレビューとして使う 誰かの発言集 抜けるSS集とか俺的エロ画像リンクまとめ レスのクリップはマーカーとか付箋でやってたけど ローカルスレッドだとまとめて全部表示できるからこっちの方が好きだわ テンプレみたいな複数レス用のメモ作成したい場合に便利 作成中に間違って本スレに投稿してしまうこともない レスのスクラップ帳 2ch関連のアカウントの管理 2chのURLをはっつければポップアップで内容も見れるしいろいろ捗る AAエディタがない環境でAA弄るのにいいな コピペ集 リンク集 AA倉庫 気に入ったレスのまとめ 日記帳、チラ裏 メモ帳、備忘録
https://w.atwiki.jp/akasatanahama/pages/129.html
mcmod.infoを利用するのをやめて、この方法に移行しました。 - 飽き性 2016-12-29 23 16 55 すみません、上は誤爆です。 続きから書きます。しかしいざgradlew buildをしてmodsに入れてもZip file ExapleMod-1.0.jar failed to read properly, it will be ignoredと出て読み込まれません。どのようにすると読み込まれるのでしょうか、教えてくださると助かります。必要ならpastebinなどでソースも公開します - 飽き性 2016-12-29 23 21 22 原因として考えられるもののとして、@Modアノテーションの記述が間違っている、もしくはModInfo.loadInfo(meta);を忘れているというものが考えられます。二つに当てはまらない場合は、お手数ですが返信下さい。 - Tom Kate 2016-12-30 18 08 02 ModInfoのURL等の少し省略していたものを追加したりなどしましたが、今までと同様のメッセージが表示され読み込まれませんでした。 - 飽き性 2016-12-30 21 38 43 ワークスペースを作り直してみると解決しました。返信ありがとうございました! - 飽き性 2017-01-06 11 31 48
https://w.atwiki.jp/lipari/pages/33.html
<LastUpdate:2012-05-24> <ビデオカード関連> <ビデオカード関連> <GeForce関連(nVidia製ビデオカード関連)>右クリックメニューの「私ので再生する(PlayOnMyTv)」を削除する 2006-10-28 nVidiaの設定が保存されているレジストリキー 2006-10-28 「クロック周波数の設定」を追加する 2006-10-28 <Radeon関連(AMD製ビデオカード関連)>MSI Afterburner を利用するとFPSやベンチマークのスコアが下がる。2011-10-17 Bios書き換えに失敗した場合の復旧方法について 2011-11-13 Windowsをカスタマイズのメニューへ戻る <GeForce関連(nVidia製ビデオカード関連)> 右クリックメニューの「私ので再生する(PlayOnMyTv)」を削除する 2006-10-28 ForceWare(nvidia製GPU搭載のグラフィックボード用ドライバ)のVer8x.xx?~をインストールすると動画ファイル(avi,mpg,wmv)の右クリックメニューに「私ので再生する(英語版はPlayOnMyTv)」が追加されます。これはデュアルディスプレイ環境下での動画再生を支援(主な機能はサブディスプレイ側で動画をフルスクリーン再生)するものであり、シングルディスプレイ環境では不要な機能です。また、ForceWare Ver15x.xx以前は動画ファイル(avi,mpg,wmv)を右クリックすると画面が一瞬ちらつく(チラつく、真っ黒になる、真黒になる、黒くなる)症状が発生することがあるため、この機能が不要な方は後述する方法で削除する(無効にする)ことをお奨めします。環境によっては動画再生を支援するアプリケーションソフト(動画再生プレイヤー、タブブラウザ等の一部)を利用した場合にも同様の症状(チラつき)が発生することがあるようです。 ForceWare Ver162.18へ更新したところ、「私ので再生する(PlayOnMyTv)」によるチラつく不具合が改善されていることを確認しました。しかし、なんらかの理由でドライバの更新を行えない、または、ドライバを最新Verに更新したが「私ので再生する」が邪魔だと感じる場合は下記の何れかの方法を実行するといいでしょう。2007-07-28 追記2008-02-20 修正 設定方法1 ※こちらの方法は右クリックメニューの「NVIDIAディスプレイ」(追加している場合)も一緒に削除されます。 ※上記を残したい場合はこちらを実行せずに設定方法2を実行してください。 [スタート]メニュー →[ファイル名を指定して実行]を選択し、↓をコピペして[OK]をクリック。 regsvr32 /u nvcpl.dll ※元に戻したい場合は、同様の手順で↓をコピペして[OK]をクリック。 regsvr32 nvcpl.dll 設定方法2 レジストリエディッタでの設定が面倒という方は playonmytv_delete.zip をどうぞ。 レジストリエディッタを起動し、下記の3つのキーを削除する HKEY_CLASSES_ROOT\AVIFile\shellex\ContextMenuHandlers\PlayOnMyTV HKEY_CLASSES_ROOT\mpegfile\shellex\ContextMenuHandlers\PlayOnMyTV HKEY_CLASSES_ROOT\WMVFile\shellex\ContextMenuHandlers\PlayOnMyTV 削除が終わったらレジストリエディッタを閉じる。 ※上記3つを削除しても直ぐに反映されない場合はWindowsを再起動してください。 ※元に戻す方法は設定方法1と同じです。 このページのTopへ nVidiaの設定が保存されているレジストリキー 2006-10-28 カラーのカスタム設定などが保存されているレジストリキーです。 設定保存先レジストリ HKEY_CURRENT_USER\Software\NVIDIA Corporation\Global\NVTweak 上記レジストリキーを右クリック→エクスポート(バックアップ)しておけば、いざというときにいいかもしれない。 このページのTopへ 「クロック周波数の設定」を追加する 2006-10-28 グラフィックカードのコアクロックとメモリクロックの設定変更が可能になります。 ドライバのバージョンが9x.xxまでの方法です。 ForceWare Ver1xx.xx以降(Ver162.18以降?)は NVIDIA nTune をインストールするだけでいいようです。※インストールしてもオーバークロック関連が追加されない場合は下記設定を行ってください。 設定方法 レジストリエディッタでの設定が面倒という方は cool_bits.zip をどうぞ。 レジストリエディッタを開き、下記キーを開く HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\Global\NVTweak 「編集」→「新規」→「DWORD値」と選択、名前を↓にする。 CoolBits 「CoolBits」をダブルクリックで開き、「値のデータ」を 3 にする。 「F5」(更新)を数回押す。 [画面のプロパティ]の[設定タブ]を開く、右下の[詳細設定]をクリック。 Geforce xxxx(GPU名)タブを開き、[クロック周波数の設定]が追加されているのを確認する。 (英語の場合は[Clock Frequencies]が追加されているのを確認する) ※既に開いている場合は一旦閉じてから開きなおしてください。 追加されない場合は「CoolBits」の「値のデータ」を 3 から ffffffff に変更してください。 このページのTopへ <Radeon関連(AMD製ビデオカード関連)> MSI Afterburner を利用するとFPSやベンチマークのスコアが下がる。2011-10-17 MSI製ビデオカード以外でのMSI Afterburnerの利用は動作保証対象外ですのであくまで参考程度に記しておきます。 ウチの環境(XFX製 HD-685X-ZNDC ※Radeon HD6850 メーカーOC仕様 コアクロック800Mhz メモリクロック1050Mhz、AMD Athlon II x4 640、Memory PC3-12800 DDR3-1600 2GB x 2、Windows XP SP3)ではWindowsが起動してから一度でもMSI Afterburnerを実行するとフレームレート(FPS)やベンチマークスコアが低下することが判明。CPU性能の影響を受けやすいゲームやFF14 BenchMark Highでは10~20%低下する。MSI Afterburnerの設定を初期設定(各クロックは800Mhz/1050Mhzと表示)に戻しても変化は無く、MSI Afterburnerを終了させてから再測定しても元のスコアやFPSに戻らない。 元に戻すには MSI Afterburnerの設定でスタートアップを無効にし、Windowsを再起動する。 Radeon公式ツールでファンスピードを変更するには AMD Overdriveのロックを解除する。 あとは手動で設定するもよし、自動(温度でファン回転数が自動調整される)にするもよし。 自動によるファンスピードを変更したい場合は「ATIWinflash」及び「RBE_128」を使い、Bios設定を書き換えることで変更できるかもしれません。 但し、Bios設定の取り扱いを間違った場合はビデオカードが使えなくなることがありますので自己責任で行なってください。書き換えを行う場合は正常に動作してるときのBios設定(Biosイメージ)のバックアップを必ず取っておいてください。 このページのTopへ Bios書き換えに失敗した場合の復旧方法について 2011-11-13 Radeon BIOS editor v1.28にて「Clock setting」の項目を書き換え後(AtiWinFlashにて「成功」と表示)、Windows再起動したところ最初のWindowsのロゴは表示されるものの、デスクトップが表示されなくなった(真っ黒なまま)。HDDのアクセス状態から察するに内部的にはデスクトップ表示までされていたと思われる。このような状態から復旧させることが出来たので、その手順を残しておく。 1) USBからPCを(dos)起動できるようにする。 参考 http //memorva.jp/internet/pc/dos_usb.php Virtual Floppy Drive(32bit用の vfd21-080206.zip )をDLしてインストールする。 ファイルを解凍し vfdwin.exe を実行。「ドライバ」タブの「開始」をクリック。 「ドライブ0」タブを選択し「変更」をクリック。 任意の「ドライブ文字」を選択。 「開始/新規」をクリックし「開始」をクリック。 マイコンピュータに仮想FDDが追加されているので右クリックし、「フォーマット」を選択。 「MS-DOSの起動ディスクを作成する」にチェックをつけてフォーマットする。 USBメモリを挿し、Fat32(またはFat)でフォーマットする。 HP USB Disk Storage Format Tool をDLしてインストール。 インストールが完了して実行したら、 Device 挿したUSBメモリを指定する。 File system Fat32 or Fat を選択する(Fat32にした) Volume Label 何でもOK Format Option 「Create a DOS startup disk」にチェックを付ける。 「using DOS System files located at」にチェックを付け Virtual Floppy Drive で作成した起動ディスクを指定する。 以上の設定が完了したら「Start」をクリック。 30分~1時間掛かるので終わるまで待つ。 これで起動用USBメモリが完成。 2) Atiflash をDLし、解凍する。 1)で作った起動用USBメモリに「Ati」というフォルダを作成し、そこに Atiflash.exe、及び事前にバックアップしておいたビデオカードのBiosイメージ(bios.romとする)をコピーする。 ※Biosイメージ(Biosファイル)が手元にない場合はインターネットで探せば見つかるかも。 USBメモリルートディレクトリ\Ati\Atiflash.exe USBメモリルートディレクトリ\Ati\bios.rom 3) 起動用USBメモリをPCに刺す 4) PCを再起動し、マザーボードのBios設定を開いてUSBメモリから起動出来るように設定する。 5) USBメモリから起動させ、以下を実行する。 C \ と表示されたら C \ cd Ati と入力し、Enterを押すと C \Ati と表示される atiflash -p -f 0 BIOS.rom と入力し、Enterを押し、しばらく待つ。 書き換えに成功した場合 Restart System To Comlete VBIOS Update. と表示されたらPC本体のリセットボタンを押して再起動する。 以上で完了。 書き換えに失敗した場合(書き換え不可の場合) ROM not erased ERROR xxxxx press 1 to continue と表示される場合は atiwinflash -unlockrom 0 と入力し、ロックを解除し、解除が完了したら atiflash -p -f 0 BIOS.rom を実行する。 このページのTopへ
https://w.atwiki.jp/momo001/
トップへ はじめにmomo serverは、ゆっくりとした鯖作りをしています。 過激な仕様変更・実装・修正は行いません。 首都 プロンテラ base倍率 JOB倍率 8000倍 drop 倍率 2000倍 転職 ノービスからジョブチェンジャーに話しかけるだけで 1次職に即転職できます。 通常 中BOSS MVPMOB 即湧き (BOSS部屋行きNPC 牛NPC) MVPカード 100M均一) プレーヤー基本ステータス 9999 (各自で調節してね) PTボーナス 1人つき 300% 公平 Lv100± オリジナルNPC 色々あるよ 見回ってみてください。
https://w.atwiki.jp/openvswitch/pages/14.html
Open vSwitchのインストールと設定方法 Open vSwtichのインストール QoS ポートミラーリング **工事中** OpenFlowコントローラ接続 **工事中**
https://w.atwiki.jp/ulilith-face/pages/5.html
このサイトについて このWikiサイトは、「 Project9k 」さんで配布されている Windows用サウンドプレイヤーソフト、 Sound Player Lilith for Unicode OSs(uLilith)のフェイス(スキンファイル)の 基本的な作り方をまとめたサイトです。 このサイトのフェイス作成法解説の内容は、 uLilithのインストールフォルダのDocフォルダ内に添付されている 「フェイス定義仕様書.txt」 「フェイスコマンド仕様書.txt」 及び、SDKフォルダ内のサンプルプラグインのReadMe.txtの内容を元にしています。 なお、このwikiではフェイス作成の基本的な部分については説明していますが 上記の仕様書の内容全てをカバーしているわけではないのでご了承ください。 特にコマンド関係は、基本的な設定方法は説明してはいますが 各コマンド個別の設定方法の詳細など、 ここで説明していない部分が多いので 必要に応じて上記の仕様書を参照してください。 各章について 基礎知識編 uLilithフェイスの定義ファイルの記述のしかたや仕組みなど 主に、uLilithフェイスのフェイス定義に関する基本的な情報についてまとめてあります。 フェイス作成基礎編 フェイスの基本設定や各フェイスアイテムの配置方法など 基本的なフェイスの作り方についてまとめてあります。 フェイス作成応用編 サブウィンドウの利用や、サイズ変更可能なフェイスの作成、 コマンドによるフェイス全体やフェイスアイテムの設定変更などを利用した 複雑な機能を備えたフェイスの作り方をまとめてあります。 その他 その他、資料など 「各フィールドに設定可能なキー一覧」と、 wiki内の各キーの設定一覧表・画像による説明図をまとめたページを作成しました。 対応バージョン uLilithの開発版バージョン「Ver.1.0 pre-Beta.4(2011/11/27)」以降の フェイス仕様を解説しています。 これ以前の日付の開発版、及び安定版「Ver.1.0 Beta.3」での仕様とは 異なる部分があるのでご注意ください。 (2016/08/24更新) 現在、uLilith Ver.1.0 pre-Beta.4(2016/08/22)版までに 追加されたコマンド・キーなどについて各解説ページに追加してあります。 このサイトに関するご連絡・お問い合わせについて このWikiサイトはプレイヤー配布元とは別の、非公式なサイトです。 解説についてのご質問、表記や記述内容の間違いがあった場合など このサイトのページ内容についてのご質問やご意見は ページ編集・管理者の静荷(連絡先はこちらです)へお願いします。
https://w.atwiki.jp/akasatanahama/pages/103.html
概要 新しく苗木・原木・葉を追加し、苗木が育ったら木が生成されるようにする。 今回は一つのIDで一種類の木しか追加していないが、バニラの木のようにメタデータを利用して何種類かの木を追加することも可能。 ※5/22更新 葉のテクスチャの指定ができていなかったため、追記・修正しました。 テクスチャは、sapling_aluminium,log_aluminium_top,log_aluminium_side,leaves_aluminium,leaves_aluminium_opaqueでそれぞれ指定できます。 ソースコード AluminiumMod.java package tutorial.aluminiummod; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraftforge.oredict.OreDictionary; @Mod(modid = AluminiumMod.MODID, name = AluminiumMod.MODNAME, version = AluminiumMod.VERSION) public class AluminiumMod { public static final String MODID = "AluminiumMod"; public static final String MODNAME = "Aluminium Mod"; public static final String VERSION = "1.0.0"; public static Block saplingAluminium; public static Block logAluminium; public static Block leavesAluminium; @EventHandler public void perInit(FMLPreInitializationEvent event) { saplingAluminium = new BlockAluminiumSapling() .setBlockName("saplingAluminium") .setBlockTextureName("aluminiummod sapling_aluminium"); GameRegistry.registerBlock(saplingAluminium, "saplingAluminium"); OreDictionary.registerOre("saplingAluminium", saplingAluminium); logAluminium = new BlockAluminiumLog() .setBlockName("logAluminium") .setBlockTextureName("aluminiummod log_aluminium"); GameRegistry.registerBlock(logAluminium, "logAluminium"); OreDictionary.registerOre("logAluminium", logAluminium); leavesAluminium = new BlockAluminiumLeaves() .setBlockName("leavesAluminium") .setBlockTextureName("aluminiummod leaves_aluminium"); GameRegistry.registerBlock(leavesAluminium, ItemAluminiumLeaves.class, "leavesAluminium"); OreDictionary.registerOre("leavesAluminium", leavesAluminium); } } BlockAluminiumSapling.java +長いので囲みます package tutorial.aluminiummod; import static net.minecraftforge.common.EnumPlantType.*; import java.util.List; import java.util.Random; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockSapling; import net.minecraft.block.IGrowable; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import net.minecraftforge.common.EnumPlantType; import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.terraingen.TerrainGen; public class BlockAluminiumSapling extends BlockSapling implements IPlantable, IGrowable { public BlockAluminiumSapling() { super(); this.setCreativeTab(CreativeTabs.tabDecorations); this.setTickRandomly(true); this.setHardness(0F); this.setStepSound(soundTypeGrass); float f = 0.4F; this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f * 2.0F, 0.5F + f); } @Override public boolean canPlaceBlockAt(World world, int x, int y, int z) { // Blockで上書き可能なブロックかどうかの判定をしているが、BlockBushでcanBlockStayの判定を追加している。 return world.getBlock(x, y, z).isReplaceable(world, x, y, z) this.canBlockStay(world, x, y, z); } @Override protected boolean canPlaceBlockOn(Block block) { // 草、土、耕された土ならtrueを返す。 return block == Blocks.grass || block == Blocks.dirt || block == Blocks.farmland; } @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { this.checkAndDropBlock(world, x, y, z); } @Override protected void checkAndDropBlock(World world, int x, int y, int z) { if (!this.canBlockStay(world, x, y, z)) { this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); world.setBlockToAir(x, y, z); } } @Override public boolean canBlockStay(World world, int x, int y, int z) { // 下のブロックのcanSustainPlantで判定している。 return world.getBlock(x, y - 1, z).canSustainPlant(world, x, y - 1, z, ForgeDirection.UP, this); } @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { // 当たり判定を消すため、nullを返している。 return null; } @Override public boolean isOpaqueCube() { return false; } @Override public boolean renderAsNormalBlock() { return false; } @Override public int getRenderType() { return 1; } @Override public EnumPlantType getPlantType(IBlockAccess world, int x, int y, int z) { return Plains; } @Override public Block getPlant(IBlockAccess world, int x, int y, int z) { return this; } @Override public int getPlantMetadata(IBlockAccess world, int x, int y, int z) { return world.getBlockMetadata(x, y, z); } @Override public void updateTick(World world, int x, int y, int z, Random random) { // サーバー側で、checkAndDropBlock・明るさの判定を行い、条件を満たしていれば1/7の確率で成長する。 if (!world.isRemote) { this.checkAndDropBlock(world, x, y, z); if (world.getBlockLightValue(x, y + 1, z) = 9 random.nextInt(7) == 0) { this.func_149879_c(world, x, y, z, random); } } } @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { // Blockと同様。 return blockIcon; } @Override public void func_149879_c(World world, int x, int y, int z, Random random) { // 一度も成長していないなら一段階成長させ、二段階目なら木を生成する。 // 一段階目の成長が終わったかどうかは、メタデータの二進数四桁目で判断する。 int meta = world.getBlockMetadata(x, y, z); if ((meta 8) == 0) { world.setBlockMetadataWithNotify(x, y, z, meta | 8, 4); } else { this.func_149878_d(world, x, y, z, random); } } @Override public void func_149878_d(World world, int x, int y, int z, Random random) { // Eventを呼び出しているが、他MODでキャンセルされたくなければこの部分は削除してよい。 if (!TerrainGen.saplingGrowTree(world, random, x, y, z)) return; // メタデータを利用して複数種類の木を追加したい場合はバニラの苗木を参考にするとよい。 int meta = 0; // 大木を生成したい場合はこの部分を参考にするとよい。 // Object object = random.nextInt(10) == 0 ? new WorldGenBigTree(true) new WorldGenTrees(true); Object object = new WorldGenAluminiumTrees(true); world.setBlock(x, y, z, Blocks.air, 0, 4); if (!((WorldGenerator) object).generate(world, random, x, y, z)) { world.setBlock(x, y, z, this, meta, 4); } } @Override public boolean func_149880_a(World world, int x, int y, int z, int type) { return world.getBlock(x, y, z) == this (world.getBlockMetadata(x, y, z) 7) == type; } @Override public int damageDropped(int meta) { // Blockと同様。 return 0; } @Override @SideOnly(Side.CLIENT) public void getSubBlocks(Item item, CreativeTabs tab, List list) { // Blockと同様。 list.add(new ItemStack(item, 1, 0)); } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { // Blockと同様。 blockIcon = register.registerIcon(this.getTextureName()); } @Override public boolean func_149851_a(World world, int x, int y, int z, boolean isRemote) { return true; } @Override public boolean func_149852_a(World world, Random random, int x, int y, int z) { return world.rand.nextFloat() 0.45D; } @Override public void func_149853_b(World world, Random random, int x, int y, int z) { this.func_149879_c(world, x, y, z, random); } } WorldGenAluminiumTrees.java +長いので囲みます package tutorial.aluminiummod; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.BlockSapling; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.util.Direction; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenAbstractTree; import net.minecraftforge.common.util.ForgeDirection; public class WorldGenAluminiumTrees extends WorldGenAbstractTree { private final int minTreeHeight; private final boolean vinesGrow; private final int metaWood; private final int metaLeaves; public WorldGenAluminiumTrees(boolean doBlockNotify) { this(doBlockNotify, 4, 0, 0, false); } public WorldGenAluminiumTrees(boolean doBlockNotify, int minTreeHeight, int metaWood, int metaLeaves, boolean vinesGrow) { super(doBlockNotify); this.minTreeHeight = minTreeHeight; this.metaWood = metaWood; this.metaLeaves = metaLeaves; this.vinesGrow = vinesGrow; } @Override public boolean generate(World world, Random random, int x, int y, int z) { int l = random.nextInt(3) + minTreeHeight; if (y 1 || y + l + 1 256) return false; byte b0; int k1; Block block; for (int iy = y; iy = y + 1 + l; ++iy) { b0 = 1; if (iy == y) { b0 = 0; } if (iy = y + 1 + l - 2) { b0 = 2; } for (int ix = x - b0; ix = x + b0; ++ix) { for (int iz = z - b0; iz = z + b0; ++iz) { if (iy 0 || iy = 256) return false; block = world.getBlock(ix, iy, iz); if (!this.isReplaceable(world, ix, iy, iz)) return false; } } } Block block2 = world.getBlock(x, y - 1, z); boolean isSoil = block2.canSustainPlant(world, x, y - 1, z, ForgeDirection.UP, (BlockSapling) AluminiumMod.saplingAluminium); if (!isSoil || y = 256 - l - 1) return false; block2.onPlantGrow(world, x, y - 1, z, x, y, z); b0 = 3; byte b1 = 0; int l1; int i2; int j2; int i3; for (k1 = y - b0 + l; k1 = y + l; ++k1) { i3 = k1 - (y + l); l1 = b1 + 1 - i3 / 2; for (i2 = x - l1; i2 = x + l1; ++i2) { j2 = i2 - x; for (int k2 = z - l1; k2 = z + l1; ++k2) { int l2 = k2 - z; if (Math.abs(j2) != l1 || Math.abs(l2) != l1 || random.nextInt(2) != 0 i3 != 0) { Block block1 = world.getBlock(i2, k1, k2); if (block1.isAir(world, i2, k1, k2) || block1.isLeaves(world, i2, k1, k2)) { this.setBlockAndNotifyAdequately(world, i2, k1, k2, AluminiumMod.leavesAluminium, metaLeaves); } } } } } for (k1 = 0; k1 l; ++k1) { block = world.getBlock(x, y + k1, z); if (block.isAir(world, x, y + k1, z) || block.isLeaves(world, x, y + k1, z)) { setBlockAndNotifyAdequately(world, x, y + k1, z, AluminiumMod.logAluminium, metaWood); if (vinesGrow k1 0) { if (random.nextInt(3) 0 world.isAirBlock(x - 1, y + k1, z)) { this.setBlockAndNotifyAdequately(world, x - 1, y + k1, z, Blocks.vine, 8); } if (random.nextInt(3) 0 world.isAirBlock(x + 1, y + k1, z)) { this.setBlockAndNotifyAdequately(world, x + 1, y + k1, z, Blocks.vine, 2); } if (random.nextInt(3) 0 world.isAirBlock(x, y + k1, z - 1)) { this.setBlockAndNotifyAdequately(world, x, y + k1, z - 1, Blocks.vine, 1); } if (random.nextInt(3) 0 world.isAirBlock(x, y + k1, z + 1)) { this.setBlockAndNotifyAdequately(world, x, y + k1, z + 1, Blocks.vine, 4); } } } } if (vinesGrow) { for (k1 = y - 3 + l; k1 = y + l; ++k1) { i3 = k1 - (y + l); l1 = 2 - i3 / 2; for (i2 = x - l1; i2 = x + l1; ++i2) { for (j2 = z - l1; j2 = z + l1; ++j2) { if (world.getBlock(i2, k1, j2).isLeaves(world, i2, k1, j2)) { if (random.nextInt(4) == 0 world.getBlock(i2 - 1, k1, j2).isAir(world, i2 - 1, k1, j2)) { this.growVines(world, i2 - 1, k1, j2, 8); } if (random.nextInt(4) == 0 world.getBlock(i2 + 1, k1, j2).isAir(world, i2 + 1, k1, j2)) { this.growVines(world, i2 + 1, k1, j2, 2); } if (random.nextInt(4) == 0 world.getBlock(i2, k1, j2 - 1).isAir(world, i2, k1, j2 - 1)) { this.growVines(world, i2, k1, j2 - 1, 1); } if (random.nextInt(4) == 0 world.getBlock(i2, k1, j2 + 1).isAir(world, i2, k1, j2 + 1)) { this.growVines(world, i2, k1, j2 + 1, 4); } } } } } if (random.nextInt(5) == 0 l 5) { for (k1 = 0; k1 2; ++k1) { for (i3 = 0; i3 4; ++i3) { if (random.nextInt(4 - k1) == 0) { l1 = random.nextInt(3); this.setBlockAndNotifyAdequately(world, x + Direction.offsetX[Direction.rotateOpposite[i3]], y + l - 5 + k1, z + Direction.offsetZ[Direction.rotateOpposite[i3]], Blocks.cocoa, l1 2 | i3); } } } } } return true; } @Override protected boolean isReplaceable(World world, int x, int y, int z) { Block block = world.getBlock(x, y, z); return block.isAir(world, x, y, z) || block.isLeaves(world, x, y, z) || block.isWood(world, x, y, z) || this.func_150523_a(block); } @Override protected boolean func_150523_a(Block block) { return block.getMaterial() == Material.air || block.getMaterial() == Material.leaves || block == Blocks.grass || block == Blocks.dirt || block == Blocks.log || block == Blocks.log2 || block == Blocks.sapling || block == Blocks.vine; } private void growVines(World world, int x, int y, int z, int length) { this.setBlockAndNotifyAdequately(world, x, y, z, Blocks.vine, length); int i1 = 4; while (true) { --y; if (!world.getBlock(x, y, z).isAir(world, x, y, z) || i1 = 0) { return; } this.setBlockAndNotifyAdequately(world, x, y, z, Blocks.vine, length); --i1; } } } BlockAluminiumLog.java +長いので囲みます package tutorial.aluminiummod; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockLog; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockAluminiumLog extends BlockLog { private IIcon[] iicon = new IIcon[2]; public BlockAluminiumLog() { super(); this.setCreativeTab(CreativeTabs.tabBlock); this.setHardness(2.0F); this.setStepSound(soundTypeWood); } @Override public int getRenderType() { return 31; } @Override public int onBlockPlaced(World world, int x, int y, int z, int side, float posX, float posY, float posZ, int meta) { // 設置された方向に応じてメタデータを設定する。 int metaType = meta 3; byte direction = 0; switch (side) { case 0 case 1 direction = 0; break; case 2 case 3 direction = 8; break; case 4 case 5 direction = 4; } return metaType | direction; } @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { int k = meta 12; int l = meta 3; return k == 0 (side == 1 || side == 0) ? this.getTopIcon(l) (k == 4 (side == 5 || side == 4) ? this.getTopIcon(l) (k == 8 (side == 2 || side == 3) ? this.getTopIcon(l) this.getSideIcon(l))); } @Override public int damageDropped(int meta) { return meta 3; } @Override @SideOnly(Side.CLIENT) protected IIcon getSideIcon(int meta) { return this.iicon[1]; } @Override @SideOnly(Side.CLIENT) protected IIcon getTopIcon(int meta) { return this.iicon[0]; } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iicon) { this.iicon[0] = iicon.registerIcon(this.getTextureName() + "_top"); this.iicon[1] = iicon.registerIcon(this.getTextureName() + "_side"); } @Override protected ItemStack createStackedBlock(int meta) { return new ItemStack(Item.getItemFromBlock(this), 1, meta 3); } @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { // 周囲の葉ブロックの消滅を始める。 byte b0 = 4; int i1 = b0 + 1; if (!world.checkChunksExist(x - i1, y - i1, z - i1, x + i1, y + i1, z + i1)) return; for (int ix = -b0; ix = b0; ++ix) { for (int iy = -b0; iy = b0; ++iy) { for (int iz = -b0; iz = b0; ++iz) { Block block1 = world.getBlock(x + ix, y + iy, z + iz); if (block1.isLeaves(world, x + ix, y + iy, z + iz)) { block1.beginLeavesDecay(world, x + ix, y + iy, z + iz); } } } } } @Override public boolean canSustainLeaves(IBlockAccess world, int x, int y, int z) { return true; } @Override public boolean isWood(IBlockAccess world, int x, int y, int z) { return true; } } BlockAluminiumLeaves.java +長いので囲みます package tutorial.aluminiummod; import java.util.ArrayList; import java.util.Random; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockLeaves; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.ColorizerFoliage; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.IShearable; public class BlockAluminiumLeaves extends BlockLeaves implements IShearable { protected boolean isFancy; protected IIcon[] iicon = new IIcon[2]; int[] array; public BlockAluminiumLeaves() { super(); this.setTickRandomly(true); this.setCreativeTab(CreativeTabs.tabDecorations); this.setHardness(0.2F); this.setLightOpacity(1); this.setStepSound(soundTypeGrass); } @Override @SideOnly(Side.CLIENT) public int getBlockColor() { double d0 = 0.5D; double d1 = 1.0D; return ColorizerFoliage.getFoliageColor(d0, d1); } @Override @SideOnly(Side.CLIENT) public int getRenderColor(int color) { return ColorizerFoliage.getFoliageColorBasic(); } @Override @SideOnly(Side.CLIENT) public int colorMultiplier(IBlockAccess iBlockAccess, int x, int y, int z) { // バイオームの境目である程度スムーズになるよう、周囲9ブロックのバイオームから平均を求めている。 int ir = 0; int ig = 0; int ib = 0; for (int iz = -1; iz = 1; ++iz) { for (int ix = -1; ix = 1; ++ix) { int color = iBlockAccess.getBiomeGenForCoords(x + ix, z + iz).getBiomeFoliageColor(x + ix, y, z + iz); ir += (color 16711680) 16; ig += (color 65280) 8; ib += color 255; } } return (ir / 9 255) 16 | (ig / 9 255) 8 | ib / 9 255; } @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { // 周囲の葉ブロックの消滅を始める。 byte b0 = 1; int i1 = b0 + 1; if (world.checkChunksExist(x - i1, y - i1, z - i1, x + i1, y + i1, z + i1)) { for (int j1 = -b0; j1 = b0; ++j1) { for (int k1 = -b0; k1 = b0; ++k1) { for (int l1 = -b0; l1 = b0; ++l1) { Block block1 = world.getBlock(x + j1, y + k1, z + l1); if (block1.isLeaves(world, x + j1, y + k1, z + l1)) { block1.beginLeavesDecay(world, x + j1, y + k1, z + l1); } } } } } } @Override public void updateTick(World world, int x, int y, int z, Random random) { if (world.isRemote) return; int meta = world.getBlockMetadata(x, y, z); // メタデータの二進数四桁目が0(周囲で原木/葉が破壊されていない)か、 // 三桁目が0以外(プレイヤーに設置されたもの)なら消滅させない。 if ((meta 8) == 0 || (meta 4) != 0) return; // 周囲のブロックを調査し、葉の消滅を抑えるブロック(原木)がなければ消滅させる。 byte b4 = 4; int i5 = b4 + 1; byte b32 = 32; int i1024 = b32 * b32; int i16 = b32 / 2; if (array == null) { array = new int[b32 * b32 * b32]; } int l1; if (world.checkChunksExist(x - i5, y - i5, z - i5, x + i5, y + i5, z + i5)) { for (int ix = -b4; ix = b4; ++ix) { for (int iy = -b4; iy = b4; ++iy) { for (int iz = -b4; iz = b4; ++iz) { Block block = world.getBlock(x + ix, y + iy, z + iz); if (!block.canSustainLeaves(world, x + ix, y + iy, z + iz)) { if (block.isLeaves(world, x + ix, y + iy, z + iz)) { array[(ix + i16) * i1024 + (iy + i16) * b32 + iz + i16] = -2; } else { array[(ix + i16) * i1024 + (iy + i16) * b32 + iz + i16] = -1; } } else { array[(ix + i16) * i1024 + (iy + i16) * b32 + iz + i16] = 0; } } } } for (l1 = 1; l1 = 4; ++l1) { for (int ix = -b4; ix = b4; ++ix) { for (int iy = -b4; iy = b4; ++iy) { for (int iz = -b4; iz = b4; ++iz) { if (array[(ix + i16) * i1024 + (iy + i16) * b32 + iz + i16] == l1 - 1) { if (array[(ix + i16 - 1) * i1024 + (iy + i16) * b32 + iz + i16] == -2) { array[(ix + i16 - 1) * i1024 + (iy + i16) * b32 + iz + i16] = l1; } if (array[(ix + i16 + 1) * i1024 + (iy + i16) * b32 + iz + i16] == -2) { array[(ix + i16 + 1) * i1024 + (iy + i16) * b32 + iz + i16] = l1; } if (array[(ix + i16) * i1024 + (iy + i16 - 1) * b32 + iz + i16] == -2) { array[(ix + i16) * i1024 + (iy + i16 - 1) * b32 + iz + i16] = l1; } if (array[(ix + i16) * i1024 + (iy + i16 + 1) * b32 + iz + i16] == -2) { array[(ix + i16) * i1024 + (iy + i16 + 1) * b32 + iz + i16] = l1; } if (array[(ix + i16) * i1024 + (iy + i16) * b32 + (iz + i16 - 1)] == -2) { array[(ix + i16) * i1024 + (iy + i16) * b32 + (iz + i16 - 1)] = l1; } if (array[(ix + i16) * i1024 + (iy + i16) * b32 + iz + i16 + 1] == -2) { array[(ix + i16) * i1024 + (iy + i16) * b32 + iz + i16 + 1] = l1; } } } } } } } l1 = array[i16 * i1024 + i16 * b32 + i16]; if (l1 = 0) { world.setBlockMetadataWithNotify(x, y, z, meta 7, 4); } else { this.removeLeaves(world, x, y, z); } } @Override @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int x, int y, int z, Random random) { // 水を滴らせる? if (world.canLightningStrikeAt(x, y + 1, z) !World.doesBlockHaveSolidTopSurface(world, x, y - 1, z) random.nextInt(15) == 1) { double dx = x + random.nextFloat(); double dy = y - 0.05D; double dz = z + random.nextFloat(); world.spawnParticle("dripWater", dx, dy, dz, 0.0D, 0.0D, 0.0D); } } private void removeLeaves(World world, int x, int y, int z) { // ドロップさせ、空気ブロックに置き換える。 this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); world.setBlockToAir(x, y, z); } @Override public int quantityDropped(Random random) { return random.nextInt(20) == 0 ? 1 0; } @Override public Item getItemDropped(int meta, Random random, int fortune) { return Item.getItemFromBlock(AluminiumMod.saplingAluminium); } @Override public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int par7) { super.dropBlockAsItemWithChance(world, x, y, z, meta, 1.0f, par7); } @Override protected void func_150124_c(World world, int x, int y, int z, int meta, int chance) {} @Override protected int func_150123_b(int meta) { return 20; } @Override public boolean isOpaqueCube() { return !isFancy; } @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { return iicon[isFancy ? 0 1]; } @Override @SideOnly(Side.CLIENT) public void setGraphicsLevel(boolean isFancy) { this.isFancy = isFancy; } @Override protected ItemStack createStackedBlock(int meta) { return new ItemStack(Item.getItemFromBlock(this), 1, 0); } @Override public String[] func_150125_e() { return null; } @Override @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess iBlockAccess, int x, int y, int z, int side) { Block block = iBlockAccess.getBlock(x, y, z); // 処理優先で隣が同じブロックだったらfalse。 return !isFancy block == this ? false super.shouldSideBeRendered(iBlockAccess, x, y, z, side); } @Override public boolean isShearable(ItemStack item, IBlockAccess world, int x, int y, int z) { return true; } @Override public ArrayList ItemStack onSheared(ItemStack item, IBlockAccess world, int x, int y, int z, int fortune) { ArrayList ItemStack ret = new ArrayList ItemStack (); ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z) 3)); return ret; } @Override public void beginLeavesDecay(World world, int x, int y, int z) { int meta = world.getBlockMetadata(x, y, z); if ((meta 8) == 0) { world.setBlockMetadataWithNotify(x, y, z, meta | 8, 4); } world.setBlockMetadataWithNotify(x, y, z, world.getBlockMetadata(x, y, z) | 8, 4); } @Override public boolean isLeaves(IBlockAccess world, int x, int y, int z) { return true; } @Override public ArrayList ItemStack getDrops(World world, int x, int y, int z, int meta, int fortune) { ArrayList ItemStack ret = new ArrayList ItemStack (); int chance = this.func_150123_b(meta); if (fortune 0) { chance -= 2 fortune; if (chance 10) chance = 10; } if (world.rand.nextInt(chance) == 0) ret.add(new ItemStack(this.getItemDropped(meta, world.rand, fortune), 1, this.damageDropped(meta))); chance = 200; if (fortune 0) { chance -= 10 fortune; if (chance 40) chance = 40; } this.captureDrops(true); this.func_150124_c(world, x, y, z, meta, chance); ret.addAll(this.captureDrops(false)); return ret; } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { iicon[0] = register.registerIcon(this.getTextureName()); iicon[1] = register.registerIcon(this.getTextureName() + "_opaque"); } } ItemAluminiumLeaves.java package tutorial.aluminiummod; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockLeaves; import net.minecraft.item.ItemLeaves; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; public class ItemAluminiumLeaves extends ItemLeaves { protected final Block leaves; public ItemAluminiumLeaves(Block block) { super((BlockLeaves) block); this.leaves = block; this.setMaxDamage(0); this.setHasSubtypes(true); } @Override public int getMetadata(int meta) { // 設置時は二進数三桁目が1になる。 return meta | 4; } @Override public String getUnlocalizedName(ItemStack itemStack) { return leaves.getUnlocalizedName(); } @Override @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int meta) { return leaves.getIcon(0, meta); } @Override @SideOnly(Side.CLIENT) public int getColorFromItemStack(ItemStack itemStack, int pass) { return leaves.getRenderColor(itemStack.getItemDamage()); } } 解説 Block +長いので囲みます Block setTickRandomly(boolean needsRandomTick) trueに設定すると、ランダムでupdateTickが呼ばれるようになる。 植物の成長判定や葉の消滅などに使う。 void setBlockBounds(float minX, float minY, float minZ, float maxX, float maxY, float maxZ) ブロックの大きさを設定する。 カーソルがあったかどうかの判定や、合わせたときの枠線の描画に使われる。 boolean canPlaceBlockAt(World world, int x, int y, int z) ブロックを設置できるかを判定する。 void onNeighborBlockChange(World world, int x, int y, int z, Block block) 隣接するブロックが更新された時の処理。 boolean canBlockStay(World world, int x, int y, int z) ブロックがとどまれるかどうか。 AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) 当たり判定を返す。 BlockではAxisAlignedBB.getBoundingBox(x + minX, y + minY, z + minZ, x + maxX, y + maxY, z + maxZ)を返している。 このメソッドをオーバーライドすれば当たり判定を変更できる。 boolean isOpaqueCube() 不透明なブロックかどうかを返す。 boolean renderAsNormalBlock() 通常のブロックのように描画するかどうかを返す。 柵や壁がつながるかどうかの判定にも使われる。 int getRenderType() レンダ―タイプを返す。 通常は0。 苗木や花、キノコなどは1。 原木、干草の俵などは31。 1を返すとTileEntityの設定などが適用される。 void updateTick(World world, int x, int y, int z, Random random) ブロックのアップデート時の処理。 needsRandomTickがtrueの時はランダムに呼ばれる。 falseだと何tick後に呼び出すなどの処理が可能。 int onBlockPlaced(World world, int x, int y, int z, int side, float posX, float posY, float posZ, int meta) ブロックが設置された時の処理。 ItemStack createStackedBlock(int meta) メタデータを反映してItemStackを生成し返す。 void breakBlock(World world, int x, int y, int z, Block block, int meta) ブロックが破壊された時の処理。 boolean canSustainLeaves(IBlockAccess world, int x, int y, int z) 葉を維持させられるブロックかどうかを返す。 boolean isWood(IBlockAccess world, int x, int y, int z) 原木かどうかを返す。 木の生成時の判定に使う。 Block setLightOpacity(int lightOpacity) 光の透過度を設定する。 0で不透過。1で完全に透過。 int getBlockColor() ブロックの色を返す。 int getRenderColor(int color) 描画するときの色を返す。 インベントリ内での描画などに使う。 int colorMultiplier(IBlockAccess iBlockAccess, int x, int y, int z) ブロックを描画するときの色の係数を返す。 void randomDisplayTick(World world, int x, int y, int z, Random random) クライアントで描画されるときにランダムで呼ばれる。 int quantityDropped(Random random) ドロップ数を返す。 Item getItemDropped(int meta, Random random, int fortune) ドロップするアイテムを返す。 void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int par7) ブロックをドロップさせる。 boolean shouldSideBeRendered(IBlockAccess iBlockAccess, int x, int y, int z, int side) 引数の面を描画するかどうか。 引数の座標はメソッドを呼ばれたブロックではなく、その隣にあるブロック。 Blockでは、ブロックの大きさが通常より小さいでないか、引数の座標のブロックが不透明でないならtrueを返す。 void beginLeavesDecay(World world, int x, int y, int z) 葉の消滅を始める。 boolean isLeaves(IBlockAccess world, int x, int y, int z) 葉かどうかを返す。 ArrayList ItemStack getDrops(World world, int x, int y, int z, int meta, int fortune) ドロップアイテムのリストを返す。 BlockBush boolean canPlaceBlockOn(Block block) 引数のブロックの上に設置が可能かどうか。 void checkAndDropBlock(World world, int x, int y, int z) 設置されている状況が保てるかどうか判定し、保てないならドロップさせる。 BlockSapling void func_149879_c(World world, int x, int y, int z, Random random) 苗木を成長させる処理。 void func_149878_d(World world, int x, int y, int z, Random random) 木を生成する処理。 boolean func_149880_a(World world, int x, int y, int z, int type) 引数の座標のブロックが同じ種類の苗木かどうか。 ダークオーク・松などの生成に使っている。 EnumPlantType 植物の植え方を表すenum。 Plains 苗木や草、花など。 草・土・耕された土に植えられる。 ForgeDirection 方向を表すenum。 UP 上方向。 AxisAlignedBB ブロックの当たり判定などを保持するクラス。 TerrainGen 生成に関するEventを呼び出すクラス。 saplingGrowTree SaplingGrowTreeEventを呼び出す。 IPlantable 植物のインターフェース。 EnumPlantType getPlantType(IBlockAccess world, int x, int y, int z) 植物の植え方によってenumを返す。 Block getPlant(IBlockAccess world, int x, int y, int z) 引数の座標にある植物を返す。 基本的にはthisでよい。 int getPlantMetadata(IBlockAccess world, int x, int y, int z) 植物のメタデータを返す。 IGrowable 骨粉が使用できるブロックのインターフェース。 boolean func_149851_a(World world, int x, int y, int z, boolean isRemote) 骨粉が使用できるかどうかを返す。 boolean func_149852_a(World world, Random random, int x, int y, int z) 成長させるかどうかを返す。 void func_149853_b(World world, Random random, int x, int y, int z) 成長させる処理。 BlockRotatedPillar IIcon getSideIcon(int meta) 横の面のアイコンを返す。 IIcon getTopIcon(int meta) 上下面のアイコンを返す。 ColorizerFoliage 葉や草などの色を扱うクラス。 int getFoliageColor(double temperature, double humidity) 気温・湿度から色を生成して返す。 int getFoliageColorBasic() 基本の色を返す。 4764952(0x48A518, RGB (72,181,24))。 BlockLeaves void func_150124_c(World world, int x, int y, int z, int meta, int chance) リンゴのドロップに使うメソッド。 int func_150123_b(int meta) 苗木のドロップ確率を返す。 void setGraphicsLevel(boolean isFancy) 描画優先/処理優先の設定を反映する。 String[] func_150125_e() 木の種類名の配列を返す。 void removeLeaves(World world, int x, int y, int z) 引数の座標にあるブロックをドロップして破壊する。 privateなのでBlockAluminiumLeavesでは新しく実装していることになる。 IShearable ハサミで回収できるブロックのインターフェース。 boolean isShearable(ItemStack item, IBlockAccess world, int x, int y, int z) ハサミで回収できるかどうかを返す。 ArrayList ItemStack onSheared(ItemStack item, IBlockAccess world, int x, int y, int z, int fortune) ハサミで回収された時の処理。 ハサミで回収した時のドロップアイテムのリストを返す。 使用例 星の樹MODは木のカスタマイズ機能の影響で非常にわかりにくくなっているため、使用例は載せません。 Beta 1.0.0以前のコードは参考になるかもしれません。 コメント この項目に関する質問などをどうぞ。 左のメニューでTileEntityの追加を押すとこのページに来てしまいます。 - 名無しさん 2016-01-09 22 38 31 申し訳ありません。訂正いたしました。 - Tom Kate 2016-01-10 08 41 18 1.7.10で丸ごとコピーしてみたのですが、preInitのLeavesのところで落ちてしまいます。 - 名無しさん 2016-04-30 05 28 57 ご報告ありがとうございます。修正しました。 - 赤砂蛇凪浜 2016-04-30 16 13 34 葉のテクスチャは新しい文で指定する必要があるのでしょうか - 名無しさん 2016-05-20 16 43 05 テクスチャの指定に関する部分はいくつかあるため、どこについてなのかもう少し詳しくお願いします。 - 赤砂蛇凪浜 2016-05-20 17 28 58 葉のブロックのテクスチャ(描画設定で切り替わったり)です。例えばここのコードを丸ごと持ってきた場合、画像ファイルの名前や位置次第でテクスチャは表示されうるのでしょうか。すみません枝間違えました - ポン酢 2016-05-20 20 44 34 入力ミスのようですので、コメントは片方削除させていただきます。チュートリアルに不備があり、葉のテクスチャの指定がうまくできていなかったので修正しました。AluminiumMod.javaおよびBlockAluminiumLeaves.javaに変更がありますのでご確認ください。ご迷惑をおかけして申し訳ありませんでした。解説がわかりにくければ、またご質問いただけるとありがたいです。 - 赤砂蛇凪浜 2016-05-22 13 42 04 同じIDでいくつかの原木ブロックを追加するには、どのようにすれば良いのでしょうか。 - 名無しさん 2016-06-17 23 31 47 「メタデータを持つブロックの追加」に記載している方法で、getSubBlocksなどをオーバーライドしてテクスチャの指定を少し変更すればできます。ただし、原木の場合は向きをメタデータで記録しているので、一つのIDで追加できるのは4種類までです。バニラのコードや、(カスタム機能の影響で少しわかりにくくなっていますが)星の樹MODのソースコードも見てみてください。返信が遅くなってしまい、申し訳ありません。 - 赤砂蛇凪浜 2016-06-25 10 48 37 ありがとうございます! - 名無しさん 2016-06-25 21 53 03 返信するとこ間違えました... - 名無しさん 2016-06-25 21 53 43 このソースコードは1.10でも使用することができますか? - 名無しさん 2016-10-06 00 48 58 こちらのチュートリアルは記載の通り1.7.10版のものです。1.8以降は大きくコーディングが変更されておりますので使うことはできません。 - Tom Kate 2016-10-06 23 07 20 名前
https://w.atwiki.jp/fo3ss/pages/30.html
このページは管理人が再構築する時のための個人的なメモです 何が起こっても保証しません 上からインストール順に FOOK2RC(後で入れなおした) インストール場所に気をつけて導入 Black White Tranquility Lane…Tranquility LaneがFOOKだとデフォでカラーなのでバニラの白黒に戻す No Rape Victims…たまに転がってるレイダーにレイプされた女性の全裸死体Rape VictimをただのWastelanderにする 修正espを入れる http //www.fookunity.com/downloads/ Originally Posted by RawSteelUTから全部落としてespを適当なフォルダ「FOOK2 Fix」とか作ってまとめてFOMM だったが今は FOOK2 v1.0 RC Installer を一度ゲームと別の場所にインストールしてesp、esmを全て削除してから FOOK2 v1.1 Data Files - REQUIRED FOOK2 v1.1 Beta 2 Plugins FOOK2 v1.1 Beta 2 Cumulative Hotfix Data (9-10) FOOK2 v1.1 Beta 2 Cumulative Hotfix Plugins (9-06) を上書きしてFOMMでFALLOUTにインストール その後FOOK2 v1.0 RC Installerをアンインストールしてゲームじゃない方にインストールした方のFOOK2フォルダを消す必要がある DIMONIZED TYPE3 female body WIP導入(人物テクスチャメッシュ改善)TYPE3 V2 TEXTURES DEFAULT HEAD TYPE3 BASE HD body フォルダをメッシュはメッシュテクスチャはテクスチャでまとめ一つのフォルダに入れてFOMM Cross Crosshair 2 Solid And 1 dotted(クロスヘアをFPSチックに) SolidCrosshair_Update-295.rarを導入 Color Hi-Detailed map and icons(地図をカラーに) PIPBOYの表示色を白にしないとカラーに見えないので注意 FOOK2で矢印キーでカメラの位置変えられるようになったので削除した Centered Overhead 3P Camera(TPS画面でキャラを真ん中に) オブリやってたのでこっちのが落ち着く Artorps Zooming Scoped Weapons(マウスホイールでスコープを7段階ズーム出来るように) ズーム出来ないスコープなんてゴミだー Console Key Binder v1.0.2(F4でコンソールを表示) 解像度によっては見えないのでFO3JPWIKIのiniの項を見て修正 CMF - New Start(チュートリアル飛ばしてスタート地点を秘密基地風の場所に変える) faster growingだと子供種族でスタートさせるとフリーズではないが止まる AngelMod Ver2(種族エンジェル追加) 1と2合体させて修正ファイルを上書き 髪MODFallout 3 Saram Hair(Fixed texture path for Hair04、Fixed Texture path of hair15当て忘れないこと) Hair Pack(オプションは入れなかった。一緒にKozaburo Hair入れないと!が出る。Saram Hairを使うのでDataフォルダにHairPackCompSaramHMフォルダのespを上書する。ruはロシア語版なので要らない) Josef Greys Kozaburo Hair Style for Fallout 3 Some more hair conversions(Adds 3 more hairs、oops forgot about this oneも入れる) HairPack_2chPLUS FOMMDでJosef Greys Kozaburo Hair Style for Fallout 3.espとeyes_hairpack_en.espのチェックを外す。HairPack_2chPlus.espを髪MODの中で一番下に EZCompanion(コンパニオン作成、追加)Temple_of_Cant_V08-8915.7z はコンパニオンを復活させるものらしいので導入 ALL_DLC_patch_in_ONE_ver2-8915.7z 全DLCインストールされているので導入。一個でも足りなければ導入不可 -Children of the Wasteland- Enhanced Playable Childrenに統合されたので削除 Enhanced Children Project1.1(子供MOD) に順番に修正を当てていく。esmのチェックを外す -Children of the Wasteland- Enhanced Playable Childrenに統合されたので削除 CUTE Girl Body Replacement(子供用衣装追加)CuteCarmineZubonPatch-5647.rarを当てる CUTEBodyBaseFixed-5647.rarはEnhanced Children Projectと被るところが多いので入れなかった Cat Outfits R2(猫っぽい衣装追加) 俺の嫁MOD(リベットシティにコンパニオンと部屋を追加)こどもていこく2.0に未対応でCTD起こすので外した BOSS for FO3(ロードオーダーをある程度自動で) dat、exe、と新しいマスターリストをDataフォルダに入れdatをぽちる 日本のMODは殆ど登録されていないので必須マスターファイル等に気をつけて並べる PipWare UI(UI改善) DarNified UI F3使ってたけど設定メンドイ Mart’s Mutant Mod RC5(MMM。モンスターの数や種類増やす大型MOD) 重くなる、不安定で迷ってたけどやっぱ入れてみる 上書きはUOPのモンスnif2個、FOOK2のnif,kfいっぱい 悩んだ挙句上書き 入れたのは メインとその一つ下及び DLC系に全部チェック DLCの敵の数が増える Natural Selection モンスター同士が戦うようになる Increased Spawns 出現ポイントからの出現数が増える Reduced Wasteland Spawns 12%の確率で出現ポイントから何もでない Zones Respawn オブリみたいに建物内にもリスポン。クエストとかでわいたらまずいところにはわかない Feral Ghoul Rampage グールの出現数が増える Tougher Traders 商人ががモンスから保護される No系は機能減らして軽くするものなので別にチェック入れなくてもいい FOIP_-_Marts_Mutant_Mod_package-4968.zip FOOK2とMMMの互換性を保つためのesp Mart s Mutant Mod - FOOK2.esp Mart s Mutant Mod - FOOK2 - DIK.esp を入れる MMM本体のespのチェックを外す必要はない Directional_PipLight_LITE-9084.7z(Pipboyに懐中電灯機能を追加) 入れてゲーム始めるとオプション画面が表示されるのでそこでホットキーやライトの設定をする Tabのライトも普通に併用出来る なんとなくLキーに割り当てた shift+Lでオプション再表示 JSBackPackv1.7z(装備MOD) ぶっちゃけランドセル CustomGlasses.rar(自作装備MOD) シンプルなメガネ。egmの作り方わからなす ヌコミミさん追加装甲Ver2.2.zip(装備MOD) chinesestealtharmorhelmet.dds、chinesestealtharmorhelmet_g.ddsの上書き確認が出たのでとりあえずNO FOOK2のファイルみたい Reinforced Chinese Stealth Suitにテクスチャファイル入ってないし何だろ まあGIMPで見たら同じものっぽいので見なかったことに Reinforced Chinese Stealth Suit(装備MOD) ヌコミミさん追加装甲の必須MOD 中華ステルスのモデルを改造したものを追加 少佐コスチュームセットVer.1.4(装備MOD) 攻殻機動隊の少佐のコス Koukaku Armor Ver1.4 のVault 112対策パッチ + α v1.1 の+ αv1.1の中のespを上書きし高性能化 Koukaku_Weapon_Ver.0.5(装備MOD) 攻殻機動隊のセブロM-5 コリジョンがちょっと大きい? MAKStealthSet(装備MOD) えっちぃステルスアーマー+@ MAKStealthSet.espをDataフォルダに入れるのを忘れずに Pantyhose v1.1(装備MOD) ストッキング Jill Valentine BSAA Outfit TYPE 3(装備MOD) バイオハザードのジルの服 Gantz Stuff(装備MOD) ガンツの服と武器 Micro Bikini and More recolour pack for TYPE3(装備MOD) 水着 CSwimsuit_and_Leather_Harness_recolour-5778.7z Micro_Bikini_recolour_pack-5778.7z Thong_pack-5778.7z を一つのフォルダにまとめる Updated_Harness_Mesh-5778.7z を更に上書き meshes、textures以外のファイル捨てて Merged_esp_for_all_packs-5778.7z のespファイルを入れる Micro_Bikini_and_Thong_Optional_Meshes_for_Type3_CALI_Body-5778.7z はType3 CALI Body入れてる人か胸大きくしたい人だけ入れる Micro Bikini for Type3(装備MOD) Micro Bikini and More recolour pack for TYPE3と一部被るけど妥協 More recolour pack for TYPE3のテクスチャの上書き確認はとりあえずNoで Yoko s Outfit for Type3(装備MOD) グレンラガンのヨーコの服 対物ライフルによく似合う Bunny Suit for Dimonized Type3(装備MOD) バニーさん Father and Nun clothes(装備MOD) シスター&神父 Maybe Jills Outfit(装備MOD) バイオハザードのジルの服 PE Dress for Type3(装備MOD) パラサイトイブのアヤの服 このゲームは足が早くて良い Sailor Uniform(装備MOD) セーラー服 School Uniforms for Type3(装備MOD) 学生服 何故か黒ニーソメイドが入ってる Wearable Backpack - BlackWolf Backpack 1.0(持ち運べる量を増やすバックパックを追加する) BlackWolf Backpack.esp メイン BlackWolf Backpack - Vendor Script Replenish.esp 店に並べるesp Moira`s Crater Side Supply in Megaton Chief Gustov in Tenpenny Tower Potomac Attire in Rivet City Market Place Vendor Caps Will Be Increase by 500 (Once Only) で売られる BlackWolf Backpack - Blank s Container Patch.esp(置くと移動出来るコンテナとして使用できる。立った状態でアクティベートするとコンテナ、スニークでアクティベートすると回収出来る。回収するとコンテナに入っていたものはインベントリに移される) [BonusMod]AkiraSMGフォルダ AKIRAに出てくる武器を追加する [OptionalFILES] BlackWolf Backpack - Anchorage Gauss Rifle Fix.esp(ガウスライフルを装備するときバックパックを非表示にする) BlackWolf Backpack - Vanilla Big Guns Fix.esp(ビッグガンを装備する時バックパックを非表示にする) BlackWolf Backpack - Zeta Drone Cannon Fix.esp(ドローンキャノンを装備するときバックパックを非表示にする) 上書き系 BackpackXXWG (OptionalLowResNormalTexture).zip(これを上書きすると負荷の低い低クオリティのテクスチャに変わる) [ReplacementESP]AlternativeBackpackStraps(バックの肩紐にクッションが付く) [ReplacementESP]DisableBackpackStraps(バックの肩紐を非表示にする) [xReplacementESP]BumBagUseBodySlot1フォルダ BlackWolf Backpack.esp(15WGのバッグのスロットを"BodySlot1"に変更し、他のバックパックと併用出来るようにする。) [ReplacementESP]AlternativeBackpackStraps(肩紐クッション版) [ReplacementESP]DisableBackpackStraps(肩紐無し版) #BackPackMeshesWithPaths .zip(モデルのスワップを確認するためのテスト用ファイル) Wearable BackpackフォルダBlackWolf Backpack.bsa BlackWolf Backpack.esp(ノーマル) BlackWolf Backpack - Vendor Script Replenish.esp BlackWolf Backpack - Blank s Container Patch.esp の構成にしてみた FixはFOMMでアイテム増えてるせいで殆ど効果無いので3個esp増えるくらいなら無くていいやと言う感じでスルーしてみた Fallout Stutter Remover(FOSEプラグイン) Falloutのカクつきを低減してくれるかもしれないソフト FOMMで入れようとすると違うところに置かれるので zipの中のDataをFalloutフォルダのDataに上書き sr_Fallout_Stutter_Remover.iniのMaximumFPS = 30をMaximumFPS = 60にして FPS上限を60にしてみた Bobblehead Cheat(ぶっちゃけチート) ボブルヘッド探すの疲れたよパトラッシュ… メガトン内の入り口横とリベットシティのマーケットにボブルヘッドをまとめて配置 Tactical Weapons(武器MOD) 麻酔銃やスタングレネード、遅延信管の付いた爆弾を射出する武器が追加される Cat Outfits R2(修正) なんか髪型少ないと思ったらRace選択するときにSaram Hairがなかった FO3Editで見たところFallout 3 Saram Hairが原因ぽいということがわかったので改造 Saram Hair使ってる人は入れ替えるといいかも http //loda.jp/f3ssmod/?id=1397 FOOK2に統合されたので削除 Fellout(ウエストランド環境改善MOD) 核戦争から何百年も経ってるのに大気汚染されすぎだろと作られたMOD Fellout_1_1_17_BETA3-2672.zip 本体 Fellout_1_1_DLC_Add-Ons-2672.zip 各DLCの大気を浄化。入れてないLCのespを入れちゃダメ Greener_Grass-2672.zip 多少緑の草を追加 ついでに太陽も綺麗にしようとAtmospheric Sun Glareを入れようとしたがFelloutに統合されてたので入れなくて平気だった FOOK2に統合されたので削除 Fallout Street Lights(街頭に光を追加) ちょっと暗いので HairPackFULL-MMM-FOOK2_PATCH1.0(自作MOD) Hair Packのhair_add_npc入れてもレイダーの髪がいまいち変わらないと思ったらレイダーの種族がMMMレイダーになってることが判明 それに対応したYoshikinaKota HairPack Fix for MMMはFOOKに対応してるけどFOOK2に対応してないことも判明 じゃあHairPack Fix for MMM v1_3bを元に作成してみようと言うことで FOOK2、MMM、、Mart s Mutant Mod - FOOK2、HairPackのフル版(HairPackのCompSaramHMフォルダに入ってるやつ)の環境で レイダーの髪型の変更を適応出来るespを作成 SS http //loda.jp/f3ssmod/?id=1420 MOD http //loda.jp/f3ssmod/?id=1423 Custom Race Endings Broken Steel OverRide Custom Raceでブロークンスティール始まんないよ対策 AngelVer2(コンパニオン) 何か忘れてると思ったらこれ入れてなかった。えんじぇる種族のコンパニオンを追加 meshes、Sound、texturesとAngel-改βのLoliの方のespをフォルダにまとめてFOMM loriraider2.nifの上書き確認はNoにしてみた Fallout 3 Sexus Mod(せくさす18禁) 入れなおし 前バージョンのFallout 3 Sexus Modを削除 こどもていこくModをFOMMのパッケージマネージャーからディアクティブに せくさすのespは Fallout 3 Sexus.esp → Children Empire不要 Fallout 3 Sexus with Children Empire.esp → ChildrenEmpire 必要 らしく ChildrenEmpire.esmはOYMが参照してるのでFallout 3 Sexus.espの方は入れちゃダメ せくさすのmeshes、Sound、texturesとChildrenEmpire.esm、Fallout 3 Sexus with Children Empire.espを入れてFOMM こどもていこくをアクティブにするとChildrenEmpire.esmの上書き確認が出るがNOで 結局最終的に ChildrenEmpire.esm(こども関連+こどもレイダー追加) Fallout 3 Sexus with Children Empire.esp(せっくるかんけい) こどもていこくのテクスチャやメッシュ があれば良い こどもていこくの ChildrenEmpireEnemies.esp(こどもレイダー追加ChildrenEmpire.esmと被ってない) ChildrenEmpireSoldiers.esp(こどもコンパニオン召喚銃系) は併用できそうなので ChildrenEmpire.esm(こども関連+こどもレイダー追加) Fallout 3 Sexus with Children Empire.esp(せっくるかんけい) ChildrenEmpireEnemies.esp(こどもレイダー追加ChildrenEmpire.esmと被ってない) ChildrenEmpireSoldiers.esp(こどもコンパニオン召喚銃系) にしてみた French Maid for Type3(装備MOD) Maid Costume(装備MOD) を入れなおし なんか片方どこ探しても無いと思ったら同じ場所に置いてあるせいで片方の情報が上書きされてたので マージesp作成 二つのMODのテクスチャメッシュ関係は普通に入れてespを入れ替えて下さい http //loda.jp/f3ssmod/?id=1424 Level Cap Workaround(LVキャップを40まで引き上げる) ブロークンスティール入ってるのでMax_Level_Workaround_-_Broken_Steel-121.7zの MaxLevelWorkaround.espを導入 MaxLevelWorkaround-HP-BS.espはHPも増えるよ版らしいけどHPまで増えたらゲームバランス崩壊しそうなので 通常版を使用 Level Cap Increaser Skill Workaround スキルキャップ100の上限を取り除く Weaponscanner for Fallout 3 武器のステータスを表示するアイテムを追加 FOOK2で武器が大量に追加されたけど何を捨てれば良いかわからなくなったため… エイドにアイテムが追加されるのでホットキーを決める(デフォルトはE) PIPBOY画面でホットキーを押すと今装備してる武器の性能が出る 他の装備見たくなったら装備し直してホットキー Mega Weight 持ち運べる重量限界を50000に ZETAの物全部持ち帰りたい LightBall スクリーンショットをきれいに。ライトで美白 追加されたアイテムをアイテムメニューでポチると光る玉が1個出るのでそれをつかんで移動したり アクティベートして設定したりしてきれいなSSを目指す アクティベートしてディスエイブルで光る玉は消える minivault+ v2.01(Mini Vault等の部屋が追加) アップデートされたので入れなおし eyebrightgreen.ddsの上書きはNoにしてみた 1.5と比べてかなり内装が変わる コンテナルームだとFOODコンテナが無くなってるので注意 MMM - BABE raider texture fix MMMレイダーの下着黒塗りを消す ずーと悩んでたTYPE3 V2 TEXTURES入れるとレイダーのタトゥーがおかしくなってたののが解決 MMMのファイルを上書きするので三回とも上書きYES まだ下半身のおかしいレイダーがいる MMM関連は対応したのでその可能性は省く 関連性を探るとどうやらタトゥーの入ってないレイダーだけおかしいっぽい Fallout - Textures.bsaの Data\Textures\Characters\raiderfemale 覗いてみたらレイダーの股が黒塗りになったテクスチャを発見 Dataフォルダの方の同じ場所を見たらraiderfemaleのフォルダはあるものの中身は空だった と言うことはヴァニラのテクスチャ使ってるレイダーが股黒塗りっぽい ならMMM - BABE raider texture fixのupperbodyfemaleTATのどれかをupperbodyfemale.ddsにリネームして raiderfemaleフォルダに入れれば良いがそれだけじゃつまらない TYPE3RAIDERTEXTURESfull-4280.7z DIMONIZED TYPE3 female body WIPの所にあるやつ これの好きな方、今回はRAIDER TRIBAL TATTOSをFOMMで普通に入れる するとレイダーの体の模様がMMMと合わせて3種類に∩(・ω・ )∩ ばんじゃーい Fallout 3 Re-Animated(モーション変更) しょっぱいバニラのモーションを格好いいものに変更 Shojo Race(種族、髪、目追加MOD) 髪と目の上書き確認があるが全部NOで EZCompanion_Type-N ヌコミミさんスターターキット ヌコミミさん&コンパニオンぷらすぱっく(第3版) ヌコミミさんちのコンパニオン修正ファイルその1.7z EZCompanion_Type-Nとヌコミミさんスターターキットを一つのフォルダにまとめ ヌコミミさんスターター&コンパニオンぷらすぱっくを上書き そして更にヌコミミさんちのコンパニオン修正ファイルその1で上書き EnhancedChildren TalkToAnybody(EnhancedChildrenのオプションファイルにある) 子供種族のコンパニオンに話せるようにする HairPack_2chPlus+EYE.esp(勝手にFixに付属) 種族に追加した髪型と目をきちんと表示されるようにする 一番下に配置 こどもていこく(入れなおし) せくさすのespの上書き確認は二回とも上書き 大規模変更があったのでこども帝国種族でプレイしていた場合そのセーブデータ使えなくなるかも CliffEdge Hideout 全てのオプション入れてFOMM 日本語化も導入 GravityGun(武器MOD) BLAME!の重力子放射線射出装置を追加 FOOK2(アップデートで入れなおし) FelloutとFallout Street LightsがFOOK2に統合されたので削除 FOOK2のFOMMファイルの拡張子を7zにして解凍 そして7zからFOMMに戻す 解凍したフォルダのespとesmを全部削除、修正ファイルを上書きしてそのフォルダをFOMMに 前のFOOK2とFOOK2FIXを外す 干渉しそうなMMMとMMM - BABE raider texture fixを一旦外してFOOK2を導入 上書きは全部YES MMMとMMM - BABE raider texture fixをまたチェック入れて全部上書き 動いたので前のFOOK2とFIXを削除 FOOK2 v1.1 Cumulative Hotfixes (3-30).7z FOOK2 1.1の修正ファイル 上書き確認は全部YES Budweiser(テクスチャ変更) ビールの柄をバドワイザーに FOOK2のビールと同じところを変更するので上書き確認3回ともYES Children of the Wasteland v2.02 (入れ直し) Enhanced Children ProjectとCUTE Girl Body Replacementとスタートを変えて子供種族で始めてもバグらないようにする Childhood Beginningが統合された物 Enhanced Children ProjectとCUTE Girl Body Replacementを削除した後まとめてFOMM UOPとの上書き確認は全てYES、髪型関係の上書き確認は全てNOにしてみた CMF New StartとかぶりそうなChildhood Beginningのチェックを外す District 9 AAR-525 第九地区の銃を追加 「ヌコミミさんスターターキット」と「EZ_Companion Characters from N」とりあえずまとめ版(2010/4/2 第1版)(入れ直し) ヌコミミさんちのコンパニオン修正ファイルその1を上書き 構成はmeshes、textures、[Nukomimi-San] Starter.esp、EZCompanion_Type-N.espと、HairPack_2chPlus+EYE.esp まとめてFOMM 上書きは子どもの体関係で、Children of the Wasteland、こどもていこくとFOOK2の犬関係 フォルダ見比べて大丈夫そうだったので全部上書き Children of the Wastelandの体はブラパンツ付いてるので上書きしないと裸にならない HairPack_2chPlus+EYE.espがあればHairPack_2chPlusいらないのでespのチェックを外す TalkToAnybody.esp なんかコンパニオンと話せないなと思ったら新しくなったChildren of the Wastelandに 子供と話せるようになるTalkToAnybodyが入ってないことが発覚 探してきて導入したらキャキャフフ出来るようになった