seedlookout
English

OVERWORLD · OCEAN

Ocean Ruins

Page updated

Ruined buildings on the ocean floor, sometimes gathered in clusters. Their chests can hold treasure maps; brushing suspicious blocks can uncover pottery sherds, and warm ruins can also yield sniffer eggs.

This guide follows vanilla Java 26.3. Historical changes retain their own edition and version. Bedrock generation and loot can differ. Screenshots and verified seeds below retain their own game versions.

Java 26.3 · Released · Reviewed

Broken stone-brick walls of cold ocean ruins among underwater kelp
Ocean Ruins at -595, 48, 131Seed 28462718234064871 · Java 26.3 · overworldReference capture · Naturally generated structure, photographed in Minecraft Java 26.3.

Game data and source research

Where it generates in Java 26.3

Warm ruins allow Warm Ocean, Lukewarm Ocean and Deep Lukewarm Ocean. Cold ruins allow Ocean, Deep Ocean, Cold Ocean, Deep Cold Ocean, Frozen Ocean and Deep Frozen Ocean. [2][5]

Candidate positions and rarity

Java 26.3 selects one potential starting chunk per 20×20-chunk region (320 blocks on each side). Candidate selection happens before successful structure generation; this is not a measured density or an average travel distance. [3][4]

The generation entry point samples the ocean-floor heightmap, then hands the start to the ocean-ruin piece generator. A candidate coordinate identifies the start area rather than the position of every building in a possible cluster. [1][3][4][5]

What the starting position means

Warm and cold entries share a 20×20-chunk candidate grid. Equal entry weights are filtered by biome eligibility and retried after failure; they do not make warm and cold ruins equally likely in the same ocean biome. [1][4][5]

Warm sandstone and cold stone ruins

Warm and cold ocean ruins use different template families, with small and large pieces. A large ruin can be accompanied by smaller ruins nearby. Search around the main outline before concluding that the site is one isolated building. [6]

Cold ruins can combine brick, cracked and mossy layers; the repeated template names are material layers, not three separate treasure buildings. Warm ruins use their own sandstone designs. Placement adjusts the pieces to the ocean floor and removes some blocks to create their broken appearance. [6]

Warm sandstone and cold stone ruins
PartWhat to look for
Small ruinA compact ruin with the small-ruin chest assignment. [6]
Large ruinA larger template with the large-ruin chest assignment. [6]
Nearby clusterAdditional surrounding pieces are conditional, not part of every site. [6]

Placed drowned and underwater hazards

Drowned data markers create persistent drowned as the ruin is placed. A marked drowned is an initial resident, not a spawner block. Ordinary drowned spawning elsewhere in suitable water is a separate process. [6]

Warm and cold ruins also use archaeology processors. Search the rubble as well as the chest location, but keep an exit to breathable space: broken walls can hide both an approach route and an enemy. [6]

Loot and rewards in Java 26.3

Large and small ocean ruins have different chest tables, while warm and cold ruins have different archaeology tables. A chest roll and a successfully brushed block are separate reward attempts. [7]

The warm archaeology table has total weight 15. Sniffer egg, Angler, Shelter and Snort sherds each weigh 1. The cold table also totals 15, with Blade, Explorer, Mourner and Plenty sherds weighing 1 each; it does not include the sniffer egg. [7]

The large-chest special pool has a buried-treasure map entry of weight 10 in total 23; the small counterpart has weight 5 in total 12. Both run exploration_map and then a map_id filter with on_fail discard. Those weights describe map-entry selection, not an unconditional chance of a usable map. Both chest sizes have a separate nautilus-armor draw with empty 148 and armor weights 20, 10, 5 and 2. [7]

Compared directly with Java 1.20.1, the Java 26.3 tables differ. The inspected underwater ruin big table gains Buried treasure map, Copper nautilus armor, Diamond nautilus armor, Golden nautilus armor, Iron nautilus armor, Stone spear and no longer lists Map; its first pool changes from total weight 31 to 33. The inspected underwater ruin small table gains Buried treasure map, Copper nautilus armor, Diamond nautilus armor, Golden nautilus armor, Iron nautilus armor, Stone spear and no longer lists Map; its first pool changes from total weight 28 to 30. Use the current weights rather than carrying older chest percentages forward. The older minecraft:map entry with an exploration_map modifier is replaced by a dedicated minecraft:buried_treasure_map entry; treasure maps already existed in Java 1.20.1. [7][9]

