@boem312/minecraft-server
Version:
A pure JS library to create Minecraft Java 1.16.3 servers
48 lines (41 loc) • 1.64 kB
JavaScript
const Changeable = require('../../../../Changeable.js');
module.exports = {
experience: {
info: {
defaultable: true,
defaultSetTime: 'afterLogin'
},
get() {
return this.p._experience;
},
set({ bar, level } = {}, beforeReady) {
if ((!beforeReady) && (!this.p.stateHandler.checkReady.call(this)))
return;
if (bar === undefined) bar = this.experience.bar;
if (level === undefined) level = this.experience.level;
let totalLevel = level + bar;
let totalExperience;
if (totalLevel >= 0 && totalLevel <= 15)
totalExperience = Math.pow(totalLevel, 2) + (totalLevel * 6);
else if (totalLevel >= 16 && totalLevel <= 30)
totalExperience = (2.5 * Math.pow(totalLevel, 2)) - (40.5 * totalLevel) + 360;
else
totalExperience = (4.5 * Math.pow(totalLevel, 2)) - (162.5 * totalLevel) + 2220;
const oldValue = this.p._experience.raw;
this.p._experience.setRaw({ bar, level });
this.p.sendPacket('experience', {
experienceBar: bar,
level,
totalExperience
});
if ((!beforeReady) && level !== oldValue.level || bar !== oldValue.bar)
this.p.emitChange('experience', oldValue);
},
init() {
this.p._experience = new Changeable((function (i) { this.experience = i }).bind(this), {
bar: 0,
level: 0
});
}
}
}