Skip to content

Adjusting Progression

DaFuqs edited this page Jul 28, 2023 · 1 revision

Warning: Think about what you are doing

This is a highly advanced topic. Spectrum's progression system differs a lot from most other mods. If not done with caution, you will very likely either confuse your players, or softlock them, making them incapable to progress entirely.

If you want to adjust Spectrum's progression to better fit into the progression of your mod pack, do it very carefully.

Feel free to contact us if there are any questions.

How Spectrum's Progression Works

Spectrum's progression is almost entirely data driven via (hidden) advancements.

That gives modpack makers huge control about adjusting all those enchantment locks via data packs.

Be very careful to not introduce impossible / hard to understand scenarios. The Debug Command can help you with non-existent advancements and typos, but it can not detect circular references, for example.

What Can Be Adjusted

Modifying Recipe Unlocks

All recipe types have a property advancement_identifier. By making a data pack that modifies said recipe, you can adjust when this recipe will unlock for the player.

Recipe Example: spectrum:crafting_tablet

Let us look at the recipe for the Crafting Tablet, a very early game item:

{
  "type": "spectrum:pedestal",
  "group": "crafting_tablet",
  "time": 40,
  "tier": "basic",
  "cyan": 0,
  "magenta": 1,
  "yellow": 0,
  "white": 0,
  "black": 0,
  "experience": 0.1,
  "pattern": [
    "BB",
    "CC"
  ],
  "key": {
    "B": {
      "item": "spectrum:polished_basalt"
    },
    "C": {
      "item": "spectrum:polished_calcite"
    }
  },
  "result": {
    "item": "spectrum:crafting_tablet",
    "count": 1
  },
  "required_advancement": "spectrum:unlocks/items/crafting_tablet"
}

Note that the required advancement is set to a very specific one that only refers to the crafting tablet alone. This is done because this advancement is used both in this recipe and the Crafting Tablet entry in Spectrum's guidebook. Adjusting the value in the recipe alone and leaving the guidebook's entry unchanged would mean that, while you will change the criteria for when the recipe is unlocked, the player will now end up with differing unlock conditions for the Crafting Tablet recipe and its manual entry with the explanation for it. While you could adjust both, let's look at the advancement spectrum:unlocks/items/crafting_tablet instead:

{
  "criteria": {
    "placed_pedestal": {
      "trigger":"revelationary:advancement_gotten",
      "conditions": {
        "advancement_identifier": "spectrum:place_pedestal"
      }
    },
    "collected_shard": {
      "trigger":"revelationary:advancement_gotten",
      "conditions": {
        "advancement_identifier": "spectrum:hidden/collect_shards/collect_amethyst_shard"
      }
    }
  }
}

Now, that's something you are able to tinker with easily! If you changed the recipe to use other materials you can add them as critiera here with ease. The use of Revelationary's advancement_gotten trigger makes it really easy to gate stuff behind other advancements: in this case the player will unlock the recipe and guidebook entry when they placed down a Pigment Pedestal and found an amethyst shard.

Modifying Revelations

One of Spectrum's more interesting progression methods is the Revelation system. Only when players reach a specific point in the progression are they are able to see new blocks and get their corresponding drops. If one of those is triggered, the player will receive a toast message indicating that something new in the world is now visible to them so they can go look for it if they so desire.

Those locks are exposed in the form of advancements. Those advancements are found in the directory "milestones" and will start with reveal_.

Example: spectrum:milestones/reveal_shimmerstone

{
  "criteria": {
    "crafted_using_pedestal": {
      "trigger":"revelationary:advancement_gotten",
      "conditions": {
        "advancement_identifier": "spectrum:craft_using_pedestal"
      }
    }
  }
}

This is from one of Spectrum's earliest unlockable ores, Shimmerstone. The use of the single advancement_gotten trigger shows that this advancement will be granted to the player as soon as they unlock the spectrum:craft_using_pedestal advancement, which is granted the first time the player uses the Pigment Pedestal to craft something.

Modifying Revelations

Much like recipes, you can override those advancements to introduce additional locks or change them entirely. You can even depend this revelation on progression in other mods. While the modified example below is perfectly valid it also is an awful example, because players would only ever stumble upon that combination of advancements by accident. If you add more complicated gates you should always hint to them, like via clearly visible advancements or a quest book.

{
  "criteria": {
    "crafted_using_pedestal": {
      "trigger":"spectrum:has_advancement",
      "conditions": {
        "advancement_identifier": "spectrum:craft_using_pedestal"
      }
    },
    "entered_nether": {
      "trigger":"spectrum:has_advancement",
      "conditions": {
        "advancement_identifier": "minecraft:nether/root"
      }
    },
    "gotten_a_tech_reborn_grinder": {
      "trigger":"spectrum:has_advancement",
      "conditions": {
        "advancement_identifier": "techreborn:grinder"
      }
    }
  }
}

Various Other Locks

There are some other locks that you as a modpack maker can adjust. You will find them in the milestones advancement directory. Here are some examples:

spectrum:milestones/unlock_shooting_stars

When this is unlocked sometimes there will spawn Shooting Stars (a collectible item that itself gates some optional recipes) around the player in the night.

spectrum:milestones/unlock_overenchanting_with_enchanter

When this is unlocked the player will be able to use the Enchanter to create enchanted books that have higher levels than what is possible with vanilla

spectrum:milestones/unlock_fourth_potion_workshop_reagent_slot

When this is unlocked the player will be able to access a 4th reagent slot in the Potion Workshop instead of only the 3 previously. This will allow the player to create more potent potions.

Clone this wiki locally