Loot and rewards in Java 26.3
ItemWhere the rule appliesWhat the data establishes
Sniffer eggOne successful warm-ruin-table brush6.7% chance; absent from the compared cold archaeology table. [7][8]
Snort pottery sherdOne successful warm-ruin-table brush6.7% chance; the two other warm sherds have the same weight. [7][8]
Mourner pottery sherdOne successful cold-ruin-table brush6.7% chance; the other three cold sherds have the same weight. [7][8]
Buried treasure mapSpecial chest pool, separately for big/small tablesSelection weights are 10/23 and 5/12 respectively; failed map creation is discarded. [7]
Diamond nautilus armorOne ruin-table chest, either size1.1% chance; a separate pool with diamond weight 2 of total 185. [7][8]

Version history and release dates

These milestones retain their edition and exact build labels. Snapshot, beta and preview dates belong to those development builds; full releases and staggered Pocket platform releases are dated separately. Historical introduction claims come from the cited Wiki history. [10][11]

Version history and release dates
VersionReleasedWhat changed
Java 1.13 (18w09a)March 1, 2018Introduced cold and warm underwater ruins. [10][11][12]
Java 1.13 (18w10a)March 6, 2018Added buried treasure maps to ruin chests. [10][11][13]
Java 1.13 (18w16a)April 19, 2018Added drowned during ruin generation. [10][11][14]
Bedrock 1.4.0May 16, 2018Introduced underwater ruins in the Update Aquatic. [10][11][15]
Java 1.16June 23, 2020Reduced the frequency of ocean ruins. [10][11][16]
Java 1.20June 7, 2023Cold ruins gained suspicious gravel and warm ruins gained suspicious sand. [10][11][17]
Java 1.21.11December 9, 2025Ruin chests gained stone spears and nautilus armor, and zombie nautiluses were added as possible ruin spawns. [10][11][18]
Bedrock 1.21.130December 9, 2025Zombie nautiluses were added as possible ruin spawns. [10][11][19]
Java 26.3September 15, 2026Added abandoned-camp explorer maps leading to warm ocean ruins. [11][20]
Bedrock 26.50September 15, 2026Added abandoned camp explorer maps that can lead to warm ocean ruins. [11][21]

SeedLookout in-game verification

Screenshots

Sandstone pillars of ocean ruins surrounded by kelp
Ocean Ruins at -595, 48, 131Seed 28462718234064871 · Java 26.3 · overworldReference capture · Naturally generated structure, photographed in Minecraft Java 26.3.
Close view of sandstone and chiseled blocks in ocean ruins
Ocean Ruins at -595, 48, 131Seed 28462718234064871 · Java 26.3 · overworldReference capture · Naturally generated structure, photographed in Minecraft Java 26.3.

Our screenshots of naturally generated structures in Minecraft. Each caption gives the seed, coordinates and version. Select one to open it at full size.

Seeds with this ocean ruins

None of our verified seeds includes this structure yet. The guide cites game data, code analysis and other references; it does not verify a seed.

Sources

