@magikcraft/mct1
Version:
Minecraft for Type 1 Diabetes
198 lines (197 loc) • 7.11 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var events = require("events");
var log_1 = require("@magikcraft/mct1/log");
var log = log_1.Logger(__filename);
var mct1_1 = require("@magikcraft/mct1/mct1");
var tools = require("@magikcraft/mct1/tools");
var db_1 = require("./db");
var inventory_1 = require("./inventory");
var effects_1 = require("./effects");
var user_1 = require("@magikcraft/mct1/user");
var follower_1 = require("./follower");
var GameMode = Java.type('org.bukkit.GameMode');
// User class
var User = /** @class */ (function () {
function User(player) {
var _this = this;
this.events = {};
this.gms = function () { return _this.player.setGameMode(GameMode.SURVIVAL); };
this.gmc = function () { return _this.player.setGameMode(GameMode.CREATIVE); };
this.gmsp = function () { return _this.player.setGameMode(GameMode.SPECTATOR); };
this.gma = function () { return _this.player.setGameMode(GameMode.ADVENTURE); };
this.setInterval = function (callback, interval, key) {
var k = key || tools.uuid();
this.intervals[k] = setInterval(callback, interval);
};
this.player = player;
this.sessionId = tools.uuid();
this.mct1 = new mct1_1.MCT1(player);
this.db = new db_1.default(player);
this.inventory = new inventory_1.default(player);
this.effects = new effects_1.default(player);
this.setRespawnAtSpawnLocation(true);
this.setReloadInventoryAtSpawn(true);
this.follower = new follower_1.default(user_1.user);
// this.cube =
}
User.prototype.cleanse = function () {
this.unregisterAllEvents();
this.clearAllTimeouts();
this.clearAllIntervals();
this.mct1.stop();
};
User.prototype.teleport = function (location) {
// Player cannot teleport with a passenger. See https://www.spigotmc.org/threads/catch-a-player-teleport-attempt-while-passenger-is-set.95710/
this.player.eject();
log("Teleporting " + this.player.name);
this.player.teleport(location);
};
// continue () {
// // if player is part way through a quest, restart quest at last waypoint.
// }
// saveQuest (quest) {
// this.db.set('quest', tools.questToJSON(quest))
// }
// loadQuest () {
// return this.db.get('quest')
// ? tools.questFromJSON(this.db.get('quest'))
// : undefined
// }
User.prototype.setSpawn = function () {
this.saveSpawn(this.player.location);
};
User.prototype.saveSpawn = function (location) {
this.db.set('spawnLocation', tools.locationToJSON(location));
};
User.prototype.loadSpawn = function () {
if (this.getSpawn())
user_1.user(this.player).teleport(this.getSpawn());
};
User.prototype.getSpawn = function () {
return this.db.get('spawnLocation')
? tools.locationFromJSON(this.db.get('spawnLocation'))
: undefined;
};
User.prototype.clearSpawn = function () {
this.db.delete('spawnLocation');
};
User.prototype.setRespawnAtSpawnLocation = function (bool, teleportBetweenWorlds) {
var _this = this;
var key = 'setRespawnAtSpawn';
if (bool) {
if (!this.events[key]) {
this.registerEvent('playerRespawn', function (event) {
if (event.player.name !== _this.player.name)
return;
var spawn = _this.getSpawn();
if (!spawn) {
// return
event.setRespawnLocation(_this.player.world.getSpawnLocation());
}
else {
if (!teleportBetweenWorlds &&
_this.player.world.name !== spawn.world.name) {
return;
}
event.setRespawnLocation(spawn);
}
}, key);
}
}
else {
if (this.events[key]) {
this.unregisterEvent(key);
}
}
};
User.prototype.setGodMode = function (bool) {
var _this = this;
var key = 'setGodMode';
if (bool) {
if (!this.events[key]) {
this.registerEvent('entityDamage', function (event) {
if (event.entity.type != 'PLAYER')
return;
if (event.entity.name !== _this.player.name)
return;
event.setCancelled(true);
}, key);
}
}
else {
if (this.events[key]) {
this.unregisterEvent(key);
}
}
};
User.prototype.setReloadInventoryAtSpawn = function (bool) {
this.inventory.setReloadAtSpawn(bool);
};
User.prototype.setTimeout = function (callback, interval, key) {
var k = key || tools.uuid();
this.timers[k] = setTimeout(callback, interval);
};
User.prototype.clearTimeout = function (key) {
clearTimeout(this.timers[key]);
};
User.prototype.clearTimeoutsLike = function (wildcard) {
for (var key in this.timers) {
if (key.includes(wildcard)) {
this.clearTimeout(key);
}
}
};
User.prototype.clearAllTimeouts = function () {
for (var key in this.timers) {
this.clearTimeout(key);
}
};
User.prototype.clearInterval = function (key) {
clearInterval(this.intervals[key]);
};
User.prototype.clearIntervalsLike = function (wildcard) {
for (var key in this.timers) {
if (key.includes(wildcard)) {
this.clearInterval(key);
}
}
};
User.prototype.clearAllIntervals = function () {
for (var key in this.intervals) {
this.clearInterval(key);
}
};
User.prototype.registerEvent = function (type, callback, key) {
var k = key || type;
this.unregisterEvent(k);
this.events[k] = events[type](callback);
};
User.prototype.unregisterEvent = function (key) {
if (this.events[key])
this.events[key].unregister();
};
User.prototype.unregisterEventsLike = function (wildcard) {
for (var key in this.events) {
if (key.includes(wildcard)) {
this.unregisterEvent(key);
}
}
};
User.prototype.unregisterAllEvents = function () {
for (var key in this.events) {
this.unregisterEvent(key);
}
};
User.prototype.follow = function (whoToFollow) {
this.follower.startFollowing(whoToFollow);
};
User.prototype.stopFollowing = function () {
this.follower.stopFollowing();
};
User.prototype.tell = function (msg) {
echo(this.player, msg);
};
return User;
}());
exports.default = User;