Give指令

By MCSugar_cane    2017/12/17

为了让教程变得轻松一些,我在其中加入了一些对话,不过也不要小瞧他们哦,他们的嘴里可会透露一些信息。另外,本教程中的指令适用于但不仅限于v1.11.2-v1.12,可自行测试。


目录:

  1. 基础用法
  2. 数据标签
    1. 基础标签
    2. 附魔-Ench&StoredEnchantments
    3. 显示-Display
    4. 属性-AttributeModifiers
    5. 更多标签
    6. 隐藏信息-HideFlags
    7. 无法破坏-Unbreakable
    8. 可破坏-CanDestroy
    9. 可放置-CanPlaceOn
    10. 特有标签
    11. 装备&工具&武器>修复损耗-RepairCost
    12. 药水>药水效果-CustomPotionEffects
    13. 怪物蛋>实体标签-EntityTag
    14. 方块标签-BlockEntityTag
    15. 命令方块>命令-Command
    16. 箱子&漏斗&熔炼>锁-Lock


基础用法

give指令的用法:/give <玩家> <物品> [数量] [数据值] [数据标签]

这里的<玩家>就不做解释了,<物品>是指你要给予的是什么,例如你突然想给予所有玩家苹果,则应为:/give @a apple

什么?你说你不知道物品英文ID,别怕,这不是问题。对于不了解的物品,可以将它丢弃以表嫌弃后使用/entitydata @e[type=Item,c=1] {}来看该物品的数据标签,例如漏斗矿车的英文ID,我们先将它丢弃,使用上述指令后发现聊天框出现了这么一坨红色的代码

我的世界entitydata掉落物

可以看到,在代码第三行,它给出了该物品的英文ID,数量,数据值。Item:{id:"minecraft:hopper_minecart",Count:1b,Damage:0s},其中<物品>为hopper_minecart,[数量]Count为1,[数据值]Damage为0。此外,也可以通过按F3+H来显示高级提示框,显示后就可以直接在背包中将鼠标移动到物品上看他的minecraftID了。

回到给予苹果的问题上,因为/give @a apple未指定[数量]则默认为1,所以执行命令后玩家会得到一个苹果。若要给予10个苹果则为:/give @a apple 10

对于大多数物品,只需要用其默认数据值0就可以通过give得到,但对于染色体,sorry,但对于染料却不行,所有染料的英文ID都是dye,但输入/give @p dye 1却只能得到黑色染料也就是墨囊。我们丢弃玫瑰红用entitydata看看,发现它的[数据值]为1。故使用/give @p dye 1 1,果真得到了玫瑰红。

对于工具与武器,数据值又代表着损耗值,有不少地图开发者都用这个原理来做只能用一次的武器从而减少命令方块的使用。如只能使用一次的木剑/give @p wooden_sword 1 1000。并且在1.8的版本中,还可以通过/give @p bow 1 3 {Unbreakable:1}来获得一把看上去被拉开的弓。



数据标签

数据标签>附魔:

好啦,现在原版中几乎绝大多数东西你都可以通过Give得到了。再看看工具里的那些附魔书,它们该怎么获得呢?

aa622: 我已经按照你说的做了,可为什么我输入/give @p minecraft:enchanted_book 1 0得到的只是一本附魔书!根本没有附魔!我需要对它使用魔法吗!?

Hu_Peng: 我的背包里已经躺满了附魔书!可它们都没有附魔!

what_name: 这到底要怎么玩!!

对于上面的反映,我们执行这行代码看看

  1. /give @p minecraft:enchanted_book 1 0 {ench:[{id:34,lvl:3},{id:32,lvl:1}]}

Msure: COOL!它终于被附魔了,是后面{}里的代码起了作用吗,后面那堆括号是什么意思呢!?

没错,正是后面那堆代码起了作用,它就是[数据标签]了。其格式如{数据},这里的ench就是附魔的数据值啦,其格式如ench:[],这里中括号中留空则为无附魔,要想加上附魔需要在中括号中加上ench:[{id:0,lvl:1}],这里id:0意思是其附魔属性为防御,lvl:1则是防御等级为1级,同样的,武器、工具等物品也可以像这样被直接附魔(如想要隐藏物品附魔的信息,可加上数据标签HideFlags:1,如/give @p minecraft:reeds 1 0 {ench:[{id:34,lvl:10}],HideFlags:1},关于HideFlags更详细的内容请在更多属性查看)。关于附魔ID数值目录可参考下表