References identify the edition, version and evidence behind the guide. Game code and data describe generation rules; the seed table records locations checked in game. Research reviewed 2026-10-02.

  1. Mojang Java 26.3: structure configuration ↗Official game data · Java 26.3

    Inner archive META-INF/versions/26.3/server-26.3.jar: data/minecraft/worldgen/structure/ocean_ruin_cold.json; data/minecraft/worldgen/structure/ocean_ruin_warm.json

    Evidence details

    Official server SHA-1 33680f5f2ac32864d6d7cf5e56a705fdb3e05f4c. SHA-256 by archive member: data/minecraft/worldgen/structure/ocean_ruin_cold.json = a30893dd35a7c93439f67644a94d591a6608bdddf283ed7dadb62dcc7eeeca4f; data/minecraft/worldgen/structure/ocean_ruin_warm.json = 60d139b7c4b6ef999b429b048fc930ca7a34c7f6ffcad657848abc8f2b079c34

  2. Mojang Java 26.3: resolved starting-biome tags ↗Official game data · Java 26.3

    Inner archive META-INF/versions/26.3/server-26.3.jar: data/minecraft/tags/worldgen/biome/has_structure/ocean_ruin_cold.json; data/minecraft/tags/worldgen/biome/has_structure/ocean_ruin_warm.json

    Evidence details

    Official server SHA-1 33680f5f2ac32864d6d7cf5e56a705fdb3e05f4c. SHA-256 by archive member: data/minecraft/tags/worldgen/biome/has_structure/ocean_ruin_cold.json = 2a830ddda1101ca486aac396259c4e7f02d8c87575b1ab48c1b4ccf3c542100c; data/minecraft/tags/worldgen/biome/has_structure/ocean_ruin_warm.json = 778bc665994e47192a2987130f62326c2e4e3b22d50846910c262429a096a80e

  3. Mojang Java 26.3: candidate placement settings ↗Official game data · Java 26.3

    Inner archive META-INF/versions/26.3/server-26.3.jar: data/minecraft/worldgen/structure_set/ocean_ruins.json

    Evidence details

    Official server SHA-1 33680f5f2ac32864d6d7cf5e56a705fdb3e05f4c. SHA-256 by archive member: data/minecraft/worldgen/structure_set/ocean_ruins.json = 4cf598f0f3a380fd334402518be8f43d9832d5985cf56e6046493f25edbf76cd

  4. Mojang Java 26.3: candidate filtering and weighted retries ↗Decompiled game implementation · Java 26.3

    Inner archive META-INF/versions/26.3/server-26.3.jar: net/minecraft/world/level/chunk/ChunkGenerator.class; net/minecraft/world/level/levelgen/structure/placement/AbstractSpreadingStructurePlacement$ExclusionZone.class; net/minecraft/world/level/levelgen/structure/placement/AbstractSpreadingStructurePlacement$FrequencyReducer.class; net/minecraft/world/level/levelgen/structure/placement/AbstractSpreadingStructurePlacement$FrequencyReductionMethod.class; net/minecraft/world/level/levelgen/structure/placement/AbstractSpreadingStructurePlacement.class; net/minecraft/world/level/levelgen/structure/placement/RandomSpreadStructurePlacement.class. Methods: RandomSpreadStructurePlacement.getPotentialStructureChunk; AbstractSpreadingStructurePlacement.isStructureChunk; ChunkGenerator.createStructures / tryGenerateStructure

    Evidence details

    Official server SHA-1 33680f5f2ac32864d6d7cf5e56a705fdb3e05f4c. Implementation inspected using CFR 0.152; reconstructed Java is not an original Mojang source publication. SHA-256 by archive member: net/minecraft/world/level/chunk/ChunkGenerator.class = 7e5145ec6e36cbc7af979e869d4947c85e4715b8d13105f1369f0a385c40851d; net/minecraft/world/level/levelgen/structure/placement/AbstractSpreadingStructurePlacement$ExclusionZone.class = eb0d49eb1ffb0714fbdb04abde954fbdbd50cfeafd411f593de8159a06488300; net/minecraft/world/level/levelgen/structure/placement/AbstractSpreadingStructurePlacement$FrequencyReducer.class = e2887ebf5f8937ca3b038d6e1c40bc1c77f983a97b5b7ed9bdcd78b59d103e82; net/minecraft/world/level/levelgen/structure/placement/AbstractSpreadingStructurePlacement$FrequencyReductionMethod.class = 3664480026b9e91c8235bdbf6d98fdbbb78586f8d0decee70f9ea788d3291a71; net/minecraft/world/level/levelgen/structure/placement/AbstractSpreadingStructurePlacement.class = 0775a5cd47242fafd7f9977a9cfb821a6fffe5d1defcbc3bf8cded7e2427a4a8; net/minecraft/world/level/levelgen/structure/placement/RandomSpreadStructurePlacement.class = 8fbeed7711f96285b9b39b2e8363ffaa6ea80dd03baea4c1e6fa98e90b7f8eb9

  5. Mojang Java 26.3: generation entry points ↗Decompiled game implementation · Java 26.3

    Inner archive META-INF/versions/26.3/server-26.3.jar: net/minecraft/world/level/levelgen/structure/Structure$GenerationContext.class; net/minecraft/world/level/levelgen/structure/Structure$GenerationStub.class; net/minecraft/world/level/levelgen/structure/Structure$StructureSettings$Builder.class; net/minecraft/world/level/levelgen/structure/Structure$StructureSettings.class; net/minecraft/world/level/levelgen/structure/Structure.class; net/minecraft/world/level/levelgen/structure/structures/OceanRuinStructure$Type.class; net/minecraft/world/level/levelgen/structure/structures/OceanRuinStructure.class. Methods: OceanRuinStructure.findGenerationPoint; Structure.findValidGenerationPoint; Structure.GenerationContext.isValidBiome

    Evidence details

    Official server SHA-1 33680f5f2ac32864d6d7cf5e56a705fdb3e05f4c. Implementation inspected using CFR 0.152; reconstructed Java is not an original Mojang source publication. SHA-256 by archive member: net/minecraft/world/level/levelgen/structure/Structure$GenerationContext.class = 0c4335baa022b0482299b5cc0a3d0492fd3160542640b2538a5b8934822cc12b; net/minecraft/world/level/levelgen/structure/Structure$GenerationStub.class = e7a25f7418cfbfafaa6ecc1558a4bacde160ab247be6997df4aef3288da76a52; net/minecraft/world/level/levelgen/structure/Structure$StructureSettings$Builder.class = e9b9a37f14f156749ceb686ab31f34954c3b65c0e9f1ff43cdebb508a72b1261; net/minecraft/world/level/levelgen/structure/Structure$StructureSettings.class = 5796d330ef7ea491ee64b34ccdfe6c08a62b71886441bd87cd327a2fc6188f80; net/minecraft/world/level/levelgen/structure/Structure.class = fa023ce735376b7042242948275a0869a7e22d30e5e4c5c6502b521578577188; net/minecraft/world/level/levelgen/structure/structures/OceanRuinStructure$Type.class = cd85eaa72b9f5060a6cde0cb5c35a42a816dfc09917c53d3079d75c9a07927a1; net/minecraft/world/level/levelgen/structure/structures/OceanRuinStructure.class = 9426288f7b94e8241bdab766a990df9917f7d4a0df8ae3ec7f971958f4a35fc6

  6. Mojang Java 26.3: ocean ruins layout and encounter implementation ↗Decompiled game implementation · Java 26.3

    net.minecraft.world.level.levelgen.structure.structures.OceanRuinPieces; OceanRuinPieces.addPieces, addClusterRuins, addPiece, OceanRuinPiece.handleDataMarker / postProcess; OceanRuinPiece.makeSettings; OceanRuinPieces.WARM_SUSPICIOUS_BLOCK_PROCESSOR / COLD_SUSPICIOUS_BLOCK_PROCESSOR.

    Evidence details

    Official server SHA-1 33680f5f2ac32864d6d7cf5e56a705fdb3e05f4c; inner META-INF/versions/26.3/server-26.3.jar SHA-256 a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6. Official bytecode inspected through CFR 0.152; reconstructed implementation, not an original source checkout.

  7. Mojang Java 26.3: ocean ruins loot data ↗Official game data · Java 26.3

    Inner META-INF/versions/26.3/server-26.3.jar: data/minecraft/loot_table/chests/underwater_ruin_big.json; data/minecraft/loot_table/chests/underwater_ruin_small.json; data/minecraft/loot_table/archaeology/ocean_ruin_warm.json; data/minecraft/loot_table/archaeology/ocean_ruin_cold.json

    Evidence details

    Verified official server SHA-1 33680f5f2ac32864d6d7cf5e56a705fdb3e05f4c. File SHA-256s: underwater_ruin_big.json: b4f792544678c925eec6c1adf53c2a132706567bdca068d1afd804053db3c168; underwater_ruin_small.json: c3979027a2051e91244c89710fbd8b216fb25a9ce2947202e19d2d278ffd9cf3; ocean_ruin_warm.json: b1cde868aba247016a09a541194f3f73c22dbc532fd19be5207ce01e9a650742; ocean_ruin_cold.json: 631807140b18a147c14860f220b140693b3596f1d53e9692581c6b20804150eb. Table identity and conditional item rules are distinct from any particular generated container.

  8. Java 26.3 ocean ruins: calculated selection odds ↗Calculated from game data · Java 26.3

    Relevant /pools indices in the data reference; LootPool.addRandomItem/addRandomItems; UniformContainerBase.uniformFields; UniformGenerator.getIntUnsafe.

    Evidence details

    For direct unconditional weighted pools, chance of at least one selection is 1 minus the average of (1−weight/totalWeight)^n over inclusive uniform integer rolls. Values are theoretical table-invocation probabilities, not seed frequencies. Exact inputs: [{"itemId":"minecraft:sniffer_egg","table":"data/minecraft/loot_table/archaeology/ocean_ruin_warm.json","pool":0,"fraction":"1/15","chance":0.06666666666666667,"weight":1,"total":15,"rolls":[1]},{"itemId":"minecraft:snort_pottery_sherd","table":"data/minecraft/loot_table/archaeology/ocean_ruin_warm.json","pool":0,"fraction":"1/15","chance":0.06666666666666667,"weight":1,"total":15,"rolls":[1]},{"itemId":"minecraft:mourner_pottery_sherd","table":"data/minecraft/loot_table/archaeology/ocean_ruin_cold.json","pool":0,"fraction":"1/15","chance":0.06666666666666667,"weight":1,"total":15,"rolls":[1]},{"itemId":"minecraft:diamond_nautilus_armor","table":"data/minecraft/loot_table/chests/underwater_ruin_big.json","pool":2,"fraction":"2/185","chance":0.010810810810810811,"weight":2,"total":185,"rolls":[1]}]

  9. Mojang Java 1.20.1: inspected historical ocean ruins loot ↗Official game data · Java 1.20.1

    data/minecraft/loot_tables/chests/underwater_ruin_big.json; data/minecraft/loot_tables/chests/underwater_ruin_small.json

    Evidence details

    Limited comparison of the listed data files; no claim that all intermediate releases share either table. SHA-256s: underwater_ruin_big.json: 819d36fc83b1794f09b5d0e79913bcefb4195f3638fbb8336448889ac9108b4e; underwater_ruin_small.json: 40a121404f2b45897b6ca0a8f1704ca70c4ece690e6e731a6b9beaafdefcc2c9

  10. Minecraft Wiki: Cold Ocean Ruins — pinned history ↗Minecraft Wiki · Java and Bedrock Revision 3779312

    History section, retaining edition, release grouping, development-version and experimental-toggle qualifiers.

    Evidence details

    Pinned article revision 3779312 from 2026-09-16T01:28:28Z. Historical claims only; not an audited game build or release-date source.

  11. Minecraft Wiki: Warm Ocean Ruins — pinned history ↗Minecraft Wiki · Java and Bedrock Revision 3791557

    History section, retaining edition, release grouping, development-version and experimental-toggle qualifiers.

    Evidence details

    Pinned article revision 3791557 from 2026-09-24T10:57:08Z. Historical claims only; not an audited game build or release-date source.

  12. Java 1.13 (18w09a): release date ↗Official game data · Java 1.13 (18w09a)

    /id; /releaseTime

    Evidence details

    Date belongs to the exact 18w09a build. Snapshot and prerelease dates are separate from the later full release; metadata does not prove the feature introduction.

  13. Java 1.13 (18w10a): release date ↗Official game data · Java 1.13 (18w10a)

    /id; /releaseTime

    Evidence details

    Date belongs to the exact 18w10a build. Snapshot and prerelease dates are separate from the later full release; metadata does not prove the feature introduction.

  14. Java 1.13 (18w16a): release date ↗Official game data · Java 1.13 (18w16a)

    /id; /releaseTime

    Evidence details

    Date belongs to the exact 18w16a build. Snapshot and prerelease dates are separate from the later full release; metadata does not prove the feature introduction.

  15. Bedrock 1.4.0: release date ↗Minecraft Wiki · Bedrock 1.4.0

    Version infobox release date

    Evidence details

    Platform releases were staggered: May 16, 2018<ref name=OutNow>{{Mcnet|update-aquatic-phase-one-out-now|Update Aquatic Phase One is out now!|May 16, 2018|Tom Stone}}</ref>. These dates describe full Pocket releases, separately from earlier betas.

  16. Java 1.16: release date ↗Official game data · Java 1.16

    /id; /releaseTime

    Evidence details

    Release metadata establishes its date, not feature introduction. Original Wiki history must support introduction separately.

  17. Java 1.20: release date ↗Official documentation · Java 1.20

    Opening announcement: Trails & Tales Update will be coming to a device near you on June 7

    Evidence details

    Public release June 7, 2023. Mojang metadata retains releaseTime 2023-06-02T08:36:17+00:00; this earlier build timestamp must not be displayed as the public launch date.

  18. Java 1.21.11: release date ↗Official game data · Java 1.21.11

    /id; /releaseTime

    Evidence details

    Date belongs to the exact 1.21.11 build. Snapshot and prerelease dates are separate from the later full release; metadata does not prove the feature introduction.

  19. Bedrock 1.21.130: release date ↗Minecraft Wiki · Bedrock 1.21.130

    Version infobox release date

    Evidence details

    Pinned community version article date; snapshots, betas and previews have their own release dates, separately from the full version.

  20. Java 26.3: release date ↗Official documentation · Java 26.3

    Published 9/15/26; Minecraft Java 26.3 Released

    Evidence details

    Release metadata establishes its date, not feature introduction. Original Wiki history must support introduction separately.

  21. Bedrock 26.50: release date ↗Official documentation · Bedrock 26.50

    Posted: 15 September 2026; opening paragraph says Wilderness Bound is out now

    Evidence details

    Historical date from the pinned Minecraft Wiki version article; introduction is separately attributed to each structure article history.

Item art uses vanilla Java 26.3 assets from the official client release. Icons retain their game version alongside the guide.

Descriptions adapted from the Minecraft Wiki retain its attribution under CC BY-NC-SA 3.0. Calculations and code analysis are SeedLookout research. Screenshot captions identify each capture. The seed table contains our published verified seeds; checking a location does not establish particular room contents or chest loot.