Ars Nouveau の Source Link のイベント検知距離は 15 ブロック

ユークリッド距離で。

ソースコード: https://github.com/baileyholl/Ars-Nouveau/blob/dd005b4ff100fb70a660124e2484ff103013a405/src/main/java/com/hollingsworth/arsnouveau/common/block/tile/SourcelinkTile.java#L82-L84

これは記述時点マイクラ 1.19.2 向けバージョン 3.23.0 の値。1.18.2 向け最終バージョン 2.9.0 でも同じ

背景

Create Arcane Engineering をやっていて「そういや Source Link の検知距離はいくつなんだろ」と実装を確認した。以下で示すソースコードのリンクは 3.23.0 のものだけど、CAE が使ってるのは 2.9.0 なのでちょっと紛らわしいかも。

イベント検知系 Source Link

植物の成長イベントがソースになっている Agronomic Source Link や動物の生死イベントがソースになっている Volcanic Source Link は冒頭に書いた実装によってイベント検知している。

つまり、Agronomic Source Link と Volcanic Source Link のイベント検知範囲はユークリッド距離で 15 ブロック。

アイテムエンティティ消費系 Source Link

食物を消費する Mycelial Source Link と可燃物を消費する Volcanic Source Link のこと。これは上のイベント検知系 Source Link と違う実装になっている。

Mycelial Source Link: https://github.com/baileyholl/Ars-Nouveau/blob/dd005b4ff100fb70a660124e2484ff103013a405/src/main/java/com/hollingsworth/arsnouveau/common/block/tile/MycelialSourcelinkTile.java#L38

Volcanic Source Link: https://github.com/baileyholl/Ars-Nouveau/blob/dd005b4ff100fb70a660124e2484ff103013a405/src/main/java/com/hollingsworth/arsnouveau/common/block/tile/VolcanicSourcelinkTile.java#L42

両方とも同じ new AABB(worldPosition).inflate(1.0)。つまりアイテムエンティティ検知範囲は1ブロック(マンハッタン距離)。

Thermal Expansion の Arboreal Extractor で期待した量の抽出ができない

Create: Arcane Engineering を触ってるが、Thermal Expansion の Arboreal Extractor で JEI に記載されているような量の抽出ができない。

原因を調べたところ Arboreal Extractor の実装上の問題で、追加レシピ次第では JEI に記載されている情報とズレが出ることがわかった。

現象

Arboreal Extractor の JEI で表示されるレシピをみると次のようになっている:

Spruce の Arboreal Extractor のレシピ

Spruce Log, Spruce Leaves でオペレーションごとに 50mB の Resin が抽出されると記載されているが、実際には 25mB しか抽出されない。

原因

Arboreal Extractor の実装の影響で Create: Arcane Engineering が追加している別の Spruce レシピを引いてしまっている。 Arboreal Extractor の実装が悪いのか Create: Arcane Engineering の設定が悪いのかは判断が難しいところ。

幹で抽出物・量が決まるというのは割と違和感は無いので Arboreal Extractor の実装はこれでいいかもしれない。

Arboreal Extractor の実装

ここを見れば分かる通り、幹(trunk)だけを見て Fluid の導出をしている。葉(leaves)は少し上で稼働条件を満たしているかという確認にしか使っていない。

この実装により、幹に対する抽出物・量はあとから追加されるレシピによって上書きされてしまう。

Arboreal Extractor のレシピ

Arboreal Extractor でバンドルされている Spruce Tree に対するレシピは次のようになっている:

https://github.com/CoFH/ThermalCore/blob/b55443b053c0991a36fd36d3e192d8e825703f10/src/main/resources/data/thermal/recipes/devices/tree_extractor/tree_extractor_spruce.json#L7

{
  "type": "thermal:tree_extractor",
  "trunk": "minecraft:spruce_log",
  "leaves": "minecraft:spruce_leaves",
  "result": {
    "fluid": "thermal:resin",
    "amount": 50
  }
}

一方 Create: Arcane Engineering では BYG で追加される葉の色違い Spruce Tree に対するレシピを追加している。

