【命令】命令教程“真”从零开始(十四)修改属性/attribute【一拳打爆末影龙】[1.19]

2021.12 数据,可能有更多内容

☆命令教程“真”从零开始(十四)

修改属性/attribute【一拳打爆末影龙】

声明:

1.

本系列教程默认读者拥有关于Minecraft游戏本身的基础了解。

2.

本系列全部教程绝对适用于当前Java最新版

(1.17)

3.

本系列教程致力于基础原理而非使用方法,因为某些原因,这是本声明里最重要的一条。

4.

本教程

需要读者有特定的命令知识。这些这些内容在

下方表格中列出

需要前置知识:

请确保你理解下列的内容。下表的所有内容一定在本系列教程的某一帖讨论过,所以若您是从本系列第一帖起阅读至今,可以不用看。

对于跳跃式阅读的读者,还请检查一番:

带有本符号的内容是阅读本帖的大前提,您必须理解。

带有本符号的内容意味着,若您不理解可能会对阅读本帖的特定片段造成困扰,但大体上可以看懂。

点击链接可以跳转至对应教程:

有关命令基础格式

【命令】命令教程“真”从零开始 (一) 指令本身,选择器,与命令方块 [1.16]

前言

在前几天说过,玩家的NBT是不能被直接修改的。

这导致了,曾经,直接更改玩家的属性——比如攻击力或生命值是一种无法实现的东西。

曾经,我们想要更改玩家的属性,只能为其加上状态效果,或是装备。也衍生出了很多可以影响玩家攻击力的方法。

但是,从1.16,一个新的命令被加入到Minecraft,改变了这种局面。

我们终于可随意地更改任意实体的属性了!!!

这包括攻击力,移动速度,生命值护甲值击退抗性等等等等……

这个命令,叫/attribute

(如你在标题所见的,我拿到这玩意干的的一件事就是把攻击力加到100万(闭眼按零),然后一拳锤爆了末影龙)

1. 属性

玩家的能力有多大?

你的

生命值上限

有20点。

基础

攻击力

只有1点。

而基础

护甲值

盔甲韧性

对于高额伤害, 护甲值的衰减程度

击退抗性

抵消的击退的比率

都是零。

是什么决定了你的各种能力的大小?

属性(Attributes)

玩家——或任何生物或实体,都拥有属性。

这些属性决定了实体在游戏中的一切能力。

但属性并不是永远固定的。玩家的

基础

攻击力只有1点,但是通过持有武器,我们的攻击力可以被

修改

也就是说,

最终的属性由两部分决定:

基础数值

基值

,与

加成数值

属性修饰符

这就是属性的基础机制。

每个属性都有一个

属性ID

以作区分。比如,

生命值上限

的属性ID是

generic.max_health

下表列出了Minecraft中存在的所有属性以及ID:

属性

列表

属性名称

属性ID

概述

任何实体都拥有的属性:

以下属性可以在

任意

实体上找到

生命值上限

generic.max_health

最大生命值。生物能恢复的生命值上限。玩家默认为20点。(生存无提升手段)

移动速度

generic.movement_speed

移动的速度。数值越高越快。玩家的默认移速为0.1。你可以使用公式43.178 * 属性值 - 0.022 来计算大致的,以格/米作单位的速度。

盔甲值

generic.armor

对物理伤害的抵抗性。每一点可抵挡4%的物理伤害。玩家的默认数值为0。(通过穿戴护甲可以提升)

盔甲韧性

generic.armor_toughness

当实体受的伤害变高时,盔甲所能减免的伤害比例会逐渐降低,盔甲韧性可以减缓它降低的幅度。该属性玩家默认为0。(钻石与下界合金可以提供本属性加成)你可以

前往Wiki本页面查看盔甲公式

击退抗性

generic.knockback_resistance

减免的击退。0代表无防御,1代表无法击退。0与1中间的数值代表减免的百分比。玩家默认为0。

(下界合金装给予击退抗性)

可攻击实体的属性:

这些属性可以在所有

能够进行攻击

的实体上找到。(如被动生物便没有以下属性)

攻击力

generic.attack_damage

普通攻击造成的伤害。玩家默认为1。(装备武器可以增加)

