WyWF

Find the Vanilla seed right in the world creation menu
Back to Files

wywf-1.3.0+26.x.jar

File namewywf-1.3.0+26.x.jar
Uploader
mermagudyanmermagudyan
Uploaded
Jul 25, 2026
Downloads
78
Size
176.0 KB
Mod Loaders
Fabric
File ID
8504936
Type
R
Release
Supported game versions
  • 26.2
  • 26.1.2
  • 26.1.1
  • 26.1

Curse Maven Snippet

Fabric

modImplementation "curse.maven:wywf-1607699:8504936"

Learn more about Curse Maven

What's new

Added

  • only modifier (onlyjustsingleтольколишьодна): accept seeds with exactly one instance of the structure within range. Example: only desert pyramid — exactly one pyramid within ~500 blocks.
  • between modifier (betweenmidmiddleотмеждудиапазон): structure must be within a specific distance range. Examples: village between 500 to 800500..800 villageдеревня от 500 до 800. Supports separators ..todoдо.
  • some N countsome now accepts an explicit count. Example: some 4 village — at least 4 villages within ~320 blocks. some village (no number) defaults to at least 2.
  • Modifier display in search log: Terms now show modifier details: some 4 minecraft:villagebetween 500..800 minecraft:village_plains.
  • Mod Menu + YACL config screen: settings are now accessible via Mod Menu (config button). Uses YACL for a beautiful categorized UI with sliders, dropdowns, and toggles. Both Mod Menu and YACL are optional — the mod works without them (settings via config/wywf.json). Available settings: query language, thread mode, scan radii, sample step, candidate count, stop-at-first toggle, sort-by-distance toggle.
  • "Did you mean?" with consonant-skeleton matching: when the query contains misspelled words, the mod suggests corrections by matching consonant skeletons (e.g. "mnsn" → "mansion", "vllg" → "village", "dsert" → "desert"). Shows ALL corrections at once. Works even when ALL words are misspelled.
  • ExclusionZone enforcement: structure placements now respect vanilla exclusion zones — a structure whose placement is blocked by a nearby structure from another set is correctly rejected.
  • Spawn block prediction improvement: spawn block scanning now covers ±2 chunks (32 blocks) around the origin, matching vanilla's spawn search area, instead of only the origin chunk.
  • Sort candidates by distance: when ON, the final candidate is chosen by distance to the nearest structure (closest first), rather than randomly. Default: OFF. Toggle in Mod Menu → Search.
  • Time limit: maximum search time before stopping. Default: 30 minutes, minimum: 5 minutes. When reached, a dialog asks whether to use the best candidate found, double the limits and search more, or cancel.
  • Max seeds to check: hard limit on seeds evaluated. Default: 10,000,000, minimum: 1,000,000. When reached, same dialog as time limit. Both limits enforce minimums — inputting a lower value snaps to the minimum.
  • Implicit biome for structures: when a structure has a unique natural biome and the query doesn't specify one, the biome is auto-added (mansion → dark_forest, desert_pyramid → desert, swamp_hut → swamp, ocean_monument → ocean, village_desert → desert, village_plains → plains, village_taiga → taiga, village_savanna → savanna, village_snowy → snowy_plains, etc.).
  • Reverse variant mapping: structure variants (village_desert, village_plains, etc.) now resolve back to their base structure (village) for placement checks. Without this, the prefilter couldn't find the structure in StructureSets and discarded ALL seeds.

Changed

  • Distance constants tuned:
    • near: 200 blocks (was default radius).
    • in: 64 blocks.
    • far: 500–1000 blocks (was ~1000–2000).
    • some: 320 blocks scan radius.
    • only: 500 blocks scan radius.
  • NEVER prefilter removed. The structure placement prefilter for never was too aggressive for common structures (villages, etc.) — it mathematically could never reject within the search radius. Full validation handles never correctly without a prefilter.
  • SOME/ONLY re-scan uses biome-aware positions() (not placement-only). BETWEEN still uses positionsPlacementOnly().