DHK: 等等!先别参考!这个蓝色的附魔书根本无法附魔!

xiao_ttng: 什么!?那要怎么办!

的确,这样得到的附魔书无法附魔在物品上。难不成是数据标签出错了?我们从背包中拿一本附魔书丢掉/entitydata看看

我的世界entitydata掉落物

果然,其tag根本不是ench:[]而是StoredEnchantments:[],也难怪无法附魔了...改动后的指令应该为

  1. /give @p minecraft:enchanted_book 1 0 {StoredEnchantments:[{id:34,lvl:3},{id:32,lvl:1}]}

Msure: COOL!它终于被附魔了,后面{}里的结构与ench中的相同耶~

(继续无视),好啦,附魔书告一段落,我们接着看表~

  附魔ID:   装备:   0 - 防御,Protection (头盔,装甲,鞋子,裤子)   1 - 火焰保护,Fire Protection (头盔,装甲,鞋子,裤子)   2 - 摔落保护,Feather Falling (鞋子)   3 - 爆炸防御,Blast Protection (头盔,装甲,鞋子,裤子)   4 - 远程攻击防御,Projectile Protection (头盔,装甲,鞋子,裤子)   5 - 水下呼吸,Respiration (头盔)   6 - 水下挖掘,Aqua Affinity (头盔)   7 - 荆棘,Thorns (头盔,装甲,鞋子,裤子) 8 - 深海探索者, Depth Strider (头盔,装甲,鞋子,裤子)   9 - 冰霜行者,Frost Walker (鞋子)   10 - 绑定诅咒,Bangdingzuzhou (物品)   武器(剑):   16 - 锋利,Sharpness (剑)   17 - 亡灵杀手,Smite (剑)   18 - 节肢杀手,Bane Of Arthropods (剑)   19 - 击退,Knock Back (剑)   20 - 火焰附加,Fire Aspect (剑)   21 - 抢夺,Looting (剑)   22 - 横扫之刃,Sweeping Edge (剑)   工具:   32 - 挖掘效率,Efficiency (稿子,斧子,铲子)   33 - 精准采集,Silk Touch (稿子,斧子,铲子)   34 - 耐久,Unbreaking (稿子,斧子,铲子,武器,装备)   35 - 时运,Fortune (稿子,斧子,铲子)   武器(弓箭):   48 - 力量,Power (弓箭)   49 - 弓箭击退,Punch (弓箭)   50 - 火矢,Flame (弓)   51 - 无限弓箭,Infinity (弓)   MORE:   61 - 海之眷顾,Luck of the Sea (鱼竿)   62 - 饵钓,Lure (鱼竿)   70 - 修复,Mending (工具,武器,装备)   71 - 消失诅咒,Curse of Binding (物品)


数据标签>显示:

Jiebi: 现在我已经知道附魔了,可特别的我怎么少得了个性的物品呢?!我看他们给物品加了五花八门的名字和介绍,那要怎么做呢?

Msure: 这个我知道!你输入这行代码试试,我在其他地方看到的,但它具体意思不是很明白...

  1. /give @p wooden_sword 1 0 {display:{Name:"桃木剑",Lore:["残破的木剑","似乎有一些灵气"]},HideFlags:127,ench:[{id:34,lvl:10}]}

我的世界entitydata掉落物

Jiebi: Wow!Oops!如果我没猜错的话Name:""就是这个物品的名字,Lore:[""]应该就是紫色的那行介绍了

部分如Jiebi所说,但还有个最重要的数据标签display:{},Name,Lore都属于display。



数据标签>属性:

想必在许多地图里你都能看到某些物品具有像速度、防击退等额外的属性,这是怎么做到的呢?其实就是AttributeModifiers:[]啦。具体格式如下

  1. /give @p wooden_axe 1 0 {AttributeModifiers:[{AttributeName:"generic.movementSpeed",Name:"Speed",Amount:0.2,Operation:1,UUIDMost:1,UUIDLeast:1,Slot:mainhand}]}

AttributeName: 所使用的属性,包含如下几种"移动速度:generic.movementSpeed,攻击:generic.attackDamage,攻击速度:generic.attackSpeed,最大生命:generic.maxHealth,抗击退:generic.knockbackResistance,仇恨跟踪:generic.followRange,幸运:generic.luck,护甲:generic.armor,护甲韧性:generic.armorToughness"