https://github.com/CoolerGangster/Create-Arcane-Engineering/blob/27b9ac6feba82aa584e6cc8821089aebf09c978c/overrides/kubejs/server_scripts/treeExtractor.js#L314-L319

{
  trunk: 'minecraft:spruce_log',
  leaf: 'byg:yellow_spruce_leaves',
  sap: 'thermal:resin',
  rate: { living: 25, dead: 4 }
},

JEI のレシピはこれ:

BYG の色違い Spruce に対する Arboreal Extractor のレシピ

kubejs で追加されるのでこちらがあとに読み込まれ Spruce Log に対する抽出量 25mB が上書きされてしまう。

これはあくまで Thermal Expansion が内部で持っている対応付の上書きなので、JEI には反映されない。

回避策

オペレーションあたり 50 mB ほしいなら Fir 使う。ただしこちらにも罠があって、Fir にも Biomes O' Plenty で追加される Fir と Biome You Go で追加される Fir がある。

愚痴

BOP や BYG といった大量にブロックが追加される MOD を採用して一貫性のあるクラフト体験というのはもう無理なのではないかと思う。 自分で Modpack 作るときは Modpack としての一定の完成度を求めるなら手を付けないのが良さそう。

追記: 既存のレシピの倣う形で PR を送った。https://github.com/CoolerGangster/Create-Arcane-Engineering/pull/80 バランスのためにひょっとしたら既存レシピの 50mB を 25mB に変更したいって言われる可能性はあるが。

トライアングルストラテジーメモ

結構テキストあるので楽しく読んでる。エスフロストへ外遊し現在第5章までやったところ。キャラ強化の進捗から判断するに序盤佳境ってところかな?という判断で一度情報まとめる。

爆発

劇中テキストで爆発とういう単語が普通に使われている。黒色火薬(爆裂丸)出たてという文化レベルで爆発って現象は一般的ではないはず。

火魔法あたりにそれに準じる魔法があるのかもしれない。だとしたら爆裂丸の新規性は何?

それともそんな魔法は存在せず、採掘などで発生しやすい粉塵爆発あたりから割りと爆発は身近?

新鉱山で見つかった物

引っ張ってるけどどうせ岩塩。

公国は新鉱山を占領すればいいだけとも思うが・・・後述するそもそも一夜王国包囲をどうやったんだ問題が謎すぎるけど、たしかにそれができるくらい戦力仕込んでおけるなら妥当かも?

海はないけど3国より以前の歴史は?

この舞台での人類史はどうなってるんだろう。海の向こうから人類がきたような設定ではない?

「塩がもっとあれば保存食を用意できそうなれば教国の砂漠の更に先や大瀑布の先の開拓ができる」といった旨の話が出ているので話の展開次第では海にたどり着く?

とはいえ海からの塩の調達は気候に恵まれるか大量の燃料が必要だとは聞く。

塩鉄大戦におけるウォルホード家の立ち位置

公国と王国が手を結んで教国と対峙してるさなかに王国臣下筆頭が敵である教国と手を結ぶってどういう判断?裏切り者扱いされてもおかしくなさそう。とはいえ劇開始時みても相変わらず王国臣下筆頭扱いなのはなぜ?

当時はウォルホード領が王国配下でなく独立した国くらいでないと説明が想像できない。でもそこから劇開始時のような臣下筆頭として扱われるのはかなり厳しそうなので、この仮定はかなり薄い線だと思ってる。

エスフロストによる一夜で王都包囲どうやったの?

  • 包囲できるほどの伏兵を仕込んでた?
    • 無茶すぎるけどリアリティライン下げたならそれっぽい説明になる?
  • 川下りによる急襲?
    • 相当の船数になりそうだしそれなら先に水門戦では?一晩とはいかなそう
  • 陸地からの進行はもっと無理そう

ローゼル

ローゼル族が迫害される理由がある?象徴的な身体的特徴を持つ少数民族が迫害されやすいとはいえなにかきっかけは?

塩湖に住んでいたと書かれているだけで教国より先住民ってわけではない?教国との歴史は?

製塩技術は教国で秘匿されてるって話だしローゼル族はそれは知らなそう?知ってたら公国王国で厚遇されそう。

