Skip to content

Mountains

Configured in resourcenodes.yml. Command: /resourcenode (aliases /node, /mountain).

A Mountain is a region that refills with blocks on a clock — a Glowstone Mountain in the Nether, an Ore Mountain in the warzone. Nothing is captured and nobody wins: the server announces the refill, several teams show up at once, and the fight is the point.

/resourcenode                 # when each Mountain refills
/resourcenode refill <id>     # staff: refill one now (hcfcore.resourcenode.admin)
/resourcenode claim <id>      # staff: draw its land with the claiming wand

A Mountain is server land: the land of a server team (claim in resourcenodes.yml), drawn with the claiming wand like spawn or a road — /resourcenode claim <id> makes the team, a combat zone, and hands the wand. It shows on /team map and announces itself at its border. Between its heights (y-min, y-max) it is mined by the Mountain's own rules below; above and below, it is server land. A Mountain can still be given as two corners instead.

Refills also appear in /events, next to the capture events.

Defining one

resourcenodes.yml — the shipped Glowstone Mountain
glowstone-mountain:
  display-name: "{warning}Glowstone Mountain"

  # The Mountain is server land: the land of the server team named here, drawn
  # with the claiming wand. /resourcenode claim glowstone-mountain makes the team
  # (a combat zone) if it does not exist yet and hands you the wand. Its region
  # is that land between y-min and y-max, bounds included: keep it to the
  # mountain itself, every position inside is examined on each refill. Several
  # claims make one region, the box around them - keep them side by side. The
  # team's land above and below those heights is server land like any other.
  # A Mountain whose team holds no land neither refills nor protects anything.
  claim: Glowstone
  y-min: 40
  y-max: 80
  #
  # Or, with no claim, the box between two corners, bounds included, in any order:
  #   world: world_nether
  #   corner-1: {x: 40, y: 40, z: 40}
  #   corner-2: {x: 70, y: 80, z: 70}

  # What the refill puts back. Two shapes are accepted:
  #
  #   blocks: [GLOWSTONE, NETHERRACK]     <- a plain list, all equally likely
  #
  #   blocks:                             <- name: weight, for a mix
  #     GLOWSTONE: 1
  #     NETHERRACK: 4
  #
  # Weights are relative, not percentages: 1 beside 4 means one block in five is
  # glowstone. Nothing has to add up to 100.
  # Names are Minecraft block names; an unknown one is reported in the console at
  # startup and skipped, never guessed at.
  blocks:
    GLOWSTONE: 1
    NETHERRACK: 4

  # Which blocks a refill may overwrite.
  #   air    - refill what players mined out. This is what you normally want.
  #   blocks - extra block names the refill may also replace, for repairing a
  #            region players filled with something of their own.
  # A refill never touches anything else, so a region is repaired rather than
  # rebuilt from scratch.
  replace:
    air: true
    blocks: []

  # When it refills. The two sources are merged, and both may be used.
  #
  #   interval-seconds - every N seconds, ANCHORED TO LOCAL MIDNIGHT. 14400
  #                      means 00:00, 04:00, 08:00 ... every day, whatever the
  #                      server did in between: a restart cannot shift the hours
  #                      and players can learn them. If the interval does not
  #                      divide 24 hours evenly, the last window before midnight
  #                      is shorter than the others.
  #   times            - explicit local times of day.
  #
  # Leave both empty for a node only staff can refill with
  # /resourcenode refill <id>.
  #
  # Shipped at 0, staff only: a refill writes blocks into the world, and the
  # region above is an example - left scheduled, a fresh server would fill
  # that box of the Nether with glowstone every four hours. Move the region onto
  # your mountain, then set interval-seconds: 14400 (every four hours) or times.
  refill:
    interval-seconds: 0
    times: []

  # How long before a refill to warn the server, in seconds. This is what makes
  # a refill a rendez-vous rather than a surprise: teams need notice to travel.
  # A warning at or beyond the interval itself is ignored - it would be
  # permanently on screen.
  announce-before-seconds: [300, 60]

  # Whether the refill itself is broadcast.
  announce-refill: true

  # Whether the region is filled once when the server starts. Off by default: on
  # an established map the region already holds its blocks, and a fill on every
  # restart is a needless pass over tens of thousands of positions.
  fill-on-start: false

  protection:
    # No building inside the region: no towering over the mountain, no walling
    # it off, no lava buckets. The same goes for what no player places by hand:
    # pistons cannot push blocks in or pull the structure out, and liquids poured
    # outside cannot flow in. Liquid already inside the region keeps flowing.
    prevent-build: true

    # What may be mined inside the region:
    #   PALETTE_ONLY - only the blocks this node places (GLOWSTONE, NETHERRACK
    #                  above). The structure survives, so there is still a
    #                  mountain to refill next time.
    #   ANY          - anything. The region is then only non-buildable, and
    #                  players will eventually flatten it.
    break-policy: PALETTE_ONLY

    # Whether teams are refused claims overlapping the region. Leave this on:
    # a claimed mountain is a mountain one team owns. (A Mountain that is a
    # server team's land cannot be claimed over anyway.)
    prevent-claim: true

    # Whether explosions are stopped from breaking the region.
    #
    # Leave this on too. Without it break-policy above is decorative: a player
    # refused the netherrack blows it up instead, and after a few days there is
    # no mountain left for the refill to fill.
    prevent-explosions: true