玩家专属属性:

只有

玩家

拥有以下属性

攻击速度

generic.attack_speed

本数值代表了玩家每秒可以进行的攻击速度。玩家默认为4。

幸运值

generic.luck

幸运值。这影响了战利品表的掉落。(比如打开宝箱,击杀怪物等)。玩家默认为0。

(幸运状态效果可增加本属性)

非玩家生物

的属性:

以下属性只能在

非玩家生物

上找到

追踪距离

generic.follow_range

生物追逐玩家或其他实体的最大距离。这可以是怪物的追踪,抑或是狼追逐骷髅,猪追逐手持胡萝卜的玩家。

特定生物专属属性:

下列属性只有特定的生物拥有:

击退力度

generic.attack_knockback

攻击时的击退力度。

疣猪兽,劫掠兽,与僵尸疣猪兽

跳跃力

horse.jump_strength

马的跳跃力。衡量标准不明。默认为0.7左右。

马专属属性

生成增援

zombie.spawn_reinforcements

僵尸攻击时在其周围生成更多僵尸的可能性。

仅僵尸及其变种

飞行速度

generic.flying_speed

飞行速度。衡量标准不明。

仅鹦鹉拥有

就像你看到的这样,目前MC共有14种属性

【注1】

。这些属性控制了所有实体的能力。

下面让我们来进入正题:1.16新增的命令

/attribute

可以获取,或修改指定实体的属性。

该命令拥有3个子命令:用于获取属性值的get,用于修改属性基值的set,与用于修改属性加成的modifier。

首先让我们来看向,读取子命令get。

2. 获取属性

注意:本命令为Java版独有

命令/attribute的子命令get可以读取指定实体特定属性的基值或最终值。

格式:

代码:

/attribute <目标> <属性ID> [base] get [<倍率>]

在该命令中,<目标>应为一个只能选择一个实体(limit=1)的选择器(和/data一样,本命令一次只能对一个实体操作)。

中间的

[

base

]

是一个选填项。

填入

就代表获取该属性的

基值

缺省

则意味获取该属性的

最终数值

(经装备加成后)。

最后,可以通过[<倍率>]来指定返回的倍率。

【注2】

比如,上表中可以看到,攻击力的属性ID是

generic.attack_damage

现在假设我拿着一把钻石剑(提供攻击力+6),那么该如何得到我当前的攻击力呢?

代码:

/attribute @s generic.attack_damage get

返回自己的

最终

攻击力

此时游戏会返回“7”。因为玩家有1点基础攻击力,钻石剑+6,所以最后为7。

注意我们缺省了"

base

",所以游戏返回的是我们的

最终数值

(经过钻石剑加成后的)。

但若是填入"

base

":

代码:

/attribute @s generic.attack_damage base get

返回自己的

基础

攻击力

此时游戏不再返回7,而回返回玩家的基础攻击力1。因为本命令获取的是

基值

,即

忽略武器装备的加成

好,更多的例子:

例1

假设,一名普通的玩家手持钻石剑(也只手持钻石剑)。

获取该玩家目前的攻速:

代码:

/attribute @p generic.attack_speed get

返回:1.6

这代表了,手持钻石剑时,玩家的攻速为1.6(每秒可全力攻击1.6次)

获取玩家的基础攻速:

代码:

/attribute @p generic.attack_speed base get

返回:4

这代表玩家的攻速基值为4(每秒全力攻击4次,是的,手持武器会降低你的攻速)

例2

获得最近僵尸的追踪距离:

代码:

/attribute @e[limit=1,type=minecraft:zombie,sort=nearest] minecraft:generic.follow_range base get

例3

假设一普通玩家穿着全套钻石装:

获取护甲最终值(加成后):

代码:

/attribute @p generic.armor get

返回:20(全套钻装提供满护甲值)

获取基值:

代码:

/attribute @p generic.armor base get

返回:0(玩家不穿装默认护甲值为0)

好,例子举到这里

看完了读取……现在就进入到非常令人激动的部分:修改吧。

命令/attribute有两种不同的“修改”。一种是修改基础数值,一种是修改“加成数值”(相当于给你一加一个虚拟的武器)。

让我们先进入到第一种,修改基值。

3. 修改基值