今マイクラMODのマネタイズで起きている問題

MinecraftのModをホスティングしているサービスCurseForgeがまた炎上しているけどちょっと複雑そうだし面白そうなのでメモ。

背景

CurseForgeはModのホスティングだけではなくMod/Modpackの管理ソフトウェアも配布している。このソフトウェア上の広告で収入を得ている。とは言え、管理ソフトとして機能が足りなかったり、余計なソフトウェア(OverWolf)が付いてくるので、サードパーティ管理ソフトも人気がある。

またCurseForgeはMod製作者へModダウンロード数に応じてこの先述の収益の一部を還元している。今回はこのあたりが話の発端となっている。

問題のきっかけ

CurseForgeは新しいAPIを公開と同時にModの配布設定としてサードパーティー管理ソフトからのダウンロードを拒否できる設定ができるようになった。

https://github.com/PolyMC/PolyMC/issues/593#issuecomment-1130564447

Allow the distribution of this project outside the CurseForge-Overwolf ecosystem.

Note: download outside the CurseForge-Overwolf ecosystem do not count toward the reward program.

「公式クライアント以外からのダウンロードを許可する?そのダウンロードは報奨金の対象にならんけど」というチェックボックスができた。これをチェックしない限りサードパーティー管理ソフトからのダウンロードができないようになった。

この管理画面を見たことがないが、デフォルトオンのオプトアウト方式らしくMod製作者が明示的に操作しない限りはサードパーティー管理ソフトからのダウンロードはできるはずである。が、数十数百のModで構成されるModpackは高確率でサードパーティークライアントを拒否するModを含んでいるため、サードパーティー管理ソフトではModpackで遊べなくなってしまっている。

サードパーティークライアントの反応

APIへの対応に合わせてこのダウンロード制限により、サードパーティー管理ソフトの対応は様々だった。

MultiMC

https://github.com/MultiMC/Launcher/commit/0a827ba70e6ef20187f8507a536d54a8441020dc

This has been requested by Slowpoke, on behalf of both FTB and OverWolf.

Import from locally installed packs from the official clients will be the replacement, but for now, you will have to do that manually.

It was nice while it lasted.

CurseForgeの新API対応にいち早く対応したがサードパーティー制限の問題をうけてかCurseForge対応自体を消してしまった。

ここに出てくるSlowpokeとは多分FTB創始者?のSlowpoke101氏かな?

https://twitter.com/Slowpoke101

PolyMC

APIに対応したあとサードパーティー制限問題への対応は2つ

参考: https://github.com/PolyMC/PolyMC/issues/593

GDLauncher

APIに対応したあとこのサードパーティー制限に関しては特に対応してなさそう?

https://github.com/gorilla-devs/GDLauncher/issues/1342

ちょっとエラーがわかりにくい。

面白いなと思った点

twitterの公式クライアントは広告収入などのためにサードパーティークライアントへの制限を強いてる印象があるけれどこれはやはりサービスホストへの批判がたくさん起きている。

CurseForgeの件では意図してるかわからないが、「Mod製作者」と「プレイヤー」という同じサービスユーザーの分断をし、槍玉に上がりがちなホスティングサービスへの批判をいくらか逸らす役目をしている。

実際、現状でサードパーティー管理ソフトを使って困っているプレイヤーが取れる行動としては、1) 諦めてCurseForge公式管理ソフトをつかう 2) Mod製作者にサードパーティーダウンロードを許可するようお願いして回る、くらいかな?

Mod製作者の中にはこれらの動きを受けてCurseForge以外のプラットフォームにも配布を始めているケースがある。

https://www.reddit.com/r/feedthebeast/comments/utnrlu/cofh_mods_are_available_on_modrinth/

しかしCurseForgeと収益モデルを変えていかない限りは、今回の問題再生産をしているだけなようにも思える。

Forbidden and Arcanus に Hephaestus Forge が来たけどガイドがない

tl;dr Forbidden and Arcanus 16.2.0 で Hephaestus Forge が来た。ソースコード読んで試してみたけど動かなかった。

