feat: 无尽喷漆罐 GTO 集成(配方、连锁与提示) - #1
Closed
alcox233 wants to merge 24 commits into
Closed
Conversation
GTOCore-Main public tree (gtocore + prebuilt libs, dual signed artifacts CI). History squashed to a single commit.
Root cause of SharedConstantsMixin failure: gtolib.refmap.json was excluded from the jar and gtocore.refmap was empty, so production had No refMap loaded. Ship both refmaps under src/main/resources, stop excluding them, and CI-verify mapping count. Keep Java 25 for Gradle toolchain with bytecode release 21.
Keep signing via org secrets GTO_CERT/GTO_KEY only (no secrets in repo). CI uses Java 21 like prior successful signed builds; fix multiline python verify that could fail the packaging check. Refmaps remain in the jar.
When GTOLib is rebuilt with sources, generate/patch refmap and write to resources + protected jar for no-perm consumers. Always inject a single copy of gtolib/gtocore refmap into the final gtocore jar (with ResourceLocationMixn Shadow mappings). No secrets in repo.
CI without GTOLib sources produces a smaller Mixin AP refmap; always pick the candidate with more mappings so packaged jar keeps ResourceLocationMixn.
Rewrite ResourceLocationMixn to shadow public accessors (production field @shadow failed despite f_ names in refmap). Rebuild protected prebuild and ship refmap with ResourceLocationMixn method mappings. Auto-publish refmap on gtolib package for no-perm consumers.
CI copyPrebuiltGtolib failed because jar was rebuilt (ResourceLocationMixn accessor fix) while .PROTECTED still recorded the previous jarSha256.
- Drop @shadow (short m_/f_ refmap values failed in production) - Cast to ResourceLocation for public getNamespace/getPath - Patch refmap with full owner;name+desc for Overwrite targets only - Rebuild gtolib-protected prebuild + PROTECTED stamp Requires Java 21+ at runtime (GTCEu and friends); Java 17 cannot load.
…olib) --build Root cause: CI submodules:false has no Mixin AP, so ART never renamed mixin Shadow/Overwrite members. Official maven gtolib-forge-1.20.1-26.7.5 ships already-reobfed f_135804_/m_245413_ class (no refmap entry needed). - Restore original ResourceLocationMixn (field shadows + overwrites) - Ship gtolib/gtocore .mappings.tsrg for CI reobfJar - ensureMixinRefmapMappings after jar; verify SRG names on build - CI packaging check: f_135804_ + m_245413_ present, no assertValidNamespace
… --build Old separate GTOLib: reobfJar then encrypt, then GTOCore jarJar finished artifact with SRG mixin members. Monorepo had sealed Mojmap classes and relied on fragile outer reobf. Add reobfGtolibRaw (ART) after packageGtolibJar, before ProGuard/Seal, so protected hollow/class bins already contain f_135804_/m_245413_ like maven gtolib-forge-1.20.1-26.7.5. Refresh libs prebuild + PROTECTED stamp.
After ResourceLocation reobf fix, game died with ClassNotFoundException: com.gto.datasynclib.datastream.DataComponentMap. Old gtolib pulled datasynclib transitively; sealed dual-mod embed does not. jarJar like gtceu so the pack is self-contained.
Use latest release from official Maven https://maven.gtodyssey.com/releases/com/gto/datasynclib-forge-1.20.1/26.7.3/
reobf-before-seal left CleanroomFilterType.getSerializedName unmapped because ART lacked inheritance context; gtocore had m_7912_ only → NoSuchMethodError at GTOBlocks init. Pass compiled gtocore + GTCEu jars as ART --lib so StringRepresentable calls reobf correctly.
writeDualModsToml previously emitted only minecraft/forge/gtceu deps, dropping deeperdarker ordering=AFTER. GTOTagPrefix then called DDBlocks.SCULK_STONE.get() before DD registered → NPE and cascade failures. Now dual toml is based on processResources expanded template + gtolib mod.
- gtolib pipeline: keep unprotected jar named for dev (.dev.bin/userdev), reobf only raw for the prod chain; compileKotlin rerun guard after seal strip; .PROTECTED sidecar sync helper - AGENTS.md: repo conventions (tests decoupled from builds, cloud sign workflow, branch + prebuilt jar rules) - README/README_EN: dual-repo collaboration section - version 0.5.7-beta Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… download Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… edits Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Always build protected gtolib unless -PgtolibUnprotected/-PgtolibDebug (or explicit env/file opt-in). Merge prebuild libs sync into buildGtolibProtected and remove the obsolete update task aliases. Update GTOLib submodule pointer for matching docs.
- 组装机配方:空罐 + 16K ME 组件 + 致密能源元件 + HV 4x 电池箱 + HV 马达/泵 + 钢化玻璃 + 液态彩虹桥(480 EU/t,15s) - FTB Ultimine:允许无尽喷漆罐作为有效工具,连锁长度走 sprayCanChainLength - InfiniteSprayCanBehaviourMixin:客户端形状预取 + 批量 paintBlocks 降卡 - ColorSprayBehaviourMixin:适配 GTM static tryPaintSpecialBlock - 物品 tooltip:妙妙工具 + 操作说明
Contributor
|
test --build |
🔨 Build and Sign状态: ❌ 构建失败 🔗 打开本次构建
请打开构建链接查看失败日志。 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
摘要
对接 GTM 无尽喷漆罐(依赖 GregTech-Modern#47):组装配方、FTB Ultimine 连锁喷漆、批量上色 mixin,以及物品 tooltip。
改动
infinite_spray_cansprayCanChainLengthInfiniteSprayCanBehaviourMixin:客户端形状预取 +paintBlocks批量上色,减轻连锁卡顿ColorSprayBehaviourMixin:适配 GTMtryPaintSpecialBlock静态签名妙妙工具: 无尽喷漆罐+ 操作说明(字面量,避免翻译键未生成时炸显示)测试计划
依赖
请先合并或同时 review GTM PR #47。