玩家的基础攻击力也太低了吧……万一生存第一天就遇到僵尸,使用低的可怜的1点攻击力,你得敲它20次才能把它敲死。

没关系,这里我们就来修改一下玩家的基础属性:

格式:

代码:

/attribute <目标> <属性ID> base set <值>

我们可以看到本格式与读取子命令十分相近,有区别的部分只是“<值>”与前面的get变成了set。

所以,我们实际上可以很容易地得到:

代码:

/attribute @s generic.attack_damage base set 20

将自己的基础攻击力设为20

其中,

generic.attack_damage

为攻击力的属性ID,base set意味着我们要更改基值,而

20

是要更改的值。

现在尝试攻击僵尸,你一拳就可以打倒。

当然,我们可以刺激点:

代码:

/attribute @s generic.attack_damage base set 2000

将自己的基础攻击力设为2000

现在末影龙你也能一拳打倒了。

那,最大可以设到多高呢?

很夸张,夸张到可以闭眼按0:

代码:

/attribute @s generic.attack_damage base set 100000000000000000000000000000000000

将自己的攻击力设置为1×10

35

点。(1E35)

夸张吧……那,这该数值的上限是多少呢?

这个值是一个

double

……意思就是,在极端情况下你可以存

308

位数。是的。然而,每种属性都有一个接受范围。如果你输入的值大于这个范围,那么属性就会被设为最大可接受的值。

比如,攻击力的最大上限是2048,所以虽然你在上面的命令中输入了一个大的离谱的数字,但是游戏会把属性设为2048。

(小于最低值同理)

好,从夸张的数字中钻出来,我们也可以设置小数:

代码:

/attribute @s generic.attack_damage base set 0.000001

将自己的攻击力设置为0.000001

(基本上相当于没有。)

小数在一些属性上使用频繁,比如速度或击退抗性:

代码:

/attribute @s generic.knockback_resistance base set 0.9

使自己免疫90%的击退

我们从上面的表格可以看到对于击退抗性1就代表完全抵抗,所以这里0.9即可抵挡90%。

到这里,我们要再次提醒:

本子命令base set修改的是

基础

,而非加成或最终值

为了让你明白这一点,以与下面的内容区分,让我们举这样一个例子:

假设有玩家,其基础攻击力为1:

代码:

/attribute @s generic.attack_damage base get

读取该玩家

基础

攻击力

返回1

他手持钻石剑,为他增加了6点加成数值:

代码:

/attribute @s generic.attack_damage get

读取该玩家

最终

攻击力

返回7

现在运行命令:

代码:

/attribute @s generic.attack_damage base set 4

将本玩家的基础攻击力设为4点

再次读取其攻击力:

代码:

/attribute @s generic.attack_damage get

读取该玩家

最终

攻击力

返回10

因为攻击力较之前增加了3点,所以总攻击力变成了10。

注意,我们所增加的是增

基础攻击力

,所以:

代码:

/attribute @s generic.attack_damage base get

读取该玩家

基础

攻击力

返回4

如何?

那好,本节就到这里。

这里有更多的例子,你可以展开查看。

代码:

/attribute @e[type=zombie,limit=1] generic.follow_range base set 10000

将一只僵尸的追踪距离设置为1万格

注意/attribute只能处理一个实体,所以我们添加了limit=1。

代码:

/attribute @s generic.max_health base set 1

将自己的最大生命值设为1点

(噩梦UHC)

代码:

/attribute @r generic.movement_speed base set 100

将随机玩家的移动速度设为100

玩家的默认移动速度为0.5,所以100是一个非常快的数值。(嗖一下)

代码:

/attribute @s generic.attack_damage base set -1

将自己的攻击力设为-1

即使是负数也可以接受为值。但是一般来讲游戏会把负数的属性值设为0。(只有幸运属性接受负值。)

4. 属性修饰符

在上面,我们讲述了如何更改

基础

我们可以轻易地将玩家变成神,抑或是手无搏鸡之力的恐怖地图受害者。

但是一款游戏,角色只有基础数值是的话是很空虚的。

除了游戏角色本身的属性,当其佩戴装备时,一般会有属性的加成。

Minecraft不例外哈。玩家的基础攻击力只有

