当一个玩家获得一半的经验时,我试着在魔法中编码。因此,无论他们是什么级别,他们将得到xp,使他们一半的方式到下一个水平。
我试过使用player.setExp(50);,但这不起作用,有时它会在一边创建第二个xp条,看起来有点故障。
发布于 2018-08-07 02:26:11
从API中,我强调:
(浮点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
https://stackoverflow.com/questions/51717587
复制相似问题