Skip to content

Sync wiki recipes, sprites and facts with the main server - #43

Merged
JustinasLa merged 2 commits into
mainfrom
wiki/sync-main-server-2026-09-27
Sep 27, 2026
Merged

JustinasLa merged 2 commits into
mainfrom
wiki/sync-main-server-2026-09-27

Conversation

@JustinasLa

@JustinasLa JustinasLa commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

The wiki's recipes and several pages no longer matched the live main server (TFMCMain01). This PR brings them back in line. The source of truth was a 2026-09-27 snapshot of main's plugin configs and its ItemsAdder resource pack.

Station recipes and sprites

  • Regenerated stationRecipes.ts from main's MMOItems configs. The old data was generated on 2026-09-20. Since then the server removed 18 recipes, added 89 and changed 180. Examples:
    • Medicine serum ingredients.
    • Surgery items were renamed (e.g. Defibrillator is now Smelling Salts).
    • Spawn eggs now cost Wheat Seeds.
    • New ammo tiers.
    • New archaeology tools.
    • New runestone research papers.
    • Lockpick outputs changed.
    • The Bard-class condition on instruments was removed.
  • extract-itemsadder-textures.mjs now resolves items that set MMOItems model: (item_model). Every surgery item does. The artisan tools and enchanted charges are no longer pinned to hand-picked models; they now resolve through their real custom-model-data.
  • Added 10 vanilla sprites from the 1.21.10 client jar. Recipe slot texture coverage is now 1752/1752.
  • An independent check decoded the player resource pack and compared pixels. All 272 custom recipe sprites now match it exactly. Before this PR, 22 were wrong and 8 used an old palette.

Page corrections

Each item was checked against main's configs, and the jar or source where noted.

  • Vehicles: blueprint time is in seconds, counted down once per second. I confirmed this in the deployed VFBuilders 2.1.0 bytecode. Builds take 2 hours to 3 days, not 6 to 96 minutes.
  • Infestations: they spawn day and night (night-only: false).
  • Market Block: the categories are Metal, Mineral, Stone, Wood, Farm, Fish and Alchemy.
  • Research:
    • Craft times are now 2 s for Parchment and 5 s for every paper.
    • Runestones start projects directly; the Staff Runestone has been removed.
  • Thievery: the Strong Lockpick exists, and the lock cycle includes Faction.
  • Guns: the page now lists the server's 24 ammo types.
  • Smaller fixes:
    • Detector crafts give no Engineer XP.
    • Strawberry regrows.
    • The Alloy Forge uses a Lava Bucket.

Test expectations that pinned the old counts were updated. lastModified stamps come from update-wiki-last-modified.py; I left out the unrelated date drift it also reports.

Checks

  • vitest run: 1599 passed, 1 skipped.
  • next build: succeeds.
  • tsc reports errors only in test files this PR does not touch.

Not covered here

The full audit also found wiki issues that need editorial decisions:

  • Component HP for 11 vehicles.
  • Husbandry timings.
  • Cooking station lists.
  • Brewing recipes are absent from the wiki.
  • Unrendered data tables are stale.

It also found server-side config bugs:

  • The "Tree Crafer" typo, shown on 109 Forester recipes.
  • crafting-time: 10' in instrument-station.yml.
  • Cactus Fruit uses the cherry model.
  • Aquamarine is set as a metal.
  • Gathering's herbalism profession ID does not exist.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Wiki Updates
    • Expanded the Guns guide to cover 24 ammunition types across shot, spreadshot, and rockets, including powered variants. Updated Revolver accuracy and Steamlock ammunition details.
    • Updated vehicle construction times, ranging from two hours to three days.
    • Clarified Alloy Forge operation, research crafting times and runestone options, and archaeology recipes.
    • Updated Thievery guidance to include faction-locked containers and Basic and Strong Lockpicks.
    • Strawberry is now listed as regrowing, and infestation spawning and Lure waves are described as available at any time of day.
    • Revised Market Block categories and other crafting and profession details.

JustinasLa and others added 2 commits September 27, 2026 19:48
The generated recipe data dated from 2026-09-20 and no longer matched main:
18 recipes were gone, 89 were missing and 180 differed (medicine serums,
spawn eggs, ammunition, archaeology tools, research papers, lockpicks and more).
Regenerated from main's MMOItems crafting-stations and item configs.

Sprites: the extractor now resolves MMOItems `model:` (item_model) items, so
the surgery items get their current art, and no longer pins the artisan tools
and enchanted charges to hand-picked models that the server has moved away
from. All 272 custom recipe sprites now match the player resource pack.
Added the ten vanilla sprites that new recipes need.