1

点,但是钻石剑拥有

+6

点的属性加成。

基础数值经过加成数值的“洗礼”后,才是最终的属性,

7

。(1+6)

钻石剑为我们提供了加成数值。但这所谓的“加成数值”是有学名的。

这些加成,被称作

属性修饰器(Attribute Modifiers)

我们说,钻石剑提供一个

攻击力+6

属性修饰器

当实体的基础数值经过属性修饰器的运算后,就会得到最终数值。

正常来讲啊,在普通生存中,属性修饰器一般由装备给予,比如,上面讲的,使用钻石剑。

但实际上不止装备,修饰器有时也会由其他道具,比如药水(状态效果)添加。比如,Ⅰ级的力量药水会给予3点额外攻击力……或者说,拥有1级力量效果会给予玩家一个

攻击力+3

的属性修饰器。

或者……属性修饰器也可以由游戏机制给予……比如,你是怎么疾跑的?

你之所以可以疾跑,是因为在疾跑时游戏给予了你一个

速度+130%

的属性修饰器。

为什么女巫在喝药水的时候会减速(你也会)?因为游戏为其添加了一个

速度-0.25

的属性修饰器。

你可能看出来了,

只要,你的某属性与基础值有差,那一定是因为某个属性修饰器

以上提到的的所有属性修饰器都是由某种装备或机制提供的。

但接下来的命令,/attribute的第三个子命令,

/attribute modifier

,即可为指定的实体添加一个永久的属性修饰器。

大概……相当于为目标装备一个“虚拟”的装备吧。

5. 使用/attribute modifier

命令/attribute的子命令/attribute modifier用于管理目标上的自定义属性修饰符。

先来说,如何添加一个属性修饰器:

格式:

代码:

/attribute <目标> <属性ID> modifier add <名称> <值> <运算>

嚯,这个语法里有挺多陌生的东西嘛……

<UUID>是什么?<名称>又是什么?这个我们要一个一个看。

5.1 UUID

代码:

/attribute <目标> <属性ID> modifier add <名称> <值> <运算>

首先,来看一下UUID是什么。

各位知道

ID

Id

entity,识别码)

是什么吧。

用于区分不同东西的一个“身0份0证”。

那知道

UID

U

nique

Id

entifier,唯一识别码)

是什么么?

和ID差不多的东西。

论坛就在用,区分不同用户。Unique是在说,这种ID具有

唯一性

。(不然怎么区分不同用户)

那么,UUID又是什么呢?

