1.2.1 • Published 7 years ago

magikcraft-lore-core v1.2.1

Weekly downloads
5
License
AGPL
Repository
github
Last release
7 years ago

The Core Lore for the Magikcraft API

durablePlayerMap

Added: Wednesday 6 September, 2017

magik.memento and magik.exmemento use the durablePlayerMap instead of a JavaScript object.

toJSON and fromJSON

Added: Thursday 17 August, 2017

The helper methods magik.toJSON and magik.fromJSON serialise Java types to/from JSON for transport or storage.

At the moment the only supported Java type is a BukkitLocation. You can use this to publish a BukkitLocation over the eventbus, and to consume a BukkitLocation from the eventbus.

Here is an example:

Publish your location via the Eventbus

This spell publishes your current location over the eventbus.

const magik = magikcraft.io;
const locationTopic = 'locations';

// Publish my location over the eventbus
function publishLocation() {
    const here = magik.hic(); // get player current location
    const hereJSON = magik.toJSON(here); // turn it into a JSON object
    // magik.dixit(JSON.stringify(hereJSON)); // you can print it out

    // Publish player location to 'locations' topic on the eventbus
    eventbus.publish(locationTopic, {name: global.PlayerName, location: hereJSON});
}

Teleport to Player spell

Here is a teleport spell that uses the eventbus published locations to teleport to the last published location for a player:

const magik = magikcraft.io;
const locationTopic = 'locations';

function tp2p(name = '@@INIT'){
    // If global.locations doesn't exist, we are not subscribed yet
    if (!global.locations) {
        global.locations = {};
        eventbus.subscribe(locationTopic, event => {
            const who = event.data.name;
            const where = event.data.location;
            global.locations[who] = where;
        });
    }
    if (name === '@@INIT') {
        return;
    }
    if (!global.locations[name]) {
        magik.dixit(`No published location found for ${name}!`);
        return;
    }

    const whereJSON = global.locations[name];

    // Turn the JSON into a BukkitLocation
    const where = magik.fromJSON(whereJSON);
    magik.ianuae(where);
}

.