← 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!

Comments

Comments load as you scroll here.

No email needed. Only your name, website and comment are kept, and you can delete it later from this browser. Comments with links, or from a website that has not commented before, wait for a quick look. Privacy