通用唯一识别码(

U

niversally

U

nique

Id

entifier

UUID

看名字就知道,这和ID差不多,实际上就是一串用于区分不同东西的数字而已。

只不过,"唯一"指明了这串码不会重复

【注3】

,“通用”说明这是国际通用的标准。

是的,不止Minecraft在用,UUID也不是Mojang发明的。世界上所有的UUID都由一套算法生成。

简单概括:

UUID就是具有唯一性的,由一种通用算法生成的ID

我们不会深入接触,有兴趣的话可以在

百科:UUID

查看。这里你只需要知道这是一种ID就好了。

回到命令上:为什么添加一个属性修饰符需要一个UUID呢?

当然是为了区分多个不同的UUID啊。

你想想,你可以添加那么多不同的属性修饰器,当然需要某种方法来区分啦。

UUID长这样:

数字-数字-数字-数字-数字

由5个数字组成,中间以连字符相接。比如:

0-0-0-0-0

这就是一个UUID了。

任意更改数字就可以创造出其他UUID。比如:

88888888-4632-4444-3333-3141592657

可以随意乱编,但注意对于任意实体,其所有的属性修饰器的UUID必不能重复。同时你要把UUID记下来,不然无法对一个已添加的属性修饰符做出更改或删除——游戏完全使用UUID来区分不同的属性修饰器。

所以我推荐别弄得太复杂。

注意:

1. 这只是UUID的一种表现形式,还有其他的比如高

位,以及在NBT说过的整形数列

2. 这是十六进制。所以可以用A~F,比如

1-A-fab3-231-ABCDEF123456

这样。

在上面为了简化没有说

5.2

<名称>

代码:

/attribute <目标> <属性ID> modifier add <名称> <值> <运算>

接下来:什么是名称?

很简单:随便填

讲完了。

是的,这里可以随便填。什么都行,愿意填什么填什么,重复也可以。

这有点像是记分板或队伍的显示名称一样的东西。除了使用/data,你在加入这个属性修饰器后就再也无法看见它。

(这个名称大概是用来方便记录的。毕竟UUID一串数很难记。用/data可以筛选出拥有特定名称的属性修饰器……但还是没啥用因为对于玩家想删除还是要用/attribute,还是要用UUID)

5.3 <值> 与 <运算>

代码:

/attribute <目标> <属性ID> modifier add <名称> <值> <运算>

让我们看向最后两个元素:

值与运算。

这是什么呢?这两个元素是在说,该属性修饰器要对属性作出怎样的更改。

其中<运算>其实就是运算。比如是加法“

攻击力+6

”还是乘法“

攻击力×150% (攻击力×1.5)

”。

而值就是那个被加或者乘上去的数字。

属性修饰器是相当于给基础数值套个公式,算出最终属性。

可以利用的运算,有三种:

增加(add)

倍率(multiply_base)

,与

最终倍乘(multiply)

先不看那么多复杂的玩意,我们只用增加,先把我们的第一条命令写出来:

代码:

/attribute @s generic.attack_damage modifier add 0-0-0-0-0 sha_dou_xing 3 add

这条命令为目标的

攻击力

属性增加了一个

攻击力+3

的属性修饰器,其UUID为

0-0-0-0-0

解析:

attribute

<命令头>

属性命令

@s

<目标>

选择执行者(自己)

generic.attack_damage

<属性ID>

攻击伤害属性

modifier

<子命令>

管理属性修饰器

add

<子命令的子命令>

添加属性修饰器

0-0-0-0-0

<UUID>

即用于将本属性修饰器与其他的区分的ID

sha_dou_xing

<名称>

基本没用的东西,填什么都行XD

3

<值>

要更改的数量

add

<运算>

对基础值的运算:这里add代表增加,和上面的值连起来就是

+3

这就是你的第一条命令啦

但是除了运算add,也就是增加,我们还有另外两种运算:下面将深入了解:

5.4 运算

可以利用的运算,有三种:增加(add),倍率(multiply_base),与最终倍乘(multiply)。

公式是这样的:

最终属性值 = [(

基值

+

修饰符:

增加数值

) × (1 +

修饰符:

倍率

)] ×

修饰符:

最终倍乘

让我们一个个来:

增加(又名:属性增量)(add)

首先,你可以对一个属性做加(减)法。

假设某玩家的基础攻击力是1,

没有

属性修饰器,那么该玩家的最终攻击力就是:

最终属性值 = [(

基础数值

+

增加数值

) × (1 +

倍率

)] × 最终倍乘

= [(

1

+

0

) ×

1

] × 1

= 1 ×

1

× 1

= 1

然后我们用/attribute命令为其添加了一个攻击力+3的属性修饰器——

代码:

/attribute @s generic.attack_damage modifier add 0-0-0-0-0 sha_dou_xing 3 add

那么,该玩家的最终攻击力就是:

最终属性值 = [(

基础数值

+

增加数值

) × (1 +

倍率

)] × 最终倍乘

= [(

1

+

3

) ×

1

] × 1

= 4 ×

1

× 1

= 4

拥有多个增加类属性修饰器时,会相加:

假设我们又给了该玩家一个攻击力+1的属性修饰器。

代码:

/attribute @s generic.attack_damage modifier add 0-0-0-0-1 sha_dou_xing2 1 add

那么,该玩家的最终攻击力就是:

最终属性值 = [(

基础数值

+

增加数值

) × (1 +

倍率

)] × 最终倍乘

= [(

1

+

3+1

) ×

1

)] × 1

= 5 ×

1

× 1

= 5

理解了么?

倍率(又名:倍率增量)(multiply_base)

倍率

,或者说“倍率增量”,会将指定一个倍率。或者说,乘以一个值。注意这在增加运算后运行,换句话说,乘的是已经被增加后的值。

继续上面的假设:

在拥有上面说过的

攻击力+3,+1

的同时,我们再添加一个倍率属性修饰器

