たくさんの自由帳
Androidのお話
たくさんの自由帳
文字数(だいたい) : 3428
どうもこんにちわ、これは超会議
Minecraft 26.1が来てたのに忙しくて全然できなかった、ようやく自作MODを対応させました。
なんか子供ゾンビの頭デカくね?
26.1.1と26.1.2はバグフィックスです。
たぶん名前がちょっと変わったくらいしかないと思います。
Comparing 1.21.11-fabric...26.1-fabric · takusan23/ClickManaita2
クリックまな板のソースコード Forge 1.12.2 / Forge 1.16.x / Forge 1.17.1 / Fabric 1.17.x / Fabric 1.18.x / Forge 1.18.x / Fabric 1.19.x / Forge 1.19.x / Fabric 1.20.x / Forge 1.20.x / NeoForge 1.20.x / Fabric 1....
https://github.com/takusan23/ClickManaita2
Comparing 1.21.11-neoforge...26.1-neoforge · takusan23/ClickManaita2
クリックまな板のソースコード Forge 1.12.2 / Forge 1.16.x / Forge 1.17.1 / Fabric 1.17.x / Fabric 1.18.x / Forge 1.18.x / Fabric 1.19.x / Forge 1.19.x / Fabric 1.20.x / Forge 1.20.x / NeoForge 1.20.x / Fabric 1....
https://github.com/takusan23/ClickManaita2
Comparing 1.21.11-forge...26.1-forge · takusan23/ClickManaita2
クリックまな板のソースコード Forge 1.12.2 / Forge 1.16.x / Forge 1.17.1 / Fabric 1.17.x / Fabric 1.18.x / Forge 1.18.x / Fabric 1.19.x / Forge 1.19.x / Fabric 1.20.x / Forge 1.20.x / NeoForge 1.20.x / Fabric 1....
https://github.com/takusan23/ClickManaita2
FabricとNeoForgeからドキュメントが公開されています。片っぽのMODローダー向けにしか作ってないとしても、両方読むと足りない箇所が補完されるので良いかも。
Fabric for Minecraft 26.1
A new version of Minecraft is coming soon with changes that will affect all mod makers. As always, we ask all players to be patient, and give mod developers time to update to this new version. We kindly ask everyone not to pester them. We also recommend all players make backups of their worlds, especially due to the major changes to world storage in this version.
https://fabricmc.net/2026/03/14/261.html

