Resources
Everything you need to know when creating adventure maps for the AtePlant Archive.
Map Making Guidelines
Everything you need to know to create and submit a map for the AtePlant Archive.
Priority 1: Gameplay
The number one priority is that the gameplay is high-effort, fun, and creative. Your map will not be accepted if it does not meet all three of these criteria. These will be judged loosely, especially the fun part.
If your map requires a plugin, script, resource pack, or command blocks that are necessary to how the map is played or enjoyed, you must ask @AtePlant or open a ticket in support before you start building so it can be approved. If you need to make a plugin, datapack, or resource pack for your map but do not know how to make one, just tell @AtePlant or open a ticket in support.
Priority 2: Build Quality
The build should be good. This does not mean your map requires a build to be accepted. Floating parkour with some pixel art in the sky is totally fine. However, anything that is built should be high effort.
Do not use any existing map on this server as a frame-of-reference for quality. See the mapper wiki for potential mechanics you could use in your maps.
What Does Mapper Rank Do?
With Mapper rank, you get ownership of a plot on the server. A plot is a 500x500 world where you can build maps on, and it gives you access to building tools like WorldEdit, HeadDatabase (/hdb), Banner Maker (/mb), and other tools. Plots also have the capability to run specific gameplay mechanics; see the mapper wiki for the current list of supported mechanics.
How To Get Mapper Rank
Make a post in Discord showing videos or pictures of builds, parkour, or gameplay you have created, and additional proof is appreciated. If your builds or gameplay seem high quality, you will receive Mapper rank in the Discord and receive a plot in game.
AteScript
AteScript is the server's custom Minecraft scripting language parsed and executed by a server plugin. The AtePlant Archive uses Mutiverse-Core where each map gets their own world; However, DataPacks work on a per-dimension basis. In order to alleviate this issue, AteScript was created to replicate the behaviour of DataPacks while also having the events you find in Spigot API. The compiler for AteScript is public, so you are able to test your scripts on a local server.
Script Structure
Every script file is named after its purpose and ends in .atescript. Each script declares a trigger, a world, and then its logic. The following header fields are required at the top of every script:
| Field | Description |
|---|---|
| $trigger | How the script is triggered. See Triggers below. |
| $world | The trigger must occur in this world. AKA the adventure map it is for. |
Variables
$player is automatically set to the player who triggered the script. Additional variables are available depending on the trigger used. This is clarified in the Triggers section below.
| Variable | Availability | Description |
|---|---|---|
| $player | All triggers | The player who triggered the script. |
| $plocation | All triggers | The player's current location. |
| $btype | Block-related triggers | The block's material type. |
| $blocation | Block-related triggers | The block's location. |
| $itype | Item-related triggers | The material type of the item involved. |
| $var | Single-value events | Misc string variable for one-off values (like potion effects in onEffectAdd). |
Logic & Commands
Logic Statements
Use endif to conditionally end the script.
- 1Syntax:
endif <variable> <operator> <value> - 2Use
is/isnotto check if a value is or isn't equal to something.
endif $btype isnot CHISELED_RESIN_BRICKS /give $player cyan_wool 1
Console Commands
Run any command directly on the console by prefixing it with /. Variables like $player are substituted inline.
Also clarify the origin of the command: Use /minecraft:give ... if you are using a base-Minecraft give command, Use /Essentials:give if you are using the EssentialsX give command.
/minecraft:gamemode creative $player
Data Storage
Persist data to a player using the * prefix. Data is stored in persistent data containers and survives across sessions.
| Command | Description |
|---|---|
| *store <field> <value> | Store an integer under the given field name on the player. |
| *get <field> | Retrieve a stored value by field name. |
| *delete <field> | Delete a stored field from the player. |
Triggers
Triggers define what event causes the script to run. Set the trigger at the top of the script with $trigger <name>.
| Trigger | When It Fires | Variables |
|---|---|---|
| onBlockBreak | Player breaks a block. | $player, $plocation, $btype, $blocation |
| onTeleport | Player teleports. | $player, $plocation |
| onPlateActivate | Player steps on a pressure plate. | $player, $plocation, $btype, $blocation |
| onWorldChange | Player changes world. | $player, $plocation |
| onEffectAdd | Player receives a new potion effect. | $player, $plocation, $var (var = Spigot PotionEffect) |
| onPostPracticeStart | Practice mode starts. | $player, $plocation |
| onPostPracticeEnd | Practice mode ends. | $player, $plocation |
| onCheckpointUse | Player uses a checkpoint. | $player, $plocation |
therunscript method to see which variables each event exposes.Examples
These examples are all from the map Darker Bramble.
$trigger onEffectAdd $world DarkerBramble endif $var isnot SLOW_FALLING /musicplayer play $player outerwildsp1.nbs true
$trigger onPostPracticeStart
$world DarkerBramble
/minecraft:give $player purple_wool[can_place_on=[{blocks:purple_glazed_terracotta}]] 64
/minecraft:give $player cyan_wool[can_place_on=[{blocks:cyan_glazed_terracotta}]] 64
/minecraft:give $player copper_hoe[custom_name=[{"text":"Ghost Matter Harvester","bold":true,"italic":false,"color":"dark_aqua"}],lore=[[{"text":"Used to destroy ","italic":false,"color":"white"},{"text":"O","italic":false,"color":"gold"},{"text":"r","italic":false,"color":"gold"},{"text":"a","italic":false,"color":"gold"},{"text":"nge","italic":false,"color":"gold"},{"text":" ","italic":false,"color":"gold"},{"text":"Ghost","italic":false,"color":"gold"}],[{"text":"Matter","italic":false,"color":"gold"},{"text":" temporarily (3s)","italic":false,"color":"white"}]],can_break=[{blocks:resin_block},{blocks:chiseled_resin_bricks}],tool={rules:[{blocks:[resin_block,chiseled_resin_bricks],speed:999f}]},unbreakable={},tooltip_display={hidden_components:[attribute_modifiers]}]
/minecraft:give $player iron_hoe[custom_name=[{"text":"Ghost Matter Harvester","bold":true,"italic":false,"color":"light_purple"}],lore=[[{"text":"Used to destroy ","italic":false,"color":"white"},{"text":"Gray Ghost","italic":false,"color":"gray"}],[{"text":"Matter","italic":false,"color":"gray"},{"text":" temporarily (1s)","italic":false,"color":"white"}]],can_break=[{blocks:pale_moss_block},{blocks:chiseled_tuff}],tool={rules:[{blocks:[pale_moss_block,chiseled_tuff],speed:999f}]},unbreakable={},tooltip_display={hidden_components:[attribute_modifiers]}]
$trigger onCheckpointUse $world DarkerBramble /minecraft:clear $player minecraft:purple_wool /minecraft:clear $player minecraft:cyan_wool
$trigger onPlateActivate $world DarkerBramble endif $btype isnot MANGROVE_PRESSURE_PLATE /minecraft:clear $player minecraft:purple_wool /minecraft:clear $player minecraft:cyan_wool
Tools
All server-specific tools to help with mechanics and helpful mods to make map-making easier. Commands listed are ones you can use in AteScripts. If your map requires a plugin with a different mechanic/function then:
- 1If it is simple, try to make it using an AteScript.
- 2If it is complex, let AtePlant know through dms or #support to see if that idea is possible, and it will be made for you if so.
Block Triggers
| Tool | Description |
|---|---|
| Teleporters | Teleport a player once they step on a block. - Exact Coords: specify the exact coordinates you will teleport to. Default will teleport you to the relative coords from where you stepped on the first teleporters. - Facing: specify the yaw and pitch you will face after teleporting. Default will keep your current facing. - Two-Way Teleporters: it's in the name. - Locked Teleporters: in order to use this teleporter, you must have specific items in your inventory. |
| Launchers | General server and client performance optimisations. |
| Potion Effects | Performance tweaks and shader support for 1.8.9. |
Server Tools
| Tool | Description | Commands |
|---|---|---|
| Teleporter | Stores teleporter configurations and locations; handles creating, using and deleting teleporters. If locked teleporters are enabled and there is a chest 2 blocks under the pad, the teleporter requires the items in that chest to use. A barrier item before an item means the pad will not consume it; a structure_void entry means any item in the chest will allow teleporting. | None |
| Launcher | Stores launcher configurations/locations and handles creating, using and deleting launchers. | None |
| Potion Block | Manages PotionBlock locations and interactions (use/create/delete). Includes a server-side command for granting night vision from configured potion blocks. | None |
| Checkpoint | Stores checkpoint locations and handles all checkpoint interactions. Create a checkpoint sign by writing "checkpoint" on the second line of a sign. | /givecheckpointitem <player>/removecheckpointitem <player>/setcheckpoint <player>/removecheckpoint <player>/togglecheckpointmessages <player>/hidecheckpointmessages <player>/showcheckpointmessages <player> |
| Banner Maker | Gives premade banners for letters, numbers and directional arrows (up/down/left/right). | /mb <word|direction> <bg color> <text color> |
World Settings
| Setting | Description | Commands |
|---|---|---|
| Trapdoor Clutch | Enabled doors, trapdoors and gates flip open for a tick then are temporarily disabled (turn to iron/air) for a short period before reverting to their normal state. | None |
| Timer Block | Step on a pale_oak_pressure_plate with a chest 2 blocks below to start a timer using the number of items in the chest. When the timer ends it triggers the configured checkpoint action. | None |
| Practice | Practice mode for jumps: enables flight and restricts interaction with certain blocks/triggers. Specific blocks/triggers (launchpads, tppads, doors, etc.) can be toggled for practice sessions. | None |
| Only Sprint | When enabled on a map, the player's checkpoint is used whenever they stop sprinting. | None |
| Item Box | Step on a polished_blackstone_pressure_plate with a container 2 blocks below to receive items from that container. A barrier item in the chest clears the player's inventory first; a structure_void behaves like a barrier but preserves subsequent item types based on the structure_void stack amount. | None |
| Breakable Blocks | Broken blocks can reappear after a configured delay. Holding a block toggles whether it will respawn if broken in that world. Time values are specified in seconds. | None |
| Block Clutch | Wool blocks disappear shortly after being placed. Timing varies by color: P,R,O,Y = instant; L,G,LB,B = 1s; C,M,P,B = 2.5s; BL,G,LG,W = 5s. | None |