攻击力+50%

代码:

/attribute @s generic.attack_damage modifier add 0-0-0-0-2 sha_dou_xing 0.5 multiply_base

那么,该玩家的最终攻击力就是:

最终属性值 = [(

基础数值

+

增加数值

) × (1 +

倍率

)] × 最终倍乘

= [(

1

+

3+1

) × (

1 +

0.5

)] × 1

=

5

×

1.5

× 1

=

7.5

注意,倍率在加法之后算。

若有多个倍率的属性修饰器,倍率数值将按加法叠加:

添加一个攻击力-20%的属性修饰器:

代码:

/attribute @s generic.attack_damage modifier add 0-0-0-0-3 sha_dou_xing -0.2 multiply_base

那么,该玩家的最终攻击力就是:

最终属性值 = [(

基础数值

+

增加数值

) × (1 +

倍率

)] × 最终倍乘

= [(

1

+

3+1

) × (

1 +

0.5 - 0.2

)] × 1

=

5

×

1.3

× 1

=

6.5

最终倍乘(multiply)

最终倍称也是乘法,在倍率之后运行。于倍率不同之处在于多个最终倍称

以乘法叠加

而非加法:

继续上面的例子:

我们在原来的基础上再为玩家添加一个值为2的最终倍称:

代码:

/attribute @s generic.attack_damage modifier add 0-0-0-0-4 sha_dou_xing 2 multiply

那么,该玩家的最终攻击力就是:

最终属性值 = [(

基础数值

+

增加数值

) × (1 +

倍率

)] × 最终倍乘

= [(

1

+

3+1

) × (

1 +

0.5 - 0.2

)] × 2

=

5

×

1.3

×

2

=

13

若有多个最终倍乘的属性修饰器,数值将按乘法叠加。

如,在原来的基础上我们再添加一个最终倍乘5的属性修饰器:

代码:

/attribute @s generic.attack_damage modifier add 0-0-0-0-5 sha_dou_xing 5 multiply

那么,该玩家的最终攻击力就是:

最终属性值 = [(

基础数值

+

增加数值

) × (1 +

倍率

)] × 最终倍乘

= [(

1

+

3+1

) × (

1 +

0.5 - 0.2

)] × (2 × 5)

=

5

×

1.3

×

10

=

65

以上就是所有的关于添加属性修饰器的格式了。

当然,一个完整的命令不会只能添加不能删除的。

所以,让我们继续:

5.5 读取与删除

如果你突然忘记了某个属性修饰器是什么了,可以使用以下命令读取:

代码:

/attribute <目标> <属性ID> modifier value get [<倍率>]

比如:

代码:

/attribute @p generic.movement_speed modifier value get 0-0-0-0-0

读取最近玩家速度属性的,UUID为0-0-0-0-0的属性修饰器

这里要求你提供UUID,这就是为什么需要你记下UUID的原因。

如果你把UUID给了忘呢?这个……唯一的办法就是用/data get entity <目标> Attributes 来查找。(具体见本系列第12帖)

本教程的最后,如果你不想要一个属性修饰器,可以将其删除:

代码:

/attribute <目标> <属性ID> modifier remove

比如:

代码:

/attribute @p generic.movement_speed modifier remove 0-0-0-0-0

将最近玩家速度属性的,UUID为0-0-0-0-0的属性修饰器删除

就这些了哦

总结

以下提供了总结,来梳理本帖的内容:

Key Ideas

- 实体拥有属性,决定了他们的能力

- 有些属性是共用的,有些属性是特定实体独有。

- 属性拥有ID以作区分。

- 最终属性由两部分组成:基础属性,与属性修饰器(属性加成)

- /attribute是一个仅Java拥有的用于管理属性的命令。

- 它可以读取命令,格式为/attribute <目标> <属性ID> [base] get [<倍率>]

base可以用于代表读取基值。

- 本命令可以修改基值,格式为/attribute <目标> <属性ID> base set <值>

- 本命令可以管理属性修饰器。

- 可以添加:/attribute <目标> <属性ID> modifier add <UUID> <名称> <值> <运算>

UUID为一种ID,样式类似0-0-0-0-0。

名称无关效果