マルチブロックで動作するみたいだけどまだガイドは用意してないみたい:

https://www.curseforge.com/minecraft/mc-mods/forbidden-arcanus/files/3528782

(instructions comming shortly).

仕方ないのでソースコード読んで再現してみた。

Hephaestus Forge 作成

まずマルチブロックを想定通りに配置する。使うのは台座に:

  • Arcane Chiseled Polished Darkstone x9
  • Chiseled Arcane Polished Darkstone x4
  • Polished Darkstone x48

台座中央に Smithing Table x1

ソースコードに書かれたとおりに配置をして最後に Mundabitur Dust を手に持って Smithing Table に向かって Shift + Right Click で色違い雷が落ちて Smithing Table が Hephaestus Forge に変わる。

スクリーンショット撮った

f:id:daftbeats:20211127180615p:plain
Hephaestus Forge 台座
f:id:daftbeats:20211127180713p:plain
Hephaestus Forge マルチブロック条件が揃った状態
f:id:daftbeats:20211127180719p:plain
Hephaestus Forge のために Mundabitur Dust 使った直後

儀式の準備

Hephaestus Forge のマルチブロックを揃えて作成したただけでは Hephaestus Forge を使ったレシピが実行できない。ここから台座(Darkstone Pedestal)が必要になる。

f:id:daftbeats:20211127190431p:plain
Darkstone Pedestal を Arcane Chiseled Polished Darkstone に載せる

JEI の通り Essence を集めて素材を台座に置いて右クリックしてみたが儀式は始まらなかった。

f:id:daftbeats:20211127190708p:plain
Mending 本の素材を置いたがダメだった

ということでダメでした。現状最高レベルのエンチャント本が作れるレシピしかないので大体魔法系の Modpack なら Eidolon の Soul Enchanter のほうが便利で頑張る動機づけあんまりないのでここまで。

Astral Sorcery の Rock Crystal/Celestial Crystal のプロパティについてメモ

Rock Crystal と Celestial Crystal についているプロパティがよくわからんのでソースコード読んだ。ロアフレンドリーに拘るMODと相性悪いなって気持ちになってきてる。ロアフレンドリーというよりそのMODが敷いてるロアに準じているMODというのかな?

ソースコードは割と練られて作られていて、各プロパティは property ディレクトリを見ればわかるようになっている。

tl;dr 用途別にみるべきプロパティ

  • Collector Crystal の素材に使うなら
    • Purity >> Focus: 星座 > Shape > Size == Collection Rate の順でスターライト収集性能に影響力がある
  • Ritual Pedestal に置くなら
    • 効果は Purity > Focus: 星座 > Ritual Effect > Shape
    • 範囲は Purity > Focus: 星座 >> Ritual Range
  • Crystal Lens の素材に使うなら
    • Purity がスターライト伝送性能に強く影響する
    • 1度のクラフトで 1 + (Size * 2) 個作られるので Liquid Starlight に付けて Size III にしてからクラフトするとよい
  • ツールの素材に使うなら
    • Tool Durability > Size の順に耐久性能に影響がある。
    • ツールとしての性能はそのまま Tool Efficiency だけ見ればよい

「Focus: 星座」は同名の星座に Attune しないと無意味なプロパティになる。なので2つ Focus がついてしまっていたら Cutting Tool で割った方がよさそう。

Collection Rate

これは名前そのままで、Collector Crystal として使った時のスターライト収集性能になる。ただし Purity のほうが Collector Crystal としての性能の影響が強い・・・

最大値は III

該当ソースコード: https://github.com/HellFirePvP/AstralSorcery/blob/1.16-indev/src/main/java/hellfirepvp/astralsorcery/common/crystal/property/PropertyCollectionRate.java

Focus: 星座名

Focus で指定された星座に Attune して、それを:

  • Collector Crystal の素材に使うと、スターライト収集性能になる。
  • Ritual Pedestal に置くと、各種儀式の性能にかかわってくる。多分 Ritual Effect/Range 両方?

最大値は II

該当ソースコード: https://github.com/HellFirePvP/AstralSorcery/blob/1.16-indev/src/main/java/hellfirepvp/astralsorcery/common/crystal/property/PropertyConstellation.java

