/xp 经验值
给予玩家经验值或经验等级,支持正负数增减,用于附魔、修理与等级控制
给予玩家经验值或经验等级,支持用正数或负数进行增减。基岩版的 /xp 只有「给予/扣除」这一种操作,没有 Java 版的 add、set、query 子命令,按等级增减通过 L 后缀实现。
原理
经验值是挂在每个玩家实体上的一段持久状态,游戏把它同时呈现为「等级」和「升级进度条」两个数值。等级与点数之间存在一条固定的换算曲线:每个等级对应一个累计点数阈值,跨过阈值就升 1 级,而进度条记录的是当前等级内已累积点数占下一级所需点数的比例。/xp 命令的作用,就是直接在这段状态上写入一个增量:它不生成经验球、不经过拾取流程,而是绕开掉落物系统,立刻改变玩家身上的经验值。
升级曲线是非线性的:等级越高,升到下一级所需的经验值点数越多,所以同样数量的点数在低等级能连升好几级,在高等级却几乎填不满一格进度条。/xp 的两种写法对应两种操作对象:不带 L 时它直接修改经验值点数,带 L 时它直接在当前等级上加减整数。无论哪种写法,改动最终都落到同一段经验值状态上,由游戏重新计算等级与进度条的对应关系。
经验值是附魔、铁砧和耐久修理共同依赖的资源池。附魔台按等级消耗经验,铁砧的修理、合并与重命名同样扣除等级,经验修补附魔则在拾取经验球时把点数转化为耐久。/xp 直接修改的正是这个资源池,所以用它给予的经验可以立即用于附魔或铁砧;反过来,负数扣除也会立刻减少玩家当前可用于这些操作的经验存量。
/xp 有一个容易被忽略的边界:省略 [玩家] 时默认目标是执行者自身 @s,而 @s 必须指向一个玩家。在聊天栏由玩家执行时一切正常,但在命令方块里执行时并不存在「执行者玩家」,此时必须显式写出目标选择器,否则命令会因找不到目标而失败。此外,扣除经验时经验值最低只能降到 0,等级和进度条都不会出现负数。
语法
/xp <数量> [玩家]
/xp <数量>L [玩家]
不带 L 后缀时按经验值点数增减,带 L 后缀时按等级增减。基岩版此命令语法长期稳定,无跨版本差异。
参数
<数量>— 整数类型,要给予或扣除的经验值点数。正数增加、负数扣除;由于升级曲线非线性,100 点在高等级时可能不足以升 1 级。<数量>L— 整数加一个大写L后缀,表示按等级增减。5L在当前等级上增加 5 级,-3L降低 3 级。后缀必须大写,小写l无法被识别为等级后缀。[玩家]— 目标选择器,必须是玩家类选择器(如@p、@a、@s)。省略时默认作用于执行者自身@s,因此在命令方块里必须显式指定玩家。
示例
给自己 100 点经验值:
/xp 100 @s
为执行者自身增加 100 点经验值,可立即用于铁砧修理或附魔。
给最近玩家 5 级经验:
/xp 5L @p
把最近玩家的等级直接提升 5 级,适合快速凑够高等级附魔所需的等级。
给所有玩家 30 级经验:
/xp 30L @a
给所有在线玩家各增加 30 级,常用于多人服务器的活动奖励。
扣除自己 10 点经验:
/xp -10 @s
从执行者自身扣除 10 点经验值;若当前经验不足 10 点,则降到 0 后停止。
降低最近玩家 3 级:
/xp -3L @p
把最近玩家的等级降低 3 级,可用于设计经验消耗类的玩法。
命令方块给指定玩家 1 级:
/xp 1L @p
放在命令方块里执行时,因为执行者不是玩家,必须显式写出 @p 之类的目标选择器,否则命令会失败。
基岩版注意
- 需要 OP 等级 1。
- 与 Java 版差异:Java 版使用
/experience(别名/xp),并提供add、set、query子命令;基岩版只有「增减」一种操作,等级通过L后缀表达,无法直接查询或设置为指定经验。 L后缀必须大写,小写l无法被识别为等级后缀。- 基岩版无法直接查询玩家当前经验值,需要精确追踪时可配合
/scoreboard使用。 - 在命令方块中执行时,必须显式写出玩家选择器,省略
[玩家]会因执行者不是玩家而失败。
常见问题
为什么 /xp 100 在高等级时几乎不加等级?
因为升级曲线非线性,等级越高每级所需的点数越多。100 点在低等级能连升多级,在高等级可能填不满一格进度条。若想固定升等级,请用带 L 的写法,如 /xp 5L @s。
能不能用 /xp 把玩家的经验清零?
基岩版没有 set 或 query,无法直接设置为某个指定值。你可以先扣除一个足够大的点数让经验降到 0,例如 /xp -999999 @s,但无法精确设置到某个非零值。
相关命令
/scoreboard— 用计分板追踪经验值变化,或实现经验消费条件。/enchant— 消耗等级为物品附魔,常与/xp配合使用。/give— 给予物品,可结合经验一起作为奖励。/gamemode— 切换游戏模式;生存模式下经验的增长与消耗最直观。