跳到正文
烈焰甘蔗Wiki

Ocean Monument

Ocean Monument is a structure added by Et Futurum Requiem, replicating the 1.8+ ocean monument from vanilla Minecraft. It generates in ocean biomes and contains valuable loot including sea lanterns and sponges.

Spawn Conditions

Condition Value
Biome Types ocean, deepOcean, river, frozenOcean, frozenRiver
Primary Requirement deepOcean biome at the center
Generation Spacing 32 chunks
Generation Separation 5 chunks
Seed 10387313

The monument spawn check uses a deterministic seeded algorithm: the chunk coordinates are fed through a random seed with the monument’s unique seed value to determine if the current chunk is the exact spawn point. Both X and Z coordinates must match the calculated spawn position for generation to occur.

Structure Composition

The monument structure is stored as a coordinate map in /assets/ocean_monument.txt and is built using the following block palette:

Block Type ID Block
0 Prismarine (sea lantern base)
1 Prismarine (dark variant)
2 Prismarine Bricks
3 Sea Lantern
4 Gold Block
5 Sponge (wet)
6 Water

The monument is surrounded by 7 pillars extending downward (5 blocks tall each) on each side, made of Prismarine Bricks (meta = 1), creating the characteristic tower layout of the monument.

Generation

OceanMonument.buildTemple() iterates over the coordinate map and places blocks relative to the origin point. The monument uses CoordinatePacker (from GTNH Lib) to pack and unpack coordinates into a long key for efficient storage. The structure is built with world.setBlock(x, y, z, block, meta, 2) using block update flag 2 (send to clients).

Loot

⚠️ 已订正 —— 「三只守卫者」是错的,本结构不生成守卫者。 原文称「The monument contains three guardian enemy spawns」,源码中没有任何 守卫者刷怪逻辑。配置项自身的说明就明确写了这一点。 证据 — configuration/configs/ConfigWorld.java:119:

enableOceanMonuments = getBoolean("enableOceanMonuments", catGeneration, true,
    "Note: Ocean monuments currently do not have guardians");

配置作者在选项说明里直接注明**「Ocean monuments currently do not have guardians」**。 此外,源码里也没有为该结构调用 ChunkProviderEvent.Populate / loot-table 的痕迹,内部战利品房无法核实。

Configuration

⚠️ 已订正 —— 配置类写错了,且遗漏了两个必需前置条件。 原文写 ConfigBlocksItems.enableOceanMonument。实际是 ConfigWorld.enableOceanMonuments(注意是复数 Monuments), configuration/configs/ConfigWorld.java:119,默认开启(ON)。

真实门控条件见 world/EtFuturumWorldGenerator.java:314:

if (ConfigWorld.enableOceanMonuments && ModBlocks.PRISMARINE_BLOCK.isEnabled()
        && ModBlocks.SEA_LANTERN.isEnabled()
        && !(world.provider instanceof WorldProviderEnd)
        && !(world.provider instanceof WorldProviderHell)) {

即除配置开关外,还必须:

  1. ModBlocks.PRISMARINE_BLOCK.isEnabled()(海晶石方块已启用)
  2. ModBlocks.SEA_LANTERN.isEnabled()(海晶灯已启用)
  3. 当前维度不是末地、不是下界

海绵部分原文正确:ConfigBlocksItems.enableSponge 开启时用 ModBlocks.SPONGE, 否则回落 Blocks.sponge(world/structure/OceanMonument.java:88)。

补充:生成高度在 EtFuturumWorldGenerator.java:320-324 动态计算 —— 从 world.getActualHeight() 向下找第一个非空气方块,再减去 1 + rand.nextInt(3) 作为天花板,最后 buildTemple(world, x, monumentCeiling - 22, z), 即神庙底部位于天花板下方 22 格。这解释了为什么它能随 EFR 下界(getActualHeight()=128) 或其它高度设置自适应。

浏览全部模组