Purity

いろいろある。

  • Crystal Lens に使った時のスターライト伝送性能
  • Collector Crystal に使った時のスターライト収集性能
  • Ritual Pedestal に置いたときの Ritual Effect/Range

いずれも同名の専用プロパティよりも影響力が高いので、とても強力なプロパティであることがわかる。ただ、Crystal Lens の伝送性能を向上させるには Purity しかないのでメインの用途はこっちかな?とはいえ Collector Crystal は近いとお互い干渉してしまうので数を並べればよいってわけでもないので難しい。

ツールの素材に使っても関係ないみたい。

最大値は II.

該当ソースコード: https://github.com/HellFirePvP/AstralSorcery/blob/1.16-indev/src/main/java/hellfirepvp/astralsorcery/common/crystal/property/PropertyPurity.java

Ritual Effect

名前そのまま。最大値は III.

該当ソースコード: https://github.com/HellFirePvP/AstralSorcery/blob/1.16-indev/src/main/java/hellfirepvp/astralsorcery/common/crystal/property/PropertyRitualEffect.java

Ritual Range

名前そのまま。最大値は II.

該当ソースコード: https://github.com/HellFirePvP/AstralSorcery/blob/1.16-indev/src/main/java/hellfirepvp/astralsorcery/common/crystal/property/PropertyRitualRange.java

Shape

いろいろある。

  • ツールの素材に使った時の Effectiveness
  • Collector Crystal に使った時のスターライト収集性能
  • Ritual Pedestal に置いた時の Ritual Effect (Range は関係ないっぽい?)
  • 各色 Lens に使った時の性能

最大値は III.

該当ソースコード: https://github.com/HellFirePvP/AstralSorcery/blob/1.16-indev/src/main/java/hellfirepvp/astralsorcery/common/crystal/property/PropertyShape.java

Size

影響項目は多くない。

  • Collector Crystal に使った時のスターライト収集性能
  • ツールの素材に使った時の Durability

最大値は III.

ただ、Size は簡単に増やせるので、Cutting Tool で割って大事なプロパティ消失する可能性を下げるためにもサイズを大きくしてから割るというのはありかもしれない。

該当ソースコード: https://github.com/HellFirePvP/AstralSorcery/blob/1.16-indev/src/main/java/hellfirepvp/astralsorcery/common/crystal/property/PropertySize.java

追記: Property で表現されている以外に Crystal Lens の1度のクラフトで 1 + (Size * 2) 個作られるようなので、Purity が高いなど貴重なクリスタルを使うなら Size を大きくしてからクラフトするとお得っぽい。

Tool Durability

名前そのまま。

最大値は III.

該当ソースコード: https://github.com/HellFirePvP/AstralSorcery/blob/1.16-indev/src/main/java/hellfirepvp/astralsorcery/common/crystal/property/PropertyToolDurability.java

Tool Efficiency

名前そのまま。

最大値は III.

該当ソースコード: https://github.com/HellFirePvP/AstralSorcery/blob/1.16-indev/src/main/java/hellfirepvp/astralsorcery/common/crystal/property/PropertyToolEfficiency.java

おわり

ついでに Ritual の自動化についてもソースコード読んで紐解いたけどやっぱり自動化できないように意図的に作られてるっぽい。拘り感じる・・・

All of Fabric 3 (2.6.1)で追加されてるエンチャント

All of Fabric 3 のバージョン 2.6.1 で司書ガチャしてたらよくわからないエンチャントが出てきたのでできる限り追ってみた。エンチャントの詳細についてはリンク先に譲る。Forge だとエンチャントの記述とかどの MOD から追加されたものなのかとか分かるような方法あったが Fabric にはないのだろうか。結局 GitHub"net.minecraft.enchantment" AND "エンチャント名" で検索して調査した。ほかに良い方法あるんだろうか。

Gate of Babylon

Go Fish

Charm

どの MOD で追加されたかわからないエンチャント

  • Telekinesis: Charm の Acquisition のモブドロップ版といったところっぽいなんでレベルがIIまであるのかわからない。