It ships with interval-seconds: 0, refilled only by staff: set interval-seconds: 14400 for every four hours once the region is on your mountain.

  • The region is the box between the two corners, bounds included, in any order. Keep it to the mountain itself: every position inside is examined on each refill.
  • The palette is weighted: GLOWSTONE: 1 beside NETHERRACK: 4 means one block in five is glowstone. Weights are relative — nothing has to add up to 100. A plain list (blocks: [GLOWSTONE, NETHERRACK]) gives equal weights. An unknown block name is reported at startup and skipped, never guessed.

When it refills

Refill times are absolute, not "last refill plus the interval":

  • interval-seconds is anchored to local midnight — 14400 means 00:00, 04:00, 08:00... every day, whatever the server did in between. A restart cannot shift the hours, and players can learn them.
  • times adds explicit local times of day. Both sources merge.
  • Both empty: only staff refill it.

The shipped examples are at 0, staff only, until you move them onto your map.

Warnings go out ahead of each refill (announce-before-seconds) — that is what turns a refill into a rendez-vous rather than a surprise: teams need time to cross the map. The refill itself is announced when it is done, not when it starts (announce-refill).

What a refill does

  • It repairs, it does not rebuild: by default it fills only air — what players mined out. replace.blocks lists extra blocks it may also replace, to repair a region players filled with something of their own.
  • It never walls a player in: the blocks a player's body occupies stay empty until the next refill (skip-occupied-blocks), instead of the resource closing over them. Spectators are not counted.
  • It is spread over several ticks (blocks-per-tick, 4000 shared between running refills) so a mountain of tens of thousands of blocks does not freeze the server. Its chunks are loaded in the background and held until it finishes.
  • fill-on-start fills the region once when the server starts — off by default.

A refill changed nothing?

A refill fills only air: a region under water or inside solid rock has nothing to fill. Move the region, or list the blocks it may replace under replace.blocks.

Protection

Each Mountain protects its region (protection):

Setting Default Effect
prevent-build on No building — no towering over it, no walling it off, no lava. Pistons cannot push blocks in or pull the structure out, and liquid poured outside does not flow in
break-policy PALETTE_ONLY Only the palette's blocks can be mined, so the structure survives for the next refill. ANY lets players mine anything — and eventually flatten it
prevent-claim on No team can claim land overlapping the region
prevent-explosions on Explosions cannot break the region — otherwise the break policy would be decorative

Inside the warzone, a Mountain's own rules apply in its region, so its resources stay minable. Staff with hcfcore.resourcenode.bypass build and mine freely inside a region.