Featured image of the post

GregCEu v1.6.0+ での KubeJS マシン追加方

お疲れ様です。Massです。

少し暇な期間ができると誰しも工場長をやりたくなると思います。

GregTech CEuはKubeJSでのアイテム・ブロック追加に対応していますが、v1.6.0から記法に変更が入ったのでさっと備忘録を残します。

https://github.com/GregTechCEu/GregTech-Modern/releases/tag/v1.6.0-1.20.1

BREAKING CHANGES for Addon/Pack Devs と記述がある

日本語でのGregTech CEuでのKubeJSでのアイテム・ブロック追加については以下の記事が詳しいですが、こちらの紹介から記法が変更されている点に注意してください。

変更後の記法について日本語での解説はなかったのでこちらでまとめます。

なお、内容は以下の公式wikiに準拠します。

マテリアルの場合

event.createの引数に直接取る形から、メソッドチェーンで渡す形に変更になりました。

GTCEuStartupEvents.registry('gtceu:element', event => {
    event.create('cryolobus', /* protons */ 149, /* neutrons */ 234, /* halfLifeSecons */ -1, /* decayTo */ null, /*symbol*/ 'Cy', /* isIsotope */ false)
}
GTCEuStartupEvents.registry('gtceu:element', event => {
    event.create('cryolobus')
        .protons(149)
        .neutrons(234)
        .symbol('Cy')
}

単ブロック機械の場合

以前は、event.createの引数に直接マシンのTierを取れていましたが、廃止されました。

GTCEuStartupEvents.registry('gtceu:machine', event => {
    event.create('atomic_reconstructor', 'simple', GTValues.LV, GTValues.MV, GTValues.HV)
        .langValue("Atomic Reconstructor")
        .recipeType('atomic_reconstruction', true, true)
        .workableTieredHullRenderer('gtceu:block/machines/reconstructor')
})

代わりに、Tierをメソッドチェーンで繋げ、definitionに渡す形に変更になりました。.rotationState()の指定をするとエラー落ちします。

GTCEuStartupEvents.registry('gtceu:machine', event => {
    event.create('atomic_reconstructor', 'simple')
        .tiers(GTValues.LV, GTValues.MV, GTValues.HV, GTValues.EV, GTValues.IV, GTValues.LuV, GTValues.ZPM, GTValues.UV, GTValues.UHV, GTValues.UEV, GTValues.UIV)
        .definition((tier, builder) =>
            builder
                .langValue(GTValues.VLVH[tier] + " Atomic Reconstructor")
                .recipeType('atomic_reconstruction')
                .workableTieredHullRenderer('gtceu:block/machines/reconstructor')
        )
})

マルチブロック機械の場合

.machineが追加され,holder以降の部分が.mashineの引数になりました。

event.create('helical_fusion_reactor', 'multiblock', (holder) => new FusionReactorMachine(holder, GTValues.UHV))
event.create('helical_fusion_reactor', 'multiblock').machine((holder) => new FusionReactorMachine(holder, GTValues.UHV))