Name: 属性名称,可以自定义,语言不限

Amount: 属性对应的值,受Operation影响

Operation: 属性值的类型,分为0、1或2,0为具体数值,当Amount为5时,这里则为5;1为百分比,当Amount为5时,这里则为500%

UUIDMost: 这个属性的通用唯一识别码最高有效位

UUIDLeast: 这个属性的通用唯一识别码最低有效位

Slot: 1.9以上版本新加入的数据标签,当属性具有此标签时,需要被放置在相应储存格属性才会生效。若不填写此数据标签,则在Slot所支持的全部储存格都生效。可填写以下值"主手:mainhand,副手:offhand,脚:feet,腿:legs,胸部:chest,头部:head"

请看下面例子

  1. /give @p diamond_sword 1 0 {AttributeModifiers:[{Operation:0,UUIDLeast:1,UUIDMost:1,Amount:20,AttributeName:generic.maxHealth,Name:Health},{UUIDLeast:1,UUIDMost:1,Amount:10,AttributeName:"generic.attackDamage",Operation:0,Name:"act"}],ench:[{id:16,lvl:1},{id:17,lvl:1},{id:18,lvl:1},{id:19,lvl:1}],display:{Name:"普通的钻石剑",Lore:["普通的我","普通的世界"]}}


数据标签>更多标签

数据标签>更多标签-隐藏信息:

HideFlags在1.8版本就出现了,不过许多玩家都不知道它的具体用法,只能记住几个常见值,如127(隐藏附魔)。对此,你不是一个人...下面是一些常用的值,满足绝大部分功能已经足够了

0 - 全部显示 1 - 隐藏附魔 2 - 隐藏自定义属性 3 - 隐藏附魔和自定义属性 4 - 隐藏{Unbreakable} (永久不毁&无法破坏) 8 - 隐藏{CanDestroy} (可破坏) 16 - 隐藏{CanPlaceOn} (可放置在) 32 - 隐藏大部分信息(药水信息,书作者,烟花效果等等) 63 - 隐藏所有的信息,除了物品名和Lore文本


数据标签>更多标签-无法破坏:

这个数据标签只有2个有效值,0(可破坏)与1(无法破坏),可破坏的作用下物品会被消耗,而无法破坏的作用下物品可以永久使用,不会被损耗。当然如果你要试试将物品丢入虚空或岩浆看能不能破坏的话,就另当别论了

  1. /give @p wooden_sword 1 0 {Unbreakable:0}
  2. /give @p wooden_sword 1 0 {Unbreakable:1}


数据标签>更多标签-可破坏:

在许多解密和关卡的地图中,你都能看到它的影子,也就是冒险模式下常用到的CanDestroy。给物品加上这个数据标签,即使在冒险模式下,也可破坏其指定的方块,并且所有物品都可以拥有此标签。例如一个可以破坏草放块、玻璃的甘蔗,代码为

  1. /give @p reeds 1 0 {CanDestroy:["grass","glass"]}

值得注意的是,它无法具体指定到某一数据值的方块,例如石头、花岗岩、磨制花岗岩、闪长岩等都是stone,只是Damage不同,因为CanDestroy无法指定方块的数据值,所以在{CanDestroy:["minecraft:stone"]}下可以破坏多种类型(Damage)的同种(ID)方块。



数据标签>更多标签-可放置:

CanPlaceOn,这个数据标签通常与可破坏如影随形,它可以使你即使在冒险模式喜下也可以将可放置物品放置在其指定的方块上,如可以插在泥土、木板、原石上的火把,代码为

  1. /give @p torch 1 0 {CanPlaceOn:["dirt","planks","cobblestone"]}

同样的,可放置有着跟可破坏一样放荡不羁的特性,无法指定方块的数据值



数据标签>特有标签

数据标签>特有标签>装备&工具&武器:

RepairCost,这一数据标签在1.9之后就有了,但是却没有多少玩家认识它。其实它的用途还是...好像是有那么一点小。但是不管怎么说它还是一个数据标签,其具体用法为{RepairCost:X},在X为具体的数值,可以是所有的整数,不过当其为负数时,虽然不会有附魔花费,但你无法将其修复,通俗来讲"拖不出来!"。