Fixed

  • NEVER false positives: never plains village previously accepted seeds with a village within range. Reverted to firstPositionPlacementOnly which correctly resolves structure variants (e.g. village_plains → all village placements via minecraft:village Structure key).
  • SOME re-scan radius: structureScanRadiusChunks for SOME returned the full searchRadiusChunks (40 chunks / 640 blocks) instead of chunks(SOME_BLOCKS) (20 chunks / 320 blocks). Villages at 668+ blocks were incorrectly shown for some 4 village.
  • BETWEEN parsing: trailing 500 to 800 after a term (like village 500 to 800) was not attached. Now retroactively applied to the last term at end-of-loop.
  • BETWEEN re-scan display: positions outside [betweenMin, betweenMax] were shown. Now filtered correctly.
  • evalBiomeTermDirect step: ONLY/BETWEEN biome cases now use effectiveStep(quartY) for correct underground biome sampling.
  • evalBiomeTermDirect BETWEEN biome bug: now uses BiomeField.nearestDistanceBlocks(key, betweenMin, betweenMax) for correct range matching.
  • splitBetweenWord helper: handles single-word BETWEEN patterns (500..800500до800500to800500do800).
  • Thread safety: structure cache race condition. SeedValidator.structureCache inner maps were plain HashMap shared across multiple search threads — could cause ConcurrentModificationException or corrupted data during concurrent reads. Changed to ConcurrentHashMap.
  • Thread safety: WorldContext.sampler() non-volatile lazy init. Multiple threads could see a partially-constructed Climate.Sampler object. Added volatile.
  • stopReason not reset between searches. If search A finished with a stop reason (e.g. "time limit reached"), search B's completion handler would show the wrong reason. Now cleared in start().
  • Duplicate implicit biomes. addImplicitBiomes could add the same biome multiple times if two structures mapped to the same biome (e.g. "ocean monument ocean ruins" → two ocean biome terms). Now tracks already-added biomes.
  • Dangling modifier applied to wrong word. "near xyz village" — the NEAR modifier was intended for "xyz" (which was ignored), but was incorrectly applied to "village". Now modifiers are reset when a word is ignored.
  • All threads named the same. Worker threads were all named "WYWF-Search-{count}", making them indistinguishable in thread dumps. Now uses an AtomicInteger counter.
  • Progress counter drift in linear (biome-only) search. SearchWorker.runLinear did not increment globalSeedCursor on error, causing the progress display to undercount checked seeds. runSplit already did this correctly.
  • Duplicate synonym warnings. Removed duplicate structure entries (desert_pyramidjungle_pyramidswamp_hutigloomonument) that shared synonyms with generic entries and caused first-wins warnings at startup. Unique synonyms from removed duplicates were merged into the generic entries. Village variant entries (village_plains, etc.) kept for compound binding.
  • woodland synonym conflict. Removed "woodland" from mansion synonyms — it was already claimed by the forest biome entry.
  • MC lang parser warning. Moved synonym data files from lang/ to data/ (assets/wywf/data/en_us.jsonru_ru.json) to prevent Minecraft's resource loader from attempting to parse them as language files (which expected string values, not arrays). Updated KeywordDictionary loader paths.
  • Empty query handling. SeedSearcher.start() now fires onFound with a SearchResult(primaryDescription=null) when all terms are filtered out (e.g. unsupported biomes/structures for the MC version), instead of silently never completing — the UI no longer gets stuck on "Preparing...". The null description routes to SearchLimitReachedScreen instead of trying to create a world with seed 0.
  • Text rendering on MC 26.x. GuiGraphicsExtractor.text() and centeredText() check ARGB.alpha(color) == 0 and skip the draw. All UI text colors now use 0xFFFFFFFF (with alpha byte) instead of 0xFFFFFF, which was silently dropped.

This mod has no related projects