This page relates to GameStages, which has built-in support!

GameStages is a framework for creating progression systems for Mod Packs. These progression systems are built around stages which are named flags that can be given to players or taken from them. On their own stages have no meaning or functionality. It is up to you to create the meaning by configuring other mods and writing CraftTweaker scripts. Many mods can be configured to react differently to players based on the stages they do/don't have. As a framework GameStages only provides the tools and interfaces required for all of these addons to communicate with each other and your scripts. Things like locking a recipe to a stage or preventing a mob from spawning are handled bo other mods that hook into the stage data of players.

How It All Works

Link to how-it-all-works

The main concept to understand is that stages are not created or registered. They are simply named flags that you can grant to players on demand. Many mods can be configured to check for your stage name when checking if a player meets the requirements to do something. You can also check if a player has your stage name in CraftTweaker scripts.

Valid Stage Names

Link to valid-stage-names

To ensure your stage name is valid and everything works smoothly youre stage names must meet the following requirements.

  • Must be a string with at least one character and less than 65 characters.
  • Can only contain lowercase characters.
  • Can only contain latin alphabet, 0-9, _, and :.
  • Can not contain spaces!

The most common way to grant a stage is through commands. This is because commands are very flexible and can be executed in a wide variety of circumstances. For example vanilla advancements are able to run commands on completion. Most questing mods will also allow quests to be ran as quest rewards. This can be done by running the /gamestage add @p stageNameHere command. In Minecraft @p is a special command argument that will be substituted with the player who triggered that command. You can also script stages to be granted on specific triggers or any time you have access to a player reference.

Creating Restrictions

Link to creating-restrictions

GameStages does not provide any way to restrict vanilla or modded content. This is left to the third party addons, mods with direct stages support, and the custom systems you create with your CraftTweaker scripts. Check out the list of recommended addons for more info.

Link to recommended-addons

Dimension Stages
Allows you to require players unlock a GameStage before they can enter certain dimensions.
Item Stages
Allows you to prevent players from using an item unless they have the required stages.
Recipe Stages
Allows you to prevent players from crafting a recipe if they don't have the required stages.

What is the list of stage names?
It is a common misconception that there is a limited list of predetermined stage names. You are free to use any name you wish as long as it follows the rules for being a valid stage name.

Why are all these addons needed?
GameStages is an open source standard for creating these kinds of progression systems. Splitting things up in this way allows a greater number of mod developers to create GameStages compatible content which in turn gives Mod Pack authors more tools to use when working on their packs. It can also help to isolate problems and reduce performance overhead by allowing the Mod Pack to only use the features they need for their pack.

Where can I find some examples?
There are many examples available on GitHub. Most addons will also provide examples on their GitHub pages. These examples can be autogenerated for you in game by running the /ct examples command.