接下来,我们用如下两行代码得到了两把损耗值均为1(Damage=1),分别具有{RepairCost:0}{RepairCost:2}数据标签的铁剑。

  1. /give @p iron_sword 1 1 {RepairCost:0,display:{Name:"RepairCost:0"}}
  2. /give @p iron_sword 1 1 {RepairCost:2,display:{Name:"RepairCost:2"}}

将其分别修复,结果如下:

我的世界修复损耗0我的世界修复损耗1

可以发现,RepairCost为0时,铁剑所需的附魔花费还是跟无修复损耗标签的铁剑一样,均需要1级;而RepairCost为2时,所需的附魔花费成了3。可以得出,RepairCost不是让物品的修复消耗等于其值,而是在原有的基础上,再加上其值。另外地,物品没修复一次,其附魔花费为上一次的2倍。则当RepairCost为2时,第一次附魔花费为3,第二次就为6,第三次为12,依次递增。



数据标签>特有标签>药水:

在1.8后,受数据标签CustomPotionEffects:[]的影响,药水的效果可以被自定义了。其结构与之前说的ench和StoredEnchantments有着共同的尿性,为CustomPotionEffects:[{...},{...}]...

小喆: 够了!不要说了!我要栗子!你就告诉我如何给一瓶同时有瞬间治疗和漂浮的药水吧

OJBK,在栗子上面我从不吝啬

栗子

...回到正题,如其所说的药水指令为

  1. /give @p potion 1 0 {CustomPotionEffects:[{Id:6,Amplifier:1,Duration:1,ShowParticles:0b},{Id:25,Amplifier:1,Duration:100,ShowParticles:0b}],display:{Name:"同时有瞬间治疗和漂浮的药水吧"}}

将指令拆解,首先根据此教程的"数据标签>显示"可以知道它是一瓶名为同时有瞬间治疗和漂浮的药水吧的药水,其次来看{Id:6,Amplifier:1,Duration:1,ShowParticles:0b}Id:6代表瞬间治疗的数字ID(同effect),Amplifier:1表示等级为1,Duration:1表示其效果持续时间为1gt(gametick,20gt=1s),ShowParticles:0b表示不播放药水粒子,也就是喝下后身上不会再冒出该效果对应颜色的圈圈了。如果为ShowParticles:1b的话,则就要冒圈圈咯。如果不指定ShowParticles,会默认播放粒子效果。并且ShowParticles只支持0和1两个值,也就是布尔值啦。

如上,{Id:25,Amplifier:1,Duration:100,ShowParticles:0b}自然也一样了,表示漂浮,其等级1,持续时间100gt,不播放药水粒子效果,按照20gt=1s,可以得出其持续时间为5s。

此外,如果需要溅射型和滞留性,只需要改为对应的物品ID即可,如下:

  1. /give @p splash_potion 1 0 {CustomPotionEffects:[{Id:6,Amplifier:1,Duration:1,ShowParticles:0b},{Id:25,Amplifier:1,Duration:100,ShowParticles:0b}],display:{Lore:["喷溅型"],Name:"治疗"}}
  2. give @p lingering_potion 1 0 {Duration:20,CustomPotionEffects:[{Id:6,Amplifier:1,Duration:1,ShowParticles:0b},{Id:25,Amplifier:1,Duration:100,ShowParticles:0b}],display:{Lore:["滞留型"],Name:"治疗"}}

值得注意的是,喷溅药水如不指定ShowParticles,会默认播放粒子效果,包含滞留时的粒子和玩家身上的粒子。另外,若将其值设定为0,则会播放黑色的粒子,如下图左边一侧。

我的世界滞留药水粒子

花期: 好了,你已经没有利用价值了,你走吧

  1. /kill @e[name=花期]

好啦我们下次更新见~,哦对了,这里是我整合的药水ID,可保存下来或收藏该页面方便以后查阅噢

药水效果ID: 速度 ID 【1】 speed 缓慢 ID 【2】 slowness 急迫 ID 【3】 haste 挖掘疲劳 ID 【4】 mining_fatigue 力量 ID 【5】 strength 瞬间治疗 ID 【6】 instant_health 瞬间伤害 ID 【7】 instant_damage 跳跃提升 ID 【8】 jump_boost 反胃 ID 【9】 nausea 生命恢复 ID 【10】 regeneration 抗性提升 ID 【11】 resistance 防火 ID 【12】 fire_resistance 水下呼吸 ID 【13】 water_breathing 隐身 ID 【14】 invisibility 失明 ID 【15】 blindness 夜视 ID 【16】 night_vision 饥饿 ID 【17】 hunger 虚弱 ID 【18】 weakness 中毒 ID 【19】 poison 凋零 ID 【20】 wither 生命提升 ID 【21】 health_boost 伤害吸收 ID 【22】 absorption 饱和 ID 【23】 saturation 发光 ID 【24】 glowing 飞行 ID 【25】 levitation 幸运 ID 【26】 luck 霉运 ID 【27】 unluck


