当玩家附魔他们获得一半经验时,我正在尝试使用《迷魂记》编写代码。因此,无论它们是什么级别,他们都将获得xp,使其升至下一个级别的一半。
我尝试使用player.setExp(50);
,但这种方法不起作用,有时它会在侧面产生第二个xp条,并且看起来有些毛刺。
答案 0 :(得分:4)
在API中,重点是我的:
void setExp((float exp)
将玩家当前的经验值设置为下一个级别
这是一个百分比值。 0是“没有进度”,1是“下一级”。
参数: exp-新的体验点
因此,如果您想将玩家设置为半等级经验,请使用:player.setExp(0.5f);
编辑以解决Kerooker的评论:
您的问题不是很清楚,但是如果您想恢复迷人时使用的经验的一半,那么可以这样做:
//On the enchantment event use this to find the total cost of the enchant:
int originalCost = event.getExpLevelCost();
//Now update the cost to be half of that and you are all done:
event.setExpLevelCost(int originalCost / 2);
有许多不同的方法可以执行此操作,例如,可以在附魔使用int totalEXP = player.getTotalExperience();
,然后再使用player.giveExp((totalEXP - player.getTotalExperience()) /2);
来恢复使用的经验的一半。请参阅下面的两个API链接。
来源:
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/Player.html
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/enchantment/EnchantItemEvent.html