Skip to main content

Airship Battle (DTC)

Airship Battle is the first ever map made for PGM. It features two wooden airships with building materials, tools, and weapons inside chests. The objective of the map is to leak the lava contained inside an obsidian sphere by destroying it. Whoever leaks the other team's core first wins the game.

Source: Airship Battle by Dewtroid. Players build across to the other ship, either at ground level or bridging ontop of the propellers.

The large spawn area where observers spawn at, players spawn inside the safe bedrock tunnels and run into the ship.

This is the obsidian core that you must leak the lava out of! Make the lava leak by destroying the obsidian blocks containing it and other obstacles that might get in the way.

➡️ Every map XML file starts with the XML header and then the base <map> module.

<map proto="1.4.2">
<!-- Specifies what the map is called -->
<name>Airship Battle</name>
<!-- Shows the map creation date when a user runs /map in game -->
<created>2011-12-05</created>
<!-- States what version the map is -->
<version>1.2.6</version>
<!-- Tells the teams what the objective is in order to win the game -->
<objective>Leak lava from the enemy's obsidian core into the void.</objective>
<!-- States who made the map -->
<authors>
<author uuid="30e27366-0b14-4076-8f55-0819ece49ce3"/> <!-- Dewtroid -->
</authors>
<!-- Shows any map rules or details that are not in normal server rules which appears when running /map -->
<rules>
<rule>Dispensers and chests are disabled</rule>
<rule>Players have resistance and reduced knockback in spawn!</rule>
</rules>

➡️ Define the teams' colors, names, and how many people can be on each team.

<teams>
<team id="blue-team" color="blue" max="24">Blue</team>
<team id="red-team" color="dark red" max="24">Red</team>
</teams>

➡️ Define the kit that players will receive.

<kits>
<kit id="spawn-protection">
<effect amplifier="10">damage resistance</effect>
<knockback-reduction>1</knockback-reduction>
</kit>
<kit id="spawn">
<item slot="0" material="diamond sword"/>
<item slot="1" material="bow"/>
<item slot="28" amount="64" material="arrow"/>
<item slot="2" material="diamond pickaxe"/>
<item slot="3" material="diamond axe"/>
<item slot="4" damage="1" amount="64" material="wood"/> <!-- To get spruce planks, damage must be "1" -->
<item slot="5" amount="64" material="ladder"/>
<item slot="6" material="water bucket"/>
<item slot="8" amount="64" material="cooked fish"/>
<helmet enchantment="protection explosions:2" material="gold helmet"/>
<chestplate enchantment="protection explosions:4" material="chainmail chestplate"/>
<!-- Leggings and boots will be automatically colored based on the player's team -->
<leggings team-color="true" material="leather leggings"/>
<boots team-color="true" material="leather boots"/>
</kit>
</kits>

➡️ Specify where the previously defined teams will spawn, the kit they will spawn with, and what direction they face.

<spawns>
<spawn team="blue-team" kit="spawn" yaw="270">
<region>
<cuboid min="4.5,91,-34" max="7.5,91,-31"/>
</region>
</spawn>
<spawn team="red-team" kit="spawn" yaw="90">
<region>
<cuboid min="-30.5,91,-34" max="-27.5,91,-31"/>
</region>
</spawn>
<default yaw="180">
<region>
<cylinder base="-11.5,90,-33" radius="3" height="0"/>
</region>
</default>
</spawns>

➡️ Define the filters on the map and determine which events are allowed.

<filters>
<!-- Query if a player is a member of either team using the previously defined team ID -->
<team id="only-blue">blue-team</team>
<team id="only-red">red-team</team>
<!-- Always deny dispenser placement, destruction, or interaction -->
<deny id="deny-dispenser">
<material>dispenser</material>
</deny>
<!-- Always deny obsidian placement or destruction -->
<deny id="deny-obsidian">
<material>obsidian</material>
</deny>
</filters>

➡️ These regions reference the filters defined above and states where they will work, as well as lending a kit to players inside their respective team's spawn.

<regions>
<cuboid id="red-spawn-protect" min="-42,87,3" max="-35,90,-36"/>
<cuboid id="blue-spawn-protect" min="12,87,3" max="19,90,-36"/>
<!-- Subtracts successive regions (blue-core and red-core) from the first region (map) -->
<complement id="deny-obsidian-area">
<region id="map"/> <!-- Include the entire map (defined below) -->
<cuboid id="blue-core" min="13,85,23" max="18,92,30"/> <!-- Location of Blue's core -->
<cuboid id="red-core" min="-41,85,23" max="-36,92,30"/> <!-- Location of Red's core -->
</complement>
<negative id="not-map">
<union id="map">
<rectangle min="-100,-2" max="100,123"/> <!-- Main area -->
<rectangle min="-36,-14" max="13,-2"/> <!-- Area between spawn tunnels -->
</union>
</negative>
<!-- applicators -->
<apply region="blue-spawn-protect" lend-kit="spawn-protection" filter="only-blue"/>
<apply region="red-spawn-protect" lend-kit="spawn-protection" filter="only-red"/>
<apply region="map" leave="never" message="Don't exit the playing field!"/>
<apply region="not-map" block="never" message="Don't edit blocks outside the playing field!"/>
<!-- Do not let players place or destroy dispenser blocks anywhere on the map -->
<apply block="deny-dispenser" message="Dispensers are disabled on this map!"/>
<!-- Only the obsidian that makes up the core can be broken -->
<apply region="deny-obsidian-area" block-break="deny-obsidian" message="You may not break obsidian outside the core area!"/>
</regions>

➡️ This specifies what material the core is made of, who each core belongs to, where each cores are located, and how far the lava must leak to count as a completed objective.

<cores material="obsidian" leak="10">
<core team="blue-team" region="blue-core"/>
<core team="red-team" region="red-core"/>
</cores>

➡️ We do not want an excessive amount of items dropped on the map, so this allows us to manage how to deal with dropped items more easily.

<!-- These items will drop, players that already have these items can pick it up and will be merged -->
<toolrepair>
<tool>diamond sword</tool>
<tool>bow</tool>
<tool>diamond pickaxe</tool>
<tool>diamond axe</tool>
</toolrepair>
<!-- All of these items will be automatically removed when dropped -->
<itemremove>
<item>gold helmet</item>
<item>chainmail chestplate</item>
<item>leather leggings</item>
<item>leather boots</item>
<item>obsidian</item>
<item>arrow</item>
<item>wood</item>
<item>cooked fish</item>
<item>ladder</item>
<item>gold block</item>
<item>bucket</item>
<item>water bucket</item>
<item>golden apple</item>
</itemremove>

➡️ Reward players by giving various items for killing an enemy.

<kill-rewards>
<kill-reward>
<item amount="16" material="arrow"/>
<item damage="1" amount="32" material="wood"/>
<item material="golden apple"/>
</kill-reward>
</kill-rewards>

➡️ Stop players from being able to craft specific blocks or items.

<crafting>
<disable>chest</disable>
<disable>boat</disable>
</crafting>

➡️

This specifies how high players can build, however, it does not stop them from walking or breaking blocks above this limit.

<maxbuildheight>125</maxbuildheight>

➡️ Close the main <map> module.

</map>