数据标签>特有标签>怪物蛋:

在1.9之前,想要获取不同的怪物蛋都是通过修改其数据值,例如获得生成鱿鱼怪物蛋,指令为/give @p spawn_egg 1 72。可版本更新后,发现这条指令获取的是一个白色的蛋,并且无法生成实体。

原因是因为mojang在版本更新中允许用/give直接修改刷怪蛋生成的实体属性了,谁还愿意花时间去使用不好记的数据值来获取呢。在新版本中,要获得一个生成鱿鱼的怪物蛋,指令为/give @p spawn_egg 1 0 {EntityTag:{id:"minecraft:squid"}}。其中EntityTag:{}就是接下来要说到的实体标签啦。有了它的帮助,可以直接在怪物蛋中定义生成实体的数据标签了。如生成一个名字为G、没有AI的有隐身效果的蝙蝠,指令为

  1. /give @p minecraft:spawn_egg 1 0 {EntityTag:{id:"minecraft:bat",CustomName:"G",NoAI:1,ActiveEffects:[{Id:14,Duration:9999999,Amplifier:50,Ambient:1}]}}

可以看到,除了给怪物蛋指定生成的实体,其他都是/summon后所含有的数据标签,也就是说,只要/summon能召唤出来的,用/give获得的怪物蛋也能召唤出来。不过本教程主要是针对于/give,/summon后的数据标签就不在这里做介绍啦。

Give: 哈哈,Summon,现在你有的数据标签我也有了。可我有的标签你没有,要不以后就做我小弟吧

Summon: 别得意啊喂,在绝大部分命令系统环节中没有我可不行,你看看那啥甘小蔗,他的帖子中是你出现次数多还是我。你的心里没有

甘小蔗: 够了!不要吵了,你们都差不多,Give中的CustomPotionEffects:[]就跟你Summon里的ActiveEffects:[]结构一样,都是从一个地方出来的还嚷嚷了。



数据标签>方块标签

数据标签>方块标签>命令-Command:

对于{Command:""}这个只有命令方块才有的标签,许多开发者应该都会用到,且大多数是在用在/blockdata上,例如OOC的生成(不过现在也主流用/setblock了)。在1.8-1.8.3版本的时候就有人用箱子+命令方块+漏斗+发射器再配上一些红石来做延迟执行的剧情(在那个版本发射器发射出的命令方块会直接成为一个方块而不是掉落物),例如那个时期很火的盘灵古域,就是用的这一方法。而这个方法里用到的命令方块就是本身就含有命令的命令方块。

获取这种命令方块的途径有两种,一种是输好命令后Ctrl+鼠标中键得到具有相应命令的命令方块,另一种就是/give。具体的命令如下

  1. /give @p command_block 1 0 {BlockEntityTag:{CustomName:"被编译的命令方块",Command:"say Hey"},display:{Lore:["(+NBT)"]}}

BlockEntityTag: 为方块标签(通过/give获得有数据标签的方块时,都要填在它里面)

CustomName: 为该命令方块的名字,默认是为@,通过让命令方块执行say等指令可以看见其名字

Command: 就是该命令方块包含的指令了,不过指的注意的是添加引号时的转换,如使其具有/tellraw @a "G"这行指令就不能再用{Command:"/tellraw @a "G""}了。原因是因为MC无法搞懂你的Command数据标签是在哪结束的,要将"G"上的引号转义,才能被成功执行。则应为{Command:"/tellraw @a \"G\""}



数据标签>方块标签>锁-Lock:

一个十分常用的功能,被加了这个标签的方块(部分方块支持此数据标签)只能被手持指定名字的物品打开,而其他玩家右键它会显示"此'方块'已被上锁",不过这类箱子还是可以被生存破坏。

例如一个需要用名为Sugar的物品才能打开的箱子,获取的代码如下

  1. /give @p chest 1 0 {BlockEntityTag:{Lock:"Sugar"}}


未完待续,请期待后续更新...



欢迎加群交流划水:481528679