能力管理
低生命值时授予临时能力
// kubejs/server_scripts/powers.js
EntityEvents.hurt(event => {
let entity = event.entity;
if (entity.isLiving() && entity.getHealth() / entity.getMaxHealth() < 0.3) {
if (!OriginsJS.hasPower(entity, "origins:fire_immunity")) {
OriginsJS.grantPower(entity, "origins_js:emergency", "origins:fire_immunity");
}
}
});
生命值恢复后撤销
let tickCount = 0;
EntityEvents.tick(event => {
tickCount++;
if (tickCount % 100 !== 0) return; // every 5 seconds
let entity = event.entity;
if (!entity.isLiving()) return;
if (entity.getHealth() / entity.getMaxHealth() > 0.5) {
OriginsJS.revokePower(entity, "origins_js:emergency", "origins:fire_immunity");
}
});
通过 HolderWrapper 检查并授予
let holder = OriginsJS.getHolder(player);
if (holder && !holder.hasPower("origins:climbing")) {
holder.grantPower("origins_js:quest", "origins:climbing");
}
提示
source用于标识能力的来源。请使用唯一前缀,例如"origins_js:..."。revokeAllPowers(source)会一次性清除该来源授予的所有能力。- 授予前先检查
hasPower(),以避免重复授予。