NeoForge for Minecraft 26.1
All you need to know about NeoForge for Minecraft 26.1.
https://neoforged.net/news/26.1release/
26.1は難読化されない初のバージョンらしい。
ので、build.gradle周りも変更されてると思いすべてテンプレートをコピペして部分的に治すことにした。
もしテンプレートからコピペしない場合は手動で追従するかと思うので。
全部微妙に違うせいでホームディレクトリにある~/gradle/wrapper/distsがデカくなりがち
Fabric9.4.1NeoForge9.2.1Forge9.3.1わたしはEclipse Temurinを使ってますが好きなJava 25をインストールしてください。のと、GitHub Actionsとかを使っている場合はJava 25を使うように直す!忘れないで!
ConditionalEffect#codecは第二引数にContextKeySetを取らなくなった。よくわからないが、ただ消すだけで期待通り動いているように見える。しらんけど
名前変わってます!!!
net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup→net.fabricmc.fabric.api.creativetab.v1.FabricCreativeModeTab
クラス名が変わってますExtendedScreenHandlerFactory→ExtendedMenuProvider
class ResetTableEntity(
pos: BlockPos,
state: BlockState
) : BlockEntity(ResetTableEntities.RESET_TABLE_BLOCK_ENTITY, pos, state), MenuProvider, ExtendedScreenHandlerFactory<ResetTableScreenHandlerServerClientData>, ImplementedInventory, WorldlyContainer {↓
class ResetTableEntity(
pos: BlockPos,
state: BlockState
) : BlockEntity(ResetTableEntities.RESET_TABLE_BLOCK_ENTITY, pos, state), MenuProvider, ExtendedMenuProvider<ResetTableScreenHandlerServerClientData>, ImplementedInventory, WorldlyContainerclicked関数のシグネチャが変わってます。引数が増えた
override fun clicked(i: Int, j: Int, clickType: ClickType, player: Player)↓
override fun clicked(slotIndex: Int, buttonNum: Int, containerInput: ContainerInput, player: Player)ExtendedScreenHandlerType→ExtendedMenuTypeになりました。
/**
* リセットテーブルブロックのエンティティのスクリーンハンドラー
*/
val RESET_TABLE_SCREEN_HANDLER = ExtendedScreenHandlerType(
{ syncId, inventory, serverClientData -> ResetTableScreenHandler(syncId, inventory, serverClientData) },
PACKET_CODEC
)/**
* リセットテーブルブロックのエンティティのスクリーンハンドラー
*/
val RESET_TABLE_SCREEN_HANDLER = ExtendedMenuType(
{ syncId, inventory, serverClientData -> ResetTableScreenHandler(syncId, inventory, serverClientData) },
PACKET_CODEC
)NeoForgeのサイトだけどFabricも同じ。
NeoForge for Minecraft 26.1
All you need to know about NeoForge for Minecraft 26.1.
https://neoforged.net/news/26.1release/
AbstractContainerScreenの中のrenderBg、renderLabels関数とかがことごとく消えています。renderBgはextractBackground、renderLabelsはextractLabelsに名前が変わっています。また、GuiGraphics#drawString相当はGuiGraphicsExtractor#textになります。
override fun renderBg(guiGraphics: GuiGraphics, f: Float, i: Int, j: Int) {
val x = (width - imageWidth) / 2
val y = (height - imageHeight) / 2
guiGraphics.blit(RenderPipelines.GUI_TEXTURED, TEXTURE, x, y, 0f, 0f, imageWidth, imageHeight, 256, 256)
}
/** テキスト描画はここで */
override fun renderLabels(guiGraphics: GuiGraphics, i: Int, j: Int) {
super.renderLabels(guiGraphics, i, j)
// アイテムが戻せない場合はなんで戻せないのか理由を
val verify = resetTableScreenHandler.recipeVerifyResult
// エラー時は利用できない理由を
val textColorPair = ResetTableTool.resolveUserDescription(verify) ?: return
// テキスト描画
guiGraphics.drawString(
font,
textColorPair.first,
((RESET_SLOT_POS_X + (SLOT_WIDTH / 2f)) - (font.width(textColorPair.first) / 2)).toInt(), // 真ん中にするため
60,
textColorPair.second,
false
)
}だった場合は、↓になる
override fun extractBackground(graphics: GuiGraphicsExtractor, mouseX: Int, mouseY: Int, a: Float) {
super.extractBackground(graphics, mouseX, mouseY, a)
val x = (width - imageWidth) / 2
val y = (height - imageHeight) / 2
graphics.blit(RenderPipelines.GUI_TEXTURED, TEXTURE, x, y, 0f, 0f, imageWidth, imageHeight, 256, 256)
}
/** テキスト描画はここで */
override fun extractLabels(graphics: GuiGraphicsExtractor, xm: Int, ym: Int) {
super.extractLabels(graphics, xm, ym)
// アイテムが戻せない場合はなんで戻せないのか理由を
val verify = resetTableScreenHandler.recipeVerifyResult
// エラー時は利用できない理由を
val textColorPair = ResetTableTool.resolveUserDescription(verify) ?: return
// テキスト描画
graphics.text(
font,
textColorPair.first,
((RESET_SLOT_POS_X + (SLOT_WIDTH / 2f)) - (font.width(textColorPair.first) / 2)).toInt(), // 真ん中にするため
60,
textColorPair.second,
false
)
}あとrender関数もオーバーライドしていたが、名前変わってる上にこれは消してもぱっと見動いてそうだったため、もう消すことにした。
PayloadTypeRegistry.playS2C()の名前も変わってます。PayloadTypeRegistry.clientboundPlay()
// ネットワークの追加(クライアント・サーバー間でやり取りする)
PayloadTypeRegistry.playS2C().register(ResetTableErrorPayload.ID, ResetTableErrorPayload.CODEC)↓
// ネットワークの追加(クライアント・サーバー間でやり取りする)
PayloadTypeRegistry.clientboundPlay().register(ResetTableErrorPayload.ID, ResetTableErrorPayload.CODEC)レシピを探すようなコードを書いた場合、Recipe#assembleの引数が一つになりました。ServerLevel(かつてWorldと呼ばれてたクラス)を渡さなくてよくなったらしい
private fun CraftingRecipe.craftOrNull(): ItemStack? = runCatching {
assemble(CraftingInput.EMPTY)
}.getOrNull()私が遭遇した名前変更は↑に書きましたが、それ以外であった場合、ここから前の名前と今の名前の対応表があります。ここから探すことが可能
こっちもMODテンプレートを入れなおしました。gradle.propertiesの値が消えて、直接neoforge.mods.tomlに書き込むようになった模様?
この二つが消えて
# The authors of the mod. This is a simple text string that is used for display purposes in the mod list.
mod_authors=takusan_23
# The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list.
mod_description=CheatMOD.tomlの方に直書きするようになった?かも
# The authors of the mod, displayed in the mod UI (optional)
authors="takusan_23"
# The description text for the mod (multi line!) (#mandatory)
description='''
CheatMOD
'''こっちも同様にテンプレートからコピペしました。こっちはpropertiesからmods.tomlにべた書きするようになったみたいです。build.gradleとmods.tomlで値が分散してしまう...
Gradleタブにある、runClientを直で起動できるようになっていたが、これであっているのかが分からない!Forgeは何も教えてくれないからな~
getRandom()がpublicにあるのでそれで。てかなんで今まで動いてた?
今回は、Fabricの方がなんだか調子悪く、Minecraft Clientが頻繁にバツマークになってしまった。.ideaとかbuildとかを消して開きなおすと直ったからよし!
Minecraft入れなおしたんだけど、Minecraft Launcherのダウンロード分かんなくて数分探しまわったり、Microsoft Storeに先にMS アカウントでサインインしておけとか、Xboxのダイアログが二回くらい出てきたり、なんかのタイミングでローカルアカウントからMS アカウントに昇格していた。
GitHubがこうならなくてよかった!