Atlas Documentation

website·Indexed 31 days ago

https://docs.mcnebula.net

Technical documentation for Atlas, a map configuration system featuring XML-based modules for game logic. Includes specifications for match states, objectives (Destroyables, Leakables), executors like <apply-loadout>, and various game mechanics such as custom projectiles, schematic loading, and damage modification.

Tokens
30.3K
Snippets
230
Records
295
Agent score
49%

What's inside Atlas

  1. Overview of Atlas Game Manager

    Atlas Game Manager is a Minecraft server modification for Paper designed to power multiplayer, objective-based game modes. It allows developers to create custom game modes by modifying world layouts, spawn points, team colors, game rules, weapons, tools, and objectives.
  2. Verify entity equipment using <wearing>

    The <wearing> check is used to query information about what an entity is currently wearing. The material attribute specifies the item to check for.
    <checks>
      <wearing id="chestplate" material="iron chestplate" />
    </checks>
  3. Query item type and damage using <item>

    The <item> check queries information about an item's type. It supports a material attribute and a damage attribute. The element text can also be used to define the material using the matname:damage syntax (where damage is optional).
    <checks>
      <item id="woodcheck" material="wood" damage="1" />
    </checks>
  4. Query attacker information with the `<attacker>` check

    The <attacker> check is a parent check used to query information about the attacker in a damage event. It typically wraps other checks (like <team>) to validate the attacker's properties.
    <checks>
      <attacker id="donthurtme">
        <any>
          <team>red</team>
          <team>blue</team>
        </any>
      </attacker>
    </checks>
  5. Query damage event victim information using <victim>

    The <victim> check is a parent check used to query information about the victim of a damage event. It can wrap other checks (like <any> or <team>) to filter based on the victim's properties.
    <checks>
      <victim id="victims">
        <any>
          <team>green</team>
          <team>yellow</team>
        </any>
      </victim>
    </checks>
  6. Remove points from a region using the Subtract element

    The <subtract> region takes the first listed nested region as the base and removes all points contained in the subsequent nested regions from that base.
    <subtract>
      <!-- Includes all points in the cuboid, except the specific point 60, 40, 60 -->
      <cuboid min="45, 32, 45" max="90, 64, 90" />
      <point>60, 40, 60</point>
    </subtract>
  7. Implement Capture the Flag objectives

    Flag objectives require the Zones Component. Players must retrieve a flag from a spawn location (post) and return it to a net region. The configuration requires a <flag> definition and corresponding <zone> definitions for the spawn post and the capture net.
    <!-- Flag Definition -->
    <flag owner="red" post="red-post" color="red" />
    
    <!-- Flag Spawn Location -->
    <zone id="red-post">
      <region>
        <block>108, 13, -1</block>
      </region>
      <post yaw="90" />
    </zone>
    
    <!-- Capture Location -->
    <zone>
      <region>
        <cuboid min="-8, 14, 1" max="-11, 16, -3" />
      </region>
      <net points="1">
        <capture-check>
          <team>blue</team>
        </capture-check>
      </net>
    </zone>
  8. Define and reference localized strings using the <locale> tag

    Localizations are defined within <locale> tags inside a <locales> block. You can nest tags within a locale to organize strings; each level of nesting is referenced using a dot (.) separator when calling the string in other parts of the XML. To use a localized string, wrap the path in curly braces, such as {category.string_id}.
    <locales>
      <locale lang="en">
        <errors>
          <build-north>You cannot build in the North.</build-north>
        </errors>
      </locale>
      <locale lang="es">
        <errors>
          <build-north>No puedes construir en el norte.</build-north>
        </errors>
      </locale>
    </locales>
    
    <!-- Referencing the locale string elsewhere -->
    <zones>
      <zone build="never" region="the-north">
        <build-message>{errors.build-north}</build-message>
      </zone>
    </zones>
  9. Implement CTH (Capture The Hill) objectives

    CTH Hills are specialized areas that award points to a team on an interval for each player standing on the hill. They can be grouped under <cth-hills> or defined as individual <cth-hill> elements. They can optionally integrate with the CTH Countdown Component via countdown-id.
    <objectives>
      <!-- Grouped CTH Hills with shared countdown and points -->
      <cth-hills countdown-id="main-countdown" points="10">
        <cth-hill name="Left">
          <capture>
            <cuboid min="50, 23, 50" max="75, 40, 75" />
          </capture>
        </cth-hill>
        <cth-hill name="Right">
          <capture>
            <cuboid min="27, 23, 77" max="50, 40, 100" />
          </capture>
        </cth-hill>
      </cth-hills>
    
      <!-- Individual CTH Hill with custom interval and effects -->
      <cth-hill id="hill-middle" name="Center" points="20" point-award-interval="60s" fireworks="false" lightning="false" >
        <capture>
          <cylinder base="0, 63, 0" height="3" radius="9"/>
        </capture>
      </cth-hill>
    </objectives>
  10. Trigger executors based on Minecraft events

    Triggers allow you to execute a specific executor when a Minecraft event occurs. The on attribute specifies the event identifier, and the execute attribute specifies the ID of the executor to run.
    <triggers>
      <trigger on="block-break" execute="do-this" />
    </triggers>
  11. Configure material transitions using the Phase module

    The <phase> module is used within a <phases> container to automatically change the blocks of Destroyable objectives. A phase represents a step in the progression of materials for an objective, triggered after a specific delay and optional check.
    <phases countdown-message="{phases.transition}" fail-message="{phases.cores.fail}">
      <phase id="gold" success-message="{phases.core.gold}" delay="25m" pass-phase="glass">
        <materials>
          <material find="obsidian" replace="gold block" />
        </materials>
      </phase>
    </phases>