给玩家体验

时间:2018-08-07 01:25:01

标签: java bukkit

当玩家附魔他们获得一半经验时,我正在尝试使用《迷魂记》编写代码。因此,无论它们是什么级别,他们都将获得xp,使其升至下一个级别的一半。

我尝试使用player.setExp(50);,但这种方法不起作用,有时它会在侧面产生第二个xp条,并且看起来有些毛刺。

1 个答案:

答案 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