代码之家  ›  专栏  ›  技术社区  ›  Dan

给玩家体验

  •  1
  • Dan  · 技术社区  · 6 年前

    我试图编码在龙头当一个球员附魔他们得到一半的经验回来。所以不管他们是什么级别,他们都会得到xp使他们达到下一个级别的一半。

    我试着用 player.setExp(50); 但这不起作用,有时它会在旁边创建第二个xp条,看起来很流畅。

    1 回复  |  直到 6 年前
        1
  •  4
  •   sorifiend    6 年前

    来自API,强调我的:

    void setExp(浮点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