运算分为三种,增加(add),倍率(multiply_base),与最终倍乘(multiply)。

- 读取属性修饰器:/attribute <目标> <属性ID> modifier value get <UUID>

- 删除属性修饰器:/attribute <目标> <属性ID> modifier remove <UUID>

以上就是今天的全部内容。

……好好好是我懒,鸽了两周。

但这也是不可抗力好吧!真的哦!

下一帖不会很慢啦。

换了新的排版,喜欢么?

顺手求支持。

偶,还有,

要高/中考的各位,祝你们好运。

附录,注释,与外部链接

【1】战斗测试(CombatTest)中有另外两种关于攻击范围的属性。

【2】由于一个Bug,倍率后的值无法在聊天框中被显示出来。虽然使用/execute store 可以得到正确的数字。考略到没讲到/execute,这里跳过倍率没有举任何例子。

【3】不是完全唯一。重复地随机生成有极低几率重复,可以忽略。

另见:

Wiki:命令/attribute

百科:UUID

Wiki:战斗测试CombatTest

附录:勿使用以下UUID:

以下UUID由原版使用。若使用以下UUID,当原版的效果也被激活时会出现BUG。(虽然一般重新进入世界会消失。)

只做提醒。正常你是绝对不会输入进这些UUID的。

CB3F55D3-645C-4F38-A497-9C13A33DB5CF

CB3F55D3-645C-4F38-A497-9C13A33DB5CF

662A6B8D-DA3E-4C1C-8813-96EA6097278D

E199AD21-BA8A-4C53-8D13-6182D5C69D3A

020E0DFB-87AE-4653-9556-831010E291A0

49455A49-7EC5-45BA-B886-3B90B23A1718

B9766B59-9566-4402-BC1F-2EE2A276D836

5CD17E52-A79A-43D3-A529-90FDE04B181E

91AEAA56-376B-4498-935B-2F7F68070635

7107DE5E-7CE8-4030-940E-514C1F160890

648D7064-6A60-4F59-8ABE-C2C23A6DD7A9

22653B89-116E-49DC-9B6B-9971489B5BE5

22653B89-116E-49DC-9B6B-9971489B5BE5

03C3C89D-7037-4B42-869F-B146BCB64D2E

CC5AF142-2BD2-4215-B636-2605AED11727

#更新日志

Java 1.16.5/a页面发布

Java 1.17/a1.17更新完成

Java 1.17/b更改了关于攻速的误导信息

上一篇:

【命令】命令教程“真”从零开始(十三)给予与替换物品,命令/replaceitem

系列《命令教程“真”从零开始》

前往来自

麻瓜草稿簿

系列教程索引

【命令】命令教程“真”从零开始 (一) 指令本身,选择器,与命令方块

【命令】命令教程“真”从零开始 (二) 命令tp与相对,局部坐标与朝向锚

【命令】

命令教程“真”从零开始 (三)

四个新手指令

【命令】

命令教程“真”从零开始 (四)

有关队伍命令/team的……差不多一切

【命令】命令教程“真”从零开始 (五) 记分板与/scoreboard

【命令】

命令教程“真”从零开始 (六)

/tag指令,与进阶~选择器参数

【命令】命令教程“真”从零开始 (七) 新手指令杂烩2号

【命令】命令教程“真”从零开始 (八) 区块与强制加载命令/forceload

【命令】命令教程“真”从零开始 (九) 调整苦力怕防爆,防喷/gamerule

【命令】命令教程“真”从零开始 (十) 简单,又新手(雾)的方块指令/setblock

【命令】命令教程“真”从零开始 ( X ) 我就不信不能用大白话讲清楚NBT

【命令】命令教程"真"从零开始(十二)数据运算三方法之一修改NBT/data

【命令】命令教程“真”从零开始(十三)给予与替换物品,命令/replaceitem

【命令】命令教程“真”从零开始(十四)修改属性/attribute【一拳打爆末影龙】

【命令】命令教程“真”从零开始(十五)最接近神的一次:填充命令/fill

【命令】命令教程"真"从零开始(十六)复制一片区域:复制命令/clone

下一篇:

【命令】命令教程“真”从零开始(十五)最接近神的一次:填充命令/fill[1.17]