← All projects

Achievables

Powering Daily Challenges and Achievements on MCParks

achievement {
syntaxVersion 0
name "Magic Kingdom Mountaineer"
description "Ride the three mountains of Magic Kingdom without warping or teleporting"
icon "IRON_SPADE:20"
reward "MONEY:500"

state {
    rodeSpaceMountain = false
    rodeBigThunderMountain = false
    rodeSplashMountain = false
    warpedOrTeleported = false
}

activators {
    (state.rodeSpaceMountain == true) && (state.rodeSplashMountain == true) && (state.rodeBigThunderMountain == true)
}

deactivators {
    state.warpedOrTeleported == true
}

events {
    on("CompleteRideEvent") {
        if (event.rideId == 32) {
            state.rodeSpaceMountain = true
        }
        if (event.rideId == 7) {
            state.rodeBigThunderMountain = true
        }
        if (event.rideId == 9) {
            state.rodeSplashMountain = true
        }
    }
    on("TeleportPlayerToPlayerEvent") {
        state.warpedOrTeleported = true
    }
    on("PlayerWarpEvent") {
        state.warpedOrTeleported = true
    }
  }
}

A Java library for defining “Achievables,” a system that can be used to define Achievements, Daily Challenges, Quests, and other things a player can “achieve” in a video game-like setting. If your world has events, you can use Achievables!

This also includes an extensible Groovy-based programming language called BIGAL (BigAl’s Integrated Groovy Achievement Language) that allows you to define Achievables (with other metadata necessary to define an Achievement) in a human-readable and version-controllable format.

We use Achievables on MCParks to power Daily Challenges and Achievements!