/snippet
Java JSON Fabric API

Custom Advancement Snippet.

A complete custom advancement setup with custom trigger. Includes the criterion class, registration code, and advancement JSON. Replace yourmod with your mod ID throughout.

// how to use

Create the custom criterion class, register it in ModAdvancements, and create the advancement JSON in data/yourmod/advancements.

// requirements

Fabric API, Minecraft 1.20+, Java 17+. Custom triggers allow unique advancement conditions.

{
  "display": {
    "icon": { "item": "minecraft:diamond" },
    "title": "Example Advancement",
    "description": "Awarded for clicking the diamond block",
    "frame": "task",
    "show_toast": true,
    "announce_to_chat": true,
    "hidden": false
  },
  "criteria": {
    "clicked_diamond": {
      "trigger": "yourmod:clicked_diamond_block"
    }
  },
  "rewards": { "experience": 100 }
}
package com.yourmod.advancement;

import net.minecraft.advancement.criterion.AbstractCriterion;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.Identifier;

public class ClickedDiamondCriterion extends AbstractCriterion<ClickedDiamondCriterion.Conditions> {

    public ClickedDiamondCriterion() {
        super(new Identifier("yourmod", "clicked_diamond_block"));
    }

    @Override
    public Conditions conditionsFromJson(com.google.gson.JsonObject json) {
        return new Conditions();
    }

    public void trigger(ServerPlayerEntity player) {
        this.test(player, Conditions::new);
    }

    public static class Conditions extends AbstractCriterion.Conditions {
        public Conditions() { super(); }
    }
}
package com.yourmod.advancement;

import com.yourmod.YourMod;
import net.minecraft.advancement.criterion.CriterionRegistry;

public class ModAdvancements {

    public static void registerAdvancements() {
        YourMod.LOGGER.info("Registering custom advancements...");
        CriterionRegistry.register(new ClickedDiamondCriterion());
    }
}
clicker game (web) custom block