The guns page now lists the server's 24 ammo types, and archaeology uses the
current tool recipes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Vehicles: blueprint times are seconds counted once per second, so builds
  take 2 hours to 3 days, not 6 to 96 minutes.
- Infestations spawn day and night (night-only: false in groups.yml).
- Market Block categories are Metal, Mineral, Stone, Wood, Farm, Fish, Alchemy.
- Research: Parchment takes 2 s and every paper 5 s; runestones, not the
  removed Staff Runestone, start projects directly.
- Thievery: a Strong Lockpick exists, and locks cycle through Faction.
- Detector crafts give no Engineer XP; Strawberry regrows; the Alloy Forge
  consumes a Lava Bucket rather than needing nearby lava.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: dc589c91-b497-4e69-bd8d-c10612e99e2a

📥 Commits

Reviewing files that changed from the base of the PR and between 6f43a3f and baf5093.

⛔ Files ignored due to path filters (120)
  • frontend/app/wiki/data/generated/itemsadderItems.json is excluded by !**/generated/**
  • frontend/app/wiki/data/generated/mmoitemsItems.json is excluded by !**/generated/**
  • frontend/app/wiki/data/generated/stationRecipes.ts is excluded by !**/generated/**
  • frontend/app/wiki/data/generated/vanillaRecipeTextures.json is excluded by !**/generated/**
  • frontend/public/wiki/textures/mmoitems/agate.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/anesthetic.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/antibiotics.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/antiseptic.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/arcane_claw_arm.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/arcane_claw_leg.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/archaeo_pencil.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/archaeo_tracker.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/archeology_handpick.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/archeology_knife.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/archeology_spoon.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/archeology_trowel.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/basic_lockpick.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/broken_disc.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/bronzerocket.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/bronzerocket_powered.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/bronzeshot.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/bronzeshot_powered.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/bronzespreadshot.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/bronzespreadshot_powered.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/chrysoprase.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/clamp.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/coral.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/defibrillator.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/diamond_fragment.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc1.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc10.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc11.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc12.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc13.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc2.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc3.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc4.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc5.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc6.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc7.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc8.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc9.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/disc_fragment.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/engraving_tool.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/etching_tool.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/forging_branding_tool.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/forging_engraving_tool.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/forging_etching_tool.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/forging_hammer.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/forging_sewing_needle.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/forging_small_hammer.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/forging_whittling_tool.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/goldsmith_branding_tool.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/goldsmith_hammer.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/goldsmith_tinker_tool.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/grave_insurance.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/hammer_tool.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/iron_claw_arm.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/iron_claw_leg.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/ironrocket.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/ironrocket_powered.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/ironshot.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/ironshot_powered.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/ironspreadshot.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/ironspreadshot_powered.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/jasper.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/key_chain.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/lab_kit.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/larimar.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/mythrilrocket.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/mythrilrocket_powered.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/mythrilshot.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/mythrilshot_powered.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/mythrilspreadshot.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/mythrilspreadshot_powered.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/neutering_item.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/onyx.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/pearl.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/pins.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/r_alchemy.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/r_trace_detection.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/rawgold_fragment.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/rawiron_fragment.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/rhodonite.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/scalpel.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/sewing_needle.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/small_goldsmith_hammer.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/small_hammer_tool.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/splint.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/sponge.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/steelrocket.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/steelrocket_powered.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/steelshot.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/steelshot_powered.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/steelspreadshot.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/steelspreadshot_powered.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/stitches.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/strong_lockpick.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/surgical_glove.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/tourmaline.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/train_track_junction.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/train_track_layer.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/train_track_recorder.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/train_track_remover.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/transfusion.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/ultrasound.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/vesuvianite.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/whittling_tool.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/wood_claw_arm.png is excluded by !**/*.png
  • frontend/public/wiki/textures/mmoitems/wood_claw_leg.png is excluded by !**/*.png
  • frontend/public/wiki/textures/vanilla/bundle.png is excluded by !**/*.png
  • frontend/public/wiki/textures/vanilla/deepslate.png is excluded by !**/*.png
  • frontend/public/wiki/textures/vanilla/emerald.png is excluded by !**/*.png
  • frontend/public/wiki/textures/vanilla/lapis_block.png is excluded by !**/*.png
  • frontend/public/wiki/textures/vanilla/raw_copper_block.png is excluded by !**/*.png
  • frontend/public/wiki/textures/vanilla/raw_iron.png is excluded by !**/*.png
  • frontend/public/wiki/textures/vanilla/red_sandstone.png is excluded by !**/*.png
  • frontend/public/wiki/textures/vanilla/redstone_block.png is excluded by !**/*.png
  • frontend/public/wiki/textures/vanilla/sandstone.png is excluded by !**/*.png
  • frontend/public/wiki/textures/vanilla/waxed_copper_block.png is excluded by !**/*.png
📒 Files selected for processing (28)
  • frontend/app/wiki/advanced-crafting/page.tsx
  • frontend/app/wiki/arcane-trace-detector/page.tsx
  • frontend/app/wiki/archaeology/page.tsx
  • frontend/app/wiki/data/advanced-crafting.ts
  • frontend/app/wiki/data/archaeology.ts
  • frontend/app/wiki/data/guns.ts
  • frontend/app/wiki/data/recipeTextures.test.ts
  • frontend/app/wiki/data/research.ts
  • frontend/app/wiki/data/vehicles.ts
  • frontend/app/wiki/farming/page.tsx
  • frontend/app/wiki/guns/page.tsx
  • frontend/app/wiki/infestations/page.tsx
  • frontend/app/wiki/items/[slug]/page.tsx
  • frontend/app/wiki/market-blocks/page.tsx
  • frontend/app/wiki/materials/[slug]/page.tsx
  • frontend/app/wiki/materials/herbAcquisition.test.tsx
  • frontend/app/wiki/materials/page.tsx
  • frontend/app/wiki/research/page.tsx
  • frontend/app/wiki/stations/[slug]/page.tsx
  • frontend/app/wiki/stations/page.tsx
  • frontend/app/wiki/stations/stations.test.tsx
  • frontend/app/wiki/thievery/page.tsx
  • frontend/app/wiki/vehicles/[slug]/page.tsx
  • frontend/app/wiki/vehicles/page.tsx
  • frontend/app/wiki/vehicles/vehicles.test.ts
  • frontend/public/wiki/search-index.json
  • frontend/scripts/build-station-recipes.mjs
  • frontend/scripts/extract-itemsadder-textures.mjs

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

Wiki recipe data, vehicle construction times, and guidance changed across several topics. Page modification dates and recipe coverage expectations were updated. The item texture scripts now record and resolve configured item models.

Changes

Wiki refresh

Layer / File(s) Summary
Recipe catalog and station coverage
frontend/app/wiki/data/{advanced-crafting,archaeology,guns,research}.ts, frontend/app/wiki/data/recipeTextures.test.ts, frontend/app/wiki/stations/stations.test.tsx
Archaeology recipe keys and ammunition data changed. The Lost Knowledge Fragment craft time changed. Station recipe-count expectations and lockpick sprite checks were updated.
Vehicle construction times
frontend/app/wiki/data/vehicles.ts, frontend/app/wiki/vehicles/*, frontend/app/wiki/vehicles/vehicles.test.ts
Vehicle build times increased, and recipe time conversion now includes days. The vehicle page and recipe-time tests reflect the updated durations.
Wiki guidance and page dates
frontend/app/wiki/*/page.tsx, frontend/app/wiki/{items,materials,stations,vehicles}/[slug]/page.tsx, frontend/app/wiki/materials/herbAcquisition.test.tsx
Wiki descriptions and instructions changed for crafting, farming, infestations, markets, research, and thievery. Last-modified dates were updated across pages. The materials test now checks forbidden terms as whole words.
Item texture model resolution
frontend/scripts/build-station-recipes.mjs, frontend/scripts/extract-itemsadder-textures.mjs
The recipe builder records configured item models. Texture extraction resolves those models through pack item definitions and distinguishes unresolved item models from missing custom-model-data overrides.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to baf50

The wiki updates have no identified merge-blocking issue; they are ready for normal checks before merging.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 9.52% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 21 functions across 27 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the primary changes: syncing wiki recipes, sprites, and factual content with the main server.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

A rabbit checks the recipe page,
Then hops through tools that parse a model.
New times stretch from minutes into days,
While lockpicks find their named sprites.
The wiki dates now mark the change,
And carrots wait beside the code.

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

@JustinasLa
JustinasLa merged commit a1489bc into main Sep 27, 2026
2 checks passed
@JustinasLa
JustinasLa deleted the wiki/sync-main-server-2026-09-27 branch September 27, 2026 17:53
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.

1 participant