IC2Exp更新履歴

概要

ここではIC2Expの各バージョン間でのCropに関する差分を載せる。各見出しの下にある記述は、その下の見出しからその見出しまでに行われた更新点である。

更新が膨大なため、ここではバイナリ名にCropが入るクラスのみを追跡している。また、更新がまばらな地帯では飛び飛びのバージョン番号のみ調査している。

凡例

太字: ゲームシステムやプレイに影響のある変更
青字: 未整理
桃字: 変更のあったクラス
緑字: IC2Expの前提環境
(ただの数字列の場合Forgeのバージョン)

dependencies記法について
例:required-after:Forge@[10.13.0.1200,) ←Forgeの10.13.0.1200以上で、上限無限のバージョンが必要で、IC2はこれより後にロードする

型について

例としてInteger型のフィールド(およびローカル変数やパラメータ等)fやInteger型の戻り値のメソッドmを書くとき、次のように書いている。

  • Integer f
  • Integer m
  • Integer m()
  • f : Integer
  • m : Integer
  • m() : Integer

特に書き分けとかは無い。しかし、メソッドを示す際にも()を省略して記述していることが多いので注意が必要である。さらにもしかしたら引数があるメソッドにもかかわらず()が付与されている場合もあるかもしれない。

更新日時について

本記事に記載されている日付は、Jenkinsに書いてある時間である。リリース時点における日本時間ではない。どこの国の時刻なのかはよく知らない。

編集上の注意

最近のIC2ExpのjarにはAPIのマジソースが付属しているので、Jadで解凍保存したZipには2つのJavaファイルができる。このあと、フォルダに解答する際は上書きを「いいえ」にするともともと付属しているソースがフォルダに解凍される

更新履歴

バージョン: industrialcraft-2-2.2.751-experimental 2015年7月18

  • 新作物Eating(食虫植物?)追加
    • クリエイティブモードのプレイヤー以外の生物をみんな喰う(?)
  • ワート系の根の長さが3に

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.750-experimental 2015年7月17

なし

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.731-experimental 2015年6月5

ICropTile (API)

  • harvestAutomatedがまさかのharvest_automatedに巻き戻る。

729~730のAPIと互換性が無いが、その直前のAPIと互換性が生まれた

TileEntityCrop

ちょっと変わった。

  • 更新前  (int)Math.max(0.0D, IC2.random.nextGaussian() * chance * 0.6827D + chance);
  • 更新後  (int)Math.max(0L, Math.round(IC2.random.nextGaussian() * chance * 0.6827D + chance));

intへのキャストが、小数の切り捨てから単に型を変換する役割となった。そして小数の切り捨て方が四捨五入になった(よって、収穫物が直前のバージョンよりも0.5個増えた)。新・収穫量の記事

バージョン: industrialcraft-2-2.2.730-experimental 2015年6月5

なし

バージョン: industrialcraft-2-2.2.729-experimental 2015年6月4

仕様が少し大きく変更となった。中程度の更新。

CropCard (API)

  • dropGainChanceの内部処理が乗算のforループからMath.powの利用に変わった。
    • このメソッドは後々doubleになるようだ。

ICropTile (API)

  • harvest_automatedのメソッド名がharvestAutomatedに変更。
  • APIの更新の必要あり

TileEntityCrop

収穫に関する変更である。

harvest_automatedがharvestAutomatedになり、処理内容が次の点を除いて等価に簡単化された。

  • 元の処理  chanceから0以上1未満の一様乱数を引くことができた回数が収穫物のドロップ数となる。
  • 新しい処理  (int)Math.max(0, IC2.random.nextGaussian() * chance * 0.6827 + chance)収穫物のドロップ数となる。

この変更が等価であるか否かは、検証中である


harvestメソッドが色々変わった。その更新後の処理内容は次の通りである。

harvestAutomatedをfalseで呼び出し、ItemStack配列型dropsに代入する。
dropsがnullならば、falseで終了する
現在のスレッドがサーバースレッドであり、dropsが要素を持つならば、{
  dropsのすべてを地面にドロップする。
  そして、trueで終了する

このメソッドは、元々は確率でスタックのサイズ上昇を行っていた。それが消えたので、もしかしたら収穫量が下がっているかもしれない

バージョン: industrialcraft-2-2.2.728-experimental 2015年6月4

なし

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.714-experimental 2015年4月13

CropCoffeeが小変更。

  • attributes(属性)の項目の一つが変更。
    • 旧: Ingrident
      新: Ingredient
    • もしもこの項目と等しい項目を持つ作物が他に存在する場合、交配難易度に影響する

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.710-experimental 2015年4月4

なし

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.690-experimental 2015年3月7

TileEntityCropのattemptCrossingとcalculateRatioForが小変更。

  • attemptCrossing: 詳しく検証しなければよくわからないが、アルゴリズムがなんか微妙に変わった。
  • calculateRatioFor:
    • これまで意味不明な変換をしていたstat値の比較が、遂にそこが正常になった
    • しかし、意図した動作と(編者の偏見で思われるものはstat値が2以上離れていた場合に一律でvalueを1下げるという処理だが、処理の変更によってstat値が離れているだけvalueが際限なく下がるようになってしまった。
      • ちなみにバグ版では離れ過ぎていた場合でもvalueを2増加させるというかなりカオスなものだった。
      • この影響で数々の作物種が仕様上出現しなくなる高度なバグが生まれたかもしれない?
        • アシ→樹液アシ変換が相変わらず強力にTierを上げるのでその危惧は(とりあえずIC2内だけなら)去った

以下にも新しくなった交配レート表を載せる。旧交配レートはこちら。ブラウザで並べてみると分かるが全く以て別物と化した。

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.685-experimental 2015年2月28

なし

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.683-experimental 2015年2月23

CropCardが後方互換性を確保。

まず、Ic2CropCardextends CropCardというクラスが追加された。それにより、全てのCrop~クラスの親がCropCaradからこいつに変わった。

Ic2CropCardでは次のことをしている。

  • owner(): "IC2"
  • displayName(): "ic2.crop." + name()
  • discoveredBy(): "IC2 Team"
  • registerSprites: 最大成長サイズの分だけ、"ic2:crop/" + name() + "." + iを登録。

そしてその親クラスであるCropCardではどうなったかというと、

  • コンストラクタ: modidにgetModIdを代入
    • コメントにはModIdの設定は本当のオーナーModの初期化イベントでやるべきと書いてある。
  • modid: 追加
  • getModId: もともとowner()に書いてあったのがここに来た。
  • owner(): modid
  • displayName(): name()
    • コメント文曰く、後方互換性のためにそのまま名前を返している(昔はname()の戻り値が"Wheat"とかだった)。
  • discoveredBy(): "unknown"
  • registerSprites: ​テクスチャファイルの参照先が次のようになった。
    • 旧: ic2:crop/名前.成長サイズ​
      新: ic2:crop/blockCrop.名前.成長サイズ
    • こちらも後方互換性のために"blockCrop."を含めていると書いてある。

つまり後方互換性のためにIc2CropCardを用意せざるを得なくなった。

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.682-experimental 2015年2月22

なし

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.679-experimental 2015年2月17

id撤廃改革

APIが、

  • コメントが盛大に模様替えした
  • メソッドがいくつか増えた
  • ちょくちょく空白や改行が整形された

次の4つのクラスはAPIクラスである。

  • BaseSeed: idを用いるコンストラクタが非推奨になり、CropCardを使うコンストラクタが出現した。
    • 近い将来、作物種を文字列で保存することになるようだ
  • CropCard: 
    • メソッドString owner()が出現。
      • デフォルトではLoader.instance().activeModContainer、若しくはIC2を返すようになっているが、多分Mod側でオーバーライドして使えと言うメソッド。
    • String displayName()が出現。
      • "ic2.crop.名前"になっているが、翻訳ファイルの左辺である。
    • String getTextureFile()が消滅した。
      • 内容は"/ic2/sprites/crops_0.png"を返していたが、/assets/ic2/spritesというフォルダはないのであるだけ無駄なメソッドであった。
    • getSeeds ICropTile#generateSeedsへの第一引数がICropTile#getIDからICropTile#getCropになった。
    • isWeed
      • 作物が雑草属性状態であるかの判定でid==0かで見ていたが、その部分が支柱が雑草の作物種である場合に変わった。
      • 「支柱」(ICropTile)は支柱(TileEntityCrop)であって作物種(CropCard)ではないのでバグっている雑草もGr24なければ雑草属性状態にならない。
    • ​getId 非推奨になった。
  • Crops
    • CropCard weed: 追加。曰く、雑草は特別な性質を持っている。よって、ここに晒された
    • CropCard getCropCard(String, String): 追加。ModIdと作物種内部名を喰わせると作物種を返す。
    • CropCard getCropCard(ItemStack): 追加。種を喰わせると作物種を返す。
    • Collection getCrops(): 追加。何も喰わせてないのに作物種が全部貰える。
    • CropCard[] getCropList(): 非推奨化
    • registerBaseSeed: idを使用する古い物が非推奨になり、その部分がCropCardになったものが加わった。
    • getIdFor: 非推奨になった。
    • CropCard getCropCard(int): 削除された
  • ICropTile
    • CropCard getCrop(): 追加。作物種か、nullを返す。
    • void setCrop(CropCard): 追加。
    • short getID(): 非推奨化。
    • void setID(short): 非推奨化。
    • generateSeeds: idを使用する古い物が非推奨になり、その部分がCropCardになったものが加わった。

引き続き、いくつかのべつに中枢じゃないクラスでid撤廃・CropCard化が進んでいる。

  • BlockCrop: getIconにて、チェックがid<0によるチェックからcrop()==nullに変わった
  • CropNetherWartCropTerraWart: 必然変異の際にidではなく作物種を直接代入するようになった

以下はIC2Cropsの変更。

  • ファイナルCropCard[] crops: 削除。
    • 代わりにlegacyIdsというものに変わった。
  • CropCard weed: 削除。APIの方(Crops)に移転。
  • init(): Crops.weedを代入。
  • registerBaseSeeds: Crops#registerBaseSeedの仕様が変わったのに対応。
  • CropCard getCropCard(String owner, String name): 追加。
    • cropMapからownerを引いて、引いた奴がnullでなければさらにnameを引いて返す。
  • CropCard getCropCard(ItemStack): 追加。
    • 受け取ったアイテムのNBTに"owner"と"name"があればgetCropCardして、"id"があればgetCropFromIdして、別に無ければnullる。
  • Collection getCrops(): 追加。
    • 変更不可(イミュータブル)で、ModId順に名前順にCropCardを列挙したやつを結合したコレクションを返す。
  • CropCard[] getCropList(): 参照先がcropsからlegacyIdsに変わった。
  • short registerCrop(CropCard): 参照先がcropsからlegacyIdsに変わった。
    • ​全てのlegacyIdsが埋まっていた場合、id==-1に対してregisterCropをするが、とくに問題はない。
  • boolean registerCrop(CropCard crop, int i): 処理が若干変わった。
    • 変更前: iがcropsの添え字として正しく、該当スロットがnullの場合にスロットにcropを代入してtrueを返す。そうでなければ警告文を出してfalseを返す。
      変更後: iがlegacyIdsの添え字として正しく、該当スロットがnullの場合にスロットにcropを代入する。また、cropMapにcropを登録してtrueを返す。
      • IC2Cropに関してアドオン競合や、コンフィグファイル地獄から解放された?
  • registerBaseSeed: 
    • id版オーバーロード: getCropFromIdにidを入れて、CropCardが出てきたならばCropCard版を呼び出す。
    • CropCard版オーバーロード: 特に前のid版と変わらないが、BaseSeedのインスタンスを作るのにidではなくCropCardを使う。
  • startSpriteRegistration: 参照先がcropsからcropMapに変わった。
  • getIdFor: 参照先がcropsからcropMapに変わった。
  • CropCard getCropCard(int): 削除された
  • 静的メソッドCropCard getCropFromId(int): 上の削除された奴の代わりに登場した。処理は上のものと実質変わらず(getCropListを叩いている)。
  • ファイナルMap> cropMap: 追加。cropMap.get("modid").get("cropName")のように使う。
  • ファイナルCropCard[] legacyIds: 追加。要素数は256個。

以下はTileEntityCropの変更。

  • 全体として、id>-1というのがcrop!=nullになっている。
  • 全体として、id指定からCropCard指定になっている(主にweedであるかの判定)。
  • 全体として、ローカル変数名が変わっている。
  • 全体として、crop()が消えてcropになっている。
  • readFromNBT: id撤廃に関連してCropCardの抽出が以下のようになった。
    • String"cropOwner"とString"cropName"が含まれていれば、そこからCropCardを取ってくる。
    • Short"cropid"があれば、そこからCropCardを取ってくる。
  • writeToNBT: cropidの保存の仕様がreadFromNBTみたいになった。
  • getNetworkedFields: "id"が消えて"crop"になった。
  • tick: ​tickRateに対して<<している文字リテラルが整数リテラルに変わっている
    • 恐らくtickRateがchar型だからjadが文字リテラルに解釈したせい?
  • attemptCrossing: 色々記述が簡略化。
    • デカい関数なのでよくわからないが、もしかしたらゲームに影響のある変更があるかもしれない
    • ローカル変数totalの初期化が謎(またはratiosの扱いが変わった)?
  • tryPlantIn: 引数がidからcropになった。
  • CropCard crop(): 消滅
    • 元々の役目は、TileEntityCropに保存されているidからCropCardを引くことだった。
  • reset: id=-1だったのからcrop=nullに。
    • つまり、nullという値のCropCardは空の支柱を示す。もはやここにはnullを指しているidのせいでクラッシュするという恐怖は無い
  • generateSeeds: 
    • id版オーバーロード: getCropFromIdにidを入れて、CropCardが出てきたならばCropCard版を呼び出す。
    • CropCard版オーバーロード: 特に前のid版と変わらないが、ItemCropSeedのItemStackを作るのにidではなくCropCardを使う。
  • getCrop: 追加。this.cropを返すだけだがpublicである。
  • getID: Crops#getIdForを使ってidを求めるようになった。
  • setCrop: 追加。cropのsetter。
  • setID: IC2Crops.getCropFromIdを引いてCropCardを求めるようになった。
  • いくつかのフィールドが、型とかが変わった。
    • short id→CropCard crop
    • int size, statGrowth, statGain, statResistance, scanLevel
    • static int tickRate

以下は他のクラスの諸変更。

  • ItemCropSeed: NBT構成が以下のようになった。id撤廃にあちこち対応した。
    • Byte growth, gain, resistance, scan
    • String owner, name
  • TileEntityCropHavester: 特に変わってないが所々記述が簡潔化した。
  • HandHeldCropnalyzer: id撤廃に対応。

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.678-experimental 2015年2月17

内部名改革

言語ファイルやテクスチャパックの適用に影響を及ぼす可能性あり(というか確定)

  • Crop作物種名クラス: 全ての作物種のname()の値が、先頭小文字のキャメルケースになった(例:Wheat→wheat、Terra Wart→terraWart)。
  • 各作物種のテクスチャファイルの名前が変わった
    例:
    更新前: assets/ic2/textures/blocks/crop/blockCrop.Aurelia.1.png
    更新後: assets/ic2/textures/blocks/crop/aurelia.1.png
  • ic2/lang/en_US.properties: 変更後の作物種内部名から表示名への翻訳が追加された。
  • CropCard#registerSprites: テクスチャファイルの参照先が以下のように変わった。
                      更新前: ic2:crop/blockCrop.作物種名.成長サイズ
                      更新後: ic2:crop/作物種内部名.成長サイズ
  • IC2Crops: registerCrop内で、"ic2.cropSeed添え字"が"作物種名 Seeds"になるように翻訳を追加していたが、これをやめた。
  • cropSeedInvalid.png: crop.invalid.pngに名称変更
    cropSeedUn.png: crop.unknown.pngに名称変更
  • CropStickReed: CropStickreedに名称変更
  • BlockCrop#getTextureName(int index): 以下のようになった。
    • nullを返す場合を除き、戻り値にgetUnlocalizedName() + "."が付いていたのが消えた。
    • Weed・Infestedが、先頭が小文字になった。

内部名以外に関する変更

  • Crops: メソッドCropCard getCropCard(int)追加
    • これまではgetCropList()を叩いて配列を得て、そこから自前で配列参照をしていた。
  • IC2Crops: getCropCardを実装。内容は、配列の領域外ならnullが帰るだけの配列参照。

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.677-experimental 2015年2月15

IC2Crops#registerCrop(CropCard, int)にて、指定されたidが埋まっていて作物種を登録できなかった場合の警告文の処理が変更。また、表示される文字列が、次のように微妙変わった

  • 更新前: "Cannot add crop:on ID #, slot already occupied by crop:~"

    更新後: "Cannot add crop: ~ on ID ~, slot already occupied by crop: ~."

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.675-experimental 2015年2月8

なし

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.661-experimental 2015年1月22

大幅更新

BlockCrop#getIcon(IBlockAccess, int, int, int, int)にて、以前まではTileEntityCropから作物種を取ってきたらnullチェックもせずにテクスチャを取得していたのが、nullチェックはするようになった。

  • これにより、作物種を追加するModを撤去してもクライアントがクラッシュしなくなった?

crop()革命

TileEntityCrop#cropが、これまではタイルエンティティのインスタンスが持っているidを、APIの配列に叩き込んで作物種を取得するだけだったのが、配列の範囲は考えるようになった。

  • 以前は、植物が無い時(id=-1)に決して呼び出してはならない仕様だった(多分)
  • これにより、呼び出し時に異常なid(大きすぎる値や、負の数)が保持されていた場合でもクラッシュせずにnullが帰る。
    • この関数はいつ呼び出しても大丈夫な代わりによくnullを返す仕様となった(多分)
    • このメソッドは以前の仕様のせいで昔とんでもないバグを引き起こしていた。
    • crop()==nullのとき、それは即ちいろんな意味で作物種が無い(空の支柱であるか、定義されていないidをさしているか)
  • もしかしたら作物種追加Modを撤去しても問題なくなるかもしれない(?)

そこらへんのnullチェックをうまいことなんとかするためか、TileEntityCrop内の次の場所で大量のコードにnullチェックが追加されている。

  • tick: チェックがid<0によるチェックからcrop()==nullに変わった
  • generateWeed: チェックがid<0によるチェックからcrop()==nullに変わった。
    • ​これにより、空ではないが、登録されていない作物種のidを示している支柱に雑草が繁殖するようになった(?)
  • askCropJoinCross: チェックがid<0によるチェックからcrop()==nullに変わった
  • leftClick: チェックがid<0によるチェックからcrop()==nullに変わった
  • pick: チェックがid<0によるチェックからcrop()==nullに変わった
  • rightClick: チェックがid<0によるチェックからcrop()==nullに変わった
  • harvest_automated: チェックがid<0によるチェックからcrop()==nullに変わった
  • harvest: チェックがid<0によるチェックからcrop()==nullに変わった
  • onNeighbourChange: チェックがid<0によるチェックからcrop()==nullに変わった
  • emitRedstone: チェックがid<0によるチェックからcrop()==nullに変わった
  • onBlockDestroyed: チェックがid<0によるチェックからcrop()==nullに変わった
  • getEmittedLight: チェックがid<0によるチェックからcrop()==nullに変わった
  • updateMultiCulture: crop()の仕様変更に従い、空の支柱を参照しても落ちなくなった
  • calcGrowthRate: crop()==nulllによるチェックが追加された
  • onEntityCollision: チェックがid<0によるチェックからcrop()==nullに変わった
  • getScanned: チェックがid<0によるチェックからcrop()==nullに変わった
  • isBlockBelow: 作物種が無いときはfalseを返すようになった

その他の些細なものも含む修正

以下、TileEntityCrop内のメソッド。

  • tick: 雑草の繁殖を行うイベントが、以前はid>-1でなければ起きなかったが、空の支柱でも起きるようになった。成長完了時に植物が存在することをassertするようになった。
  • generateWeed: 内部処理があちこち等価で変わった(ただしバグはそのまま)。
  • attemptCrossing: ローカル変数をLinkedListで処理していたのがArrayListに変わった。ローカル変数ratiosのforループが拡張forループになった。
  • askCropJoinCross: 第4引数の型がLinkedListからListになった。ローカル変数sidecropの名前がsideCropになった。処理の簡略化のため、TileEntityをローカル変数に保存するようになった。
  • updateMultiCulture: 戻り値がbyteからintになった。処理が重複の無いLinkedListから、HashSetに変わり、効率的な処理法に等価交換された。(確か使われていない関数だった気がしたが・・・)。ちなみにマルチカルチャー版方角依存になるバグは据え置きであるが、支柱が空の時にcropを叩いてクラッシュするバグは収まった。
  • getScanned: スキャンレベルが4未満の時の戻り値が微妙に変わった(抜けてた" -"が増えた)

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.660-experimental 2015年1月9

なし

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.655-experimental 2014年12月12

なし

required-after:Forge@[10.13.0.1200,)

バージョン: industrialcraft-2-2.2.650-experimental 2014年10月13

なし

10.13.0.1200

バージョン: industrialcraft-2-2.2.649-experimental 2014年10月12

フェルー・オーレリアの根の長さが3になった

CropHarvester CropAurelia CropFerru

10.13.0.1200

バージョン: industrialcraft-2-2.2.648-experimental 2014年10月8

なし

10.13.0.1200

バージョン: industrialcraft-2-2.2.646-experimental 2014年9月18

バイオームに関する大幅仕様変更

作物種の根底クラス(CropCard)に根の長さ(getrootslength)が追加。

  • 根の長さの一覧
作物種 根の長さ
全ての作物種 1

Cropsクラスのメソッドが次のように変化

  • addBiomeBonus(2引数)→addBiomenutrientsBonus(1引数)とaddBiomehumidityBonus(1引数)
    (ただし、addBiomenutrientsBonusメソッドでもhumidityBiomeTypeBonusを編集するバグがある)
  • addBiomeBonus(BiomeGenBaseを使う)→削除

IC2Cropsクラスの次のフィールドが削除

  • humidityBiomeBonus : HashMap
  • nutrientBiomeBonus : HashMap

各バイオームのボーナス が次のように変化

バイオーム種類 保水環境値ボーナス  肥沃環境値ボーナス 
BiomeGenBase.river 2 0
SWAMP 2 2
FOREST 1 1
JUNGLE 1 2
DESERT -1 0
MUSHROOM 0 2

バイオ種 保水ボーナス バイオ種 保水ボーナス バイオ種 保水ボーナス バイオ種 肥沃ボーナス 
JUNGLE 10 PLAINS 0 END -10 全て 0
SWAMP 10 SAVANNA -2 NETHER -10    
MUSHROOM 5 HILLS -5 DEAD -10    
FOREST 5 MOUNTAIN -5        
RIVER 2 WASTELAND -8        

IC2Cropsクラスのメソッドが次のように変化

  • addBiomeBonus(2引数)addBiomenutrientsBonus(1引数)とaddBiomehumidityBonus(1引数)
  • addBiomeBonus(BiomeGenBaseを使う)→削除

IC2Cropsクラスのバイオームボーナス 取得部分が、*****BiomeBonusではなく*****BiomeTypeBonusを見るように変更。また、バイオーム辞書を用いるようになった

耕土下ブロック(isBlockBelow)が支柱下1~4マスから、支柱下1~根の長さ(getrootslength)-1マスに変更

CropCard Crops IC2Crops TileEntityCrop

10.13.0.1200

バージョン: industrialcraft-2-2.2.645-experimental 2014年9月11

次のテクスチャが追加

  • assets/ic2/textures/blocks/crop/blockCrop.Infested.1~5.png
      1は空の支柱と同一、2~5は芋虫が空の支柱にへばりついている画像
  • assets/ic2/textures/blocks/crop/blockCrop.Weed.4~5.png
      既存の雑草の更に上部分に雑草を追加した画像

支柱ブロック(BlockCrop)に次の処理が追加された

  • getTextureIndex(int meta)にて、metaが2~11の時にもmetaを返す
  • getTextureName(int index)にて、戻り値にindexが2~6のときに「.Weed.」挿入、7~11のときに「.Infested.」挿入
  • getOverlayIcon(IBlockAccess iBlockAccess, int x, int y, int z, int side, int layer)を新しくオーバーライド実装
    • タイルエンティティが非nullのとき、
    • layerが
      • 0なら、getvisualweedlevel>0のときに雑草画像
      • 1なら、getvisualInfestedlevel>0のときに虫画像
    • どれにも当てはまらなければnull

雑草(CropWeed)に以下の変更

  • 最大サイズが3から5に
  • getOptimalHavestSizeが3から1に
  • canGrowは最大サイズに合わせて更新
  • leftclickはイベントをキャンセル(これにより、支柱を破壊しなければ雑草が壊せなくなった)

支柱(TileEntityCrop)に次の処理が追加された

  • 変数weedlevel・Infestedlevelを同名のNBTタグで読み書き
  • getNetworkedFieldsにweedlevel・Infestedlevel追加
  • メソッドgetvisualweedlevel・getvisualInfestedlevelが新規に追加
    • getvisualweedlevelは変数を返すだけ
    • getvisualInfestedlevelは変数の値によって変化
      • ​10未満なら、0
      • 30未満なら、1
      • 50未満なら、2
      • 70未満なら、3
      • 90未満なら、4
      • どれでもなければ5
  • 変数weedlevel・Infestedlevel追加

BlockCrop CropWeed TileEntityCrop

10.13.0.1200

バージョン: industrialcraft-2-2.2.643-experimental 2014年9月10

なし

10.13.0.1200

バージョン: industrialcraft-2-2.2.627-experimental 2014年8月28

ic2.core.block.cropパッケージがic2.core.cropパッケージに総移動

TileEntityCropクラスの変数宣言位置が下部に移動

NBTから各種農薬値(肥料・保水セルのみ)を読みだす時にtryしなくなった

(更に移動) BlockCrop Crop作物種名 IC2Crops TileEntityCrop 
(インポートのみ) TileEntityCrop(Harvester|matron) ItemCropSeed

10.13.0.1200

バージョン: industrialcraft-2-2.2.624-experimental 2014年8月27

次のテクスチャファイルが追加

  • assets/ic2/textures/blocks/crop/blockCrop.BrownMushroom.1~3.png  茶キノコ
  • assets/ic2/textures/blocks/crop/blockCrop.Potato.4.png  変な色のジャガイモ
  • assets/ic2/textures/blocks/crop/blockCrop.RedMushroom.1~3.png  赤キノコ

作物種(CropCard)のデフォルトの発見者名がAlblaka」から「IC2 Team」になった

次の作物種を追加

  • 赤キノコ(ID22)、茶キノコ(ID23)
    • ベースシードは対応するキノコ
    • tier:2、名前はそのまま、stat:04004、attributesは色名及びFood・Mushroom
    • 最大サイズは3、必要成長経験値は200固定、保水農薬値が0より上でなければ成長しない
    • 収穫サイズは3、適切収穫サイズは3、収穫物はダメージ値が32767の対応するキノコ

ジャガイモの収穫可能成長サイズが3から3以上に

CropCard Crop(Brown|Red)Mushroom CropPotato IC2Crops

10.13.0.1200

バージョン: industrialcraft-2-2.2.620-experimental 2014年8月25

なし

10.13.0.1200

バージョン: industrialcraft-2-2.2.618-experimental 2014年8月24

大規模アップデート

種植物素体(CropSeedFood)クラスは解消して人参とジャガイモの個別のクラスに分離した

Crop収穫機(CropHarvester)と農薬散布機(Cropmatron)のテクスチャが追加された

API変更

  • CropCardにメソッド int getOptimalHavestSize(ICropTile paramICropTile) 追加
  • ICropTileにメソッド ItemStack[] harvest_automated(boolean paramBoolean) 追加

各作物種クラスがgetOptimalHavestSizeを実装

Crop収穫機(CropHarvester)の追加

  • 自機を中心とする幅11マス高さ3マス(未検証)の直方体範囲の作物をガンガン収穫しドロップした収穫物も自動回収していく鬼畜マシン
  • 1.6.x系でGregTechの高価なハーベスターを使って自動収穫していたのが嘘のように
  • 1.7.10現在ではGregTechと合わせるとその鬼畜さは増し、ダイヤや赤石といった鉱物資源類を中心に猛威を奮っている
  • 必要コストはバニラIC2Expでは123支柱46鋏5基本機械外装79回路8チェストという安さである

農薬散布機(Cropmatron)が大幅修正

TileEntityCropに次の変更

  • 保水セルの適用メソッド(applyHydration)からmanual引数(手動かどうか)撤去、常に手動と同じ動作になり、引数もインベントリスロットから農薬散布機に変更
  • 自動収穫時のメソッド(harvest_automated)追加。
  • スキャン(種解析機を持って支柱を右クリック)時のメッセージに成長サイズ、最大成長サイズの情報が追加

CropCard ICropTile Crop作物種名 IC2Crops (Container|Gui|TileEntity)Crop(Harvester|matron) TileEntityCrop

10.13.0.1200

バージョン: industrialcraft-2-2.2.617-experimental 2014年8月23

なし

10.13.0.1200

バージョン: industrialcraft-2-2.2.600-experimental 2014年8月19

BlockCrop(支柱ブロック)が大幅変更

BlockCrop IC2Crops GuiCropmatron TileEntityCrop GuiCropnalyzer

10.13.0.1180

バージョン: industrialcraft-2-2.2.550-experimental 2014年8月2

フレームワークの変更に対応したのみ

TileEntityCropmatron TileEntityCrop

10.13.0.1180

バージョン: industrialcraft-2-2.2.517-experimental 2014年7月16

ContainerCropmatronのパッケージが変わる

(Container|Gui|TileEntity)Cropmatron

10.13.0.1152

バージョン: industrialcraft-2-2.2.500-experimental 2014年7月6

1.7.10移行

農薬散布機のテクスチャが変更

APIメソッド Crops#addBiomeBonus にオーバーロード追加
APIパッケージにパッケージインフォが追加

IC2Cropsにあるバイオームボーナス の処理がバイオーム辞書(BiomeDictionary)に対応

農薬散布機のGUIからインベントリ名の表示が削除

農薬散布機のメソッドの更新(フレームワークの更新)

  • injectEnergyUnits→injectEnergy
  • getMaxSafeInput→getSinkTier
  • demandedEnergyUnits→getDemandedEnergy
  • maxInput変数がオミット

Crops IC2Crops (Gui|TileEntity)Cropmatron TileEntityCrop HandHeldCropnalyzer

10.13.0.1152

バージョン: industrialcraft-2-2.1.450-experimental 2014年4月5

「TECrop」という名前でTileEntityCropを登録するようになった

農薬散布機のコンテナクラスの処理が変更(スーパークラスに移動した)

BlockCrop (Container|Gui|TileEntity)Cropmatron (Container|HandHeld)Cropnalyzer

10.12.0.1053

バージョン: industrialcraft-2-2.1.416-experimental 2014年3月3

ネットワーク系の仕様変更に対応

TileEntityCrop

Java javac 1.6.0_30
Minecraft 1.7.2
MCP 9.01
FML 7.2.125.1032
Forge 10.12.0.1032

バージョン: industrialcraft-2-2.0.401-experimental 2014年2月22

1.7.2移行

下記のテクスチャが追加(内容は普通の種袋と同じ画像)

  • assets/ic2/textures/items/cropSeedInvalid.png
  • assets/ic2/textures/items/cropSeedUn.png

支柱ブロック(BlockCrop)の

  • onBlockActivated時にバグ(小数点演算に由来するものなど)があってもぬるぽで落ちないようになった
  • onBlockClicked時に処理の実行をサーバーのみに限定

フェルー・オーレリアがmDrop(変更可能な収穫物アイテム)を持つようになった

フェルー・オーレリアが金鉱石の他、金ブロックにも反応するようになった

TileEntityCropのtick時のC2.network.announceBlockUpdateが除去

耕土下土・耕土下ブロックに関する空気判定が、id=0からisAirに変更

ほぼ全ての関連クラス

Java javac 1.6.0_27
Minecraft 1.7.2
MCP 9.01
FML 7.2.125.1032
Forge 10.12.0.1032

バージョン: industrialcraft-2-2.0.350-experimental 2014年1月4

種袋の内部名(unlocalizedName)が、

  • itemStack == null時及び未調査時
      cropSeedUn → ic2.cropSeedUn
  • 調査レベルが負時
      cropSeedInvalid → ic2.cropSeedInvalid
  • 調査レベルが1以上のとき
      "cropSeed" + getIdFromStack(itemstack) → "ic2.cropSeed" + getIdFromStack(itemstack)

種分析機のisUseableByPlayerの内容が次のように変化

false

プレイヤーが種分析機のuidと同じuidのついたアイテムを持っている場合にtrue

TileEntityCropmatron ItemCropSeed HandHeldCropnalyzer

Java javac 1.6.0_27
Minecraft 1.6.4
MCP 8.11
FML 6.99.19.964
Forge 9.11.1.964

バージョン: industrialcraft-2-2.0.300-experimental 2013年11月10日

作物種登録時(IC2Crops#registerCrop)、既に同IDに登録済みだった場合に行われる出力が次のように変化

System.out.println("[IndustrialCraft2] Cannot add crop:" + 作物種名 + " on ID #" + ID + ", slot already occupied by crop:" +既存の作物種名);

IC2.log.warning("Cannot add crop:" +作物種名+ " on ID #" + ID + ", slot already occupied by crop:" + 既存の作物種名);

IC2Crops

Java javac 1.6.0_27
Minecraft 1.6.2
MCP 8.04
FML 6.2.60.859
Forge 9.10.1.859

バージョン: industrialcraft-2-2.0.250-experimental 2013年10月7日

画像assets/ic2/textures/gui/GUICropnalyzer.pngが追加

種分析機のGUIの、

  • コンテナクラスが多数の変数(ただし使われていない)を持つようになった
  • スロットが一番下1列からインベントリすべてに変わった
  • 縦幅が223になった

(Container|Gui|HandHeld)Cropnalyzer

Java javac 1.6.0_27
Minecraft 1.6.2
MCP 8.04
FML 6.2.60.859
Forge 9.10.1.859

バージョン: industrialcraft-2-2.0.200-experimental 2013年9月19日

Java javac 1.6.0_27
Minecraft 1.6.2
MCP 8.04
FML 6.2.60.859
Forge 9.10.1.859

これより前のバージョンは未調査

最終更新:2015年07月20日 01:54