@nxg-org/mineflayer-tracker
Version:
Provides functionality for more accurate entity and projectile tracking.
55 lines (54 loc) • 1.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAttributeValue = getAttributeValue;
exports.createAttributeValue = createAttributeValue;
exports.addAttributeModifier = addAttributeModifier;
exports.checkAttributeModifier = checkAttributeModifier;
exports.deleteAttributeModifier = deleteAttributeModifier;
function getAttributeValue(prop) {
let x = prop.value;
for (const mod of prop.modifiers) {
if (mod.operation !== 0)
continue;
x += mod.amount;
}
let y = x;
for (const mod of prop.modifiers) {
if (mod.operation !== 1)
continue;
y += x * mod.amount;
}
for (const mod of prop.modifiers) {
if (mod.operation !== 2)
continue;
y += y * mod.amount;
}
return y;
}
function createAttributeValue(base) {
const attributes = {
value: base,
modifiers: [],
};
return attributes;
}
function addAttributeModifier(attributes, modifier) {
const end = attributes.modifiers.length;
// add modifer at the end
attributes.modifiers[end] = modifier;
return attributes;
}
function checkAttributeModifier(attributes, uuid) {
for (const modifier of attributes.modifiers) {
if (modifier.uuid === uuid)
return true;
}
return false;
}
function deleteAttributeModifier(attributes, uuid) {
for (const modifier of attributes.modifiers) {
if (modifier.uuid === uuid)
attributes.modifiers.splice(attributes.modifiers.indexOf(modifier));
}
return attributes;
}