Skip to content

fix: keep packaging-content patches working on game 0.4.7f11 - #353

Merged
ifBars merged 1 commit into
ifBars:betafrom
r-melvin:fix/f11-packaging-icon-batch
Oct 8, 2026
Merged

ifBars merged 1 commit into
ifBars:betafrom
r-melvin:fix/f11-packaging-icon-batch

Conversation

@r-melvin

@r-melvin r-melvin commented Oct 7, 2026 •

Copy link
Copy Markdown

Fixes #352

Summary

Game 0.4.7f11 removed ProductIconManager.GenerateIcons. Targeting that missing method caused Harmony to reject the entire packaging-content patch class, including the still-valid ApplyVisuals, GeneratePackagingIcon, and GetIcon hooks.

Move the optional load-time batch hooks into ProductIconBatchPatches. Its Prepare/TargetMethod use plain reflection and skip that class when GenerateIcons is absent, while the three packaging-content hooks register normally. Builds with the old batch method retain the existing deferral hooks.

Compatibility

Source/binary: no public or protected API changes. Behavior: restore custom packaging content and icons on f11; retain conditional support for the older batch hook. Persistence/networking: no stable ID, save format, payload, or authority changes. Both Mono and IL2CPP use the same optional-target handling.

Validation

SteamCMD updated the local alternate-beta Mono copy to build 25770882 and beta IL2CPP copy to build 25770926, both game 0.4.7f11. Fresh IL2CPP interop wrappers were generated for the updated game.

The exact PR head builds with zero warnings/errors and passes 775/775 MonoMelon tests and 749/749 Il2CppMelon tests. The #353 + repaired #354 + #355 integration passes 792/792 Mono and 766/766 IL2CPP tests.

Reproduced #352 using the published 3.2.1-beta.8 binaries on both updated runtimes: Harmony reports the missing batch target, and all three packaging-content prefixes are absent. With this PR, all three prefixes are registered and the obsolete batch method is confirmed absent.

An asset-bearing probe registered a custom product and baggie content profile, invoked native ApplyVisuals, GeneratePackagingIcon, and GetIcon, and asserted the generated content transform plus visible red pixels in the 512x512 generated texture. The returned sprite was displayed as an overlay and visually inspected on Mono and IL2CPP; screenshots below show the synthetic red content inside the native baggie. Three copied-save load/quit-to-menu cycles passed on both runtimes in the final integration.

The older game build with the batch method was not rerun. Current f11 behavior was exercised directly; support for the older batch remains conditional in source. Existing IL2CPP reload-portrait and four-role client-spawn failures are recorded separately in #351 and in the optimization PRs.

Disposable game assemblies, probes, copied saves, and raw screenshots are excluded from the commit. This PR remains open; no merge or release was performed.

Mono GetIcon sprite displayed as an overlay: custom red test content inside the native baggie

IL2CPP GetIcon sprite displayed as an overlay: custom red test content inside the native baggie

Hosted f11 checks

Both hosted workflows pass after refreshing the private beta assembly references and replacing their stale assembly caches. Documentation, Mono contract tests, the IL2CPP build, and API compatibility pass; deployment is skipped. #354 and #355 need this packaging change before their fresh f11 checks can pass.

f11 replaced ProductIconManager.GenerateIcons (one batch at load) with on-demand
GenerateRuntimeIcons(productID). The missing target made Harmony reject the whole
ProductPackagingContentPatches class, so ApplyVisuals, GeneratePackagingIcon and
GetIcon were unpatched too. The two batch hooks move to their own class, applied
only when GenerateIcons exists; on f11 the packaging-icon prefix generates custom
icons directly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 7, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: dbb3d7f3-34e0-4ef8-863a-37d1be744048

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ifBars ifBars left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed at 8c22c42.

Reproduced #352 on SteamCMD-updated 0.4.7f11 Mono (25770882) and IL2CPP (25770926) using published 3.2.1-beta.8: the removed GenerateIcons target prevents registration of all three packaging-content prefixes. This PR registers ApplyVisuals, GeneratePackagingIcon, and GetIcon on both runtimes, and native generated baggie icons contain the custom test content. Visual evidence is in the PR body.

The exact head passes 775 Mono / 749 IL2CPP tests with zero warnings/errors. Both hosted workflows now pass against refreshed private f11 beta references and rebuilt assembly caches, including documentation and API compatibility; deployment was skipped. No source repair was needed in this PR.

The older batch-method build was not rerun. Separate IL2CPP reload-portrait and client-spawn baseline limitations are documented in #351 and the optimization PR reviews. This PR remains open; no merge or release was performed.

@ifBars

ifBars commented Oct 8, 2026

Copy link
Copy Markdown
Owner

The two IL2CPP baseline observations now have separate reports: #356 (portraits missing after same-process save reload) and #357 (joining-client Customer.Awake exception and duplicate dealer ID). Both were reproduced with this PR alone, without #354/#355. Their reports distinguish confirmed observations from unverified root causes and record the copied-save/LAN-emulation limits.

Proceeding with the user-authorized merge of the tested packaging fix; no release is requested.

@ifBars
ifBars merged commit 18c74c6 into ifBars:beta Oct 8, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants