Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 1776|回复: 20

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

[复制链接]
Dahesor 当前离线
积分
2079
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-2-5
查看详细资料
发表于 2021-5-19 13:29:58 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 Dahesor 于 2021-8-23 02:48 编辑

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


     声明:
1. 本系列教程默认读者拥有关于Minecraft游戏本身的基础了解。
2. 本系列全部教程适用于当前Java最新版(1.17)。但本帖的内容适用于1.16之前。
3. 本系列教程致力于基础原理而非使用方法,因为某些原因,这是本声明里最重要的一条。
4. 本教程需要读者有特定的命令知识。这些这些内容在下方表格中列出


需要前置知识:
请确保你理解下列的内容。下表的所有内容一定在本系列教程的某一帖讨论过,所以若您是从本系列第一帖起阅读至今,可以不用看。
对于跳跃式阅读的读者,还请检查一番:




     前言

我要一背包的钻石快!
满足你!

只要简单地执行下面的命令:
  1. /give @p diamond_block 2304
复制代码
你就会获得一整背包的钻石砖!

那今天,我们就来看看这个神奇的命令,给予命令/give
当然不止。除了该命令,今天我们的内容还包括了清除物品命令/clear,与可以替换容器物品的命令/replaceitem。

让我们开始吧

1. 命令/give


这是一个十分简单又常用的命令,可以给予玩家一定数量的特定物品。
格式:
  1. /give <目标> <物品ID> [<数量>]
复制代码

目标处应指定一玩家ID或选择器或UUID,为“要给谁物品”。<物品ID>则是那个要给予的物品的ID。[<数量>]作为一个可选元素,可以指定给予的数量。若不指定数量会默认为1个。

比如:
  1. /give @a diamond_block 64
复制代码
给予所有玩家(@a)一组钻石块
注意“diamond_block”是钻石块的ID。

或:
  1. /give @a stone
复制代码
给予所有玩家(@a)一颗石头(stone)
由于没有指定数量,所以数量默认为一。

有一点,请不要被“1组=64个”的这个概念限制了。/give是可以接受大于64的数字的,比如:
  1. /give @a diamond_block 128
复制代码
给予所有玩家两组钻石块

     然而,这个上限是6400个物品,也就是100组,不能超过这个数字


这是个相当简单的命令,不必多说。
对于不知道物品ID的读者,可以前往Wiki本页面查看,或在游戏中按下F3+H(若键盘有fnLock,则按下fn+F3+H),显示更详细的的标签提示,即可直接看到ID:

142703zdapisrivsz51rxf.png

如图,圈起来的就是ID。前面的minecraft:是命名空间,一般可以省略……对于这部分内容在系列第十帖有着较详细的描述。

上面就是/give的全部内容了……但是较有意思的一点是,/give命令的实质并不是修改玩家的物品栏,而是在玩家的精准位置生成一个可以被瞬间捡起的掉落物……所以当目标的背包满的时候使用/give,物品会掉出来。
(所以说,/give的功能完全可以用/summon加NBT实现(啊,要用execute来确定玩家位置))

/give命令可以使用NBT来获取特殊的物品,比如锋利lv.9999的钻石剑之类的……这部分内容在系列第十一帖讲述,若感兴趣请移步【命令】命令教程“真”从零开始 ( X ) 我就不信不能用大白话讲清楚NBT [1.16]

这里简单举个NBT例子:
  1. /give @a crossbow{Charged:1b} 2
复制代码

给予所有玩家两把上弦(Charged:1b【注1】的弩。


2. 命令/clear

有了给予命令,我们当然也少不了可以清除物品的清除命令。
命令/clear可以清除玩家背包内特定物品。
格式:

  1. /clear [<目标>] [<物品>] [<最大数量>]
复制代码
与/give命令十分地相似,/clear命令也有<目标>,指定命令对象。也有<物品ID>,指定要清除的物品。同样也有<最大数量>,指定要清除多少个物品。

如:
  1. /clear @s tnt 16
复制代码
清除自己(最多)16个TNT

注意最后面的元素“[<最大数量>]”是可选的。若不指定一个最大数量,命令将会清除所有物品:

  1. /clear @s dirt
复制代码
清除命令执行者身上的所有泥土

有一个很有趣的事实是,这个最大数量可以为0:
  1. /clear @s dirt 0
复制代码
清除命令执行者身上的0个泥土

这……好像没用啊。清除0个和没执行命令有什么区别么?
有。
虽然没有对玩家的实际影响,但该命令却可以找出这名玩家身上有没有泥土。
当你尝试清除的玩家身上并没有目标物品时,命令会执行失败,但是如果有,虽然清除了0个,但命令会执行成功
你可以将本命令输入进条件制约的连锁型命令方块上,来侦测玩家是否拥有特定物品。
(当然……这玩意在/execute store中还可以找出物品的数量,但这里就不多说了)

接下来,你可能注意到了,不只是数量时可选元素,就连[<物品ID>]也是。
当你不指定物品ID时,命令会清除玩家身上的所有物品:
  1. /clear @r
复制代码
将一名随机玩家的背包清空

然后,目标本身也是可选元素。若不指定要清除的目标,命令会清除执行者身上的物品:
  1. /clear
复制代码
把自己的背包清空

2.1 标签

然而,/clear命令并不是只能清除全部或单个物品。
我们还可以清除一整个标签的物品——这么说:
游戏内置(或通过数据包添加)中,对于特定的一些物品,用一种叫做标签(tags)的东西将它们“归类”了起来。
(注意这里的标签和NBT或/tag没有关系,不要混淆)

比如,你想清楚玩家身上的所有铁砧。但是你应该知道铁砧有很多种类,比如轻微损坏的铁砧,严重损坏的铁砧等。
如果你想要把全部的三种铁砧清除,你将需要三条命令。
不过我们有一种更便捷的方法,那就是用标签:
  1. /clear @a #anvil
复制代码
我们原本物品ID的位置被替换为了“#anvil”。这其中的“#”代表了这是一个标签而非物品。后面的“anvil”是铁砧。
#anvil”就是“铁砧标签”的意思。
本命令会清除所有损坏程度的铁砧。

同样:
  1. /clear @a #bed
复制代码
清除所有的床,无论其颜色

  1. /clear @a #logs
复制代码
清除所有的原木,无论是什么种类,剥没剥皮

  1. /clear @a #beacon_payment_items
复制代码
这里的标签“#beacon_payment_items”为“可以放置在信标GUI中以激活信标”的物品。
正常来讲,这包括了铁锭,金锭,钻石,绿宝石,和下界合金锭。


那么,你该在哪里查找可用的标签呢?
简单,在Wiki的标签页面


注意:
1. 标签不是用来给你便捷地使用的……标签在游戏中的用处还有很多……我们以后会说。
2. 若你的世界按装了数据包(原版模组),或者模组,那么标签的内容可能被更改

以下内容涉及NBT,可跳过



3. 替换物品命令/replaceitem


     警告:这是已移除特性

     警告:本命令已在1.17被移除,新出现的命令/item取而代之


命令/replaceitem,可以替换方块(箱子、熔炉等)或实体(玩家或生物)物品栏内特定位置的物品。
格式:
  1. /replaceitem (block <x> <y> <z> | entity <选择器>) <栏位> <物品> [<数量>]
复制代码
其中,命令头后面的是要被替换物品的对象。这可以是一个方块(接上它的坐标),或者是实体(接上选择器(或ID/UUID))。
紧接其后的是“<栏位>”,即要替换容器或物品栏的哪一格。
最后面的即是要替换的<物品>与其数量(若不指定默认为1)。

比如:
  1. /replaceitem @p weapon.mainhand carrot 1
复制代码
在上面的命令中,要替换的物品“carrot”是胡萝卜。栏位“weapon.mainhand”是“主手”的意思。由于选择器是@p,最近的玩家,所以上面的命令实际上是在说:将最近玩家的主手物品(正在选中的那一栏)替换为1个胡萝卜🥕。

蛮简单吧。现在的唯一问题就是,栏位要填啥?如何指定物品栏或容器内的特定物品?

栏位的ID由两部分组成。大概长这样:类别.位置
类别规定了这是哪里的东西,而位置则是具体位置。
比如上面的例子“weapon.mainhand”中,weapon是武器的意思。哪里的武器呢?mainhand(主手)的。
我们也可以有weapon.offhand,即副手物品。offhand就是副手。

下面是所有可供选择的“类别”:
我们有weapon,即武器(主副手)。
我们有armor,即盔甲栏。
inventory,背包内的。
hotbar,快捷栏上的。
enderchest,末影箱里的。
horse,马匹的东西,包括鞍与马铠,与其箱子内的东西。
还有villager,村民拥有的。
最后是容器的,无论是箱子漏斗发射器:container

嘛,我在这里可能说不太清,但你只要看向这个表格就好了:
栏位
栏位编号
描述
armor.head
-
盔甲栏。从上到下分别是头盔,胸甲,护腿,和靴子。
仅对盔甲架、生物及玩家有效(并非所有生物会显示或利用这些物品)
除了头部外,无法替换非护甲类物品。如你可以在玩家的头部装备栏放一块玻璃,但不能在胸甲放。


armor.chest
-
armor.legs
-
armor.feet
-
weapon.mainhand

weapon
-
手持物。mainhand是主手,offhand是副手。对于玩家,mainhand为其选中的格子。
仅对盔甲架和生物有效(虽然并非所有生物会显示或利用这些物品)。
weaponweapon.mainhand效果一致
weapon.offhand
-
hotbar.栏位编号
0到8
仅玩家:玩家快捷栏。需将栏位编号替换为0~8的数字以代表快捷栏的特定位置。这个栏位编号是从左往右从0开始算的。如,hotbar.0代表快捷栏第一位(最左),hotbar.4是中间那格,hotbar.8是最右侧的那格。
enderchest.栏位编号
0到26
仅玩家:玩家末影箱。需将栏位编号替换为0~26的数字以代表末影箱的特定位置。这个栏位编号是从左往右,从上到下排列的。栏位编号从零开始算起。如,enderchest.0代表末影箱第一格(左上角),enderchest.17是第二行最后一个,enderchest.26是最后一格(右下角)。
inventory.栏位编号
0到26
仅玩家、漏斗矿车和运输矿车:物品栏。需将栏位编号替换为0~26的数字。编号从左到右从上到下算起。如inventory.0为背包最左上角。inventory.26为背包右下角。注意不计算快捷栏。替换快捷栏物品应使用hotbar。
由于漏斗矿车只有五格,所以无法对其使用5或以上的栏位编号。
horse.saddle
-
仅马、驴和骡的鞍。必须替换为鞍或空气(清空),不然无法成功替换。
horse.chest
-
仅马、驴和骡的箱子(箱子本身,不是其内容)。必须替换为箱子或空气(清空),不然无法成功替换。
horse.armor
-
仅马和羊驼;必须替换为马铠(马)或地毯(羊驼)或空气(清空),不然无法成功替换。
horse.栏位编号
0到14
驮箱子的驴和骡: 其箱子内的东西。需将需将栏位编号替换为0~14的数字以代表特定位置。计数顺序与上面的一样。
villager.栏位编号
0到7
仅村民: 这是村民所拥有的东西。需将需将栏位编号替换为0 ~ 7的数字
container.栏位编号
0到7
对于任意容器物品展示框:这是其中包含的物品。对于箱子、发射器、投掷器、漏斗或陷阱箱,其栏位编号从左上角“0”开始,之后从左到右,从上到下递增。根据容器的不同,最大到26。
  • 对于熔炉,高炉,烟熏炉,0代表原料栏,1为燃料栏,2为输出栏。
  • 对于酿造台,0,1,2从左到右分别代表三个药水栏。3是顶部的栏位。烈焰粉的栏位为4。
  • 对于物品展示框,container.0代表其展示的物品,其余无效。
  • 大型箱子或陷阱箱被视为两个独立的容器。

上面的就是所有你可以填写的栏位了。我本来想参考Wiki偷偷懒的,结果Wiki竟然很多是错的!(当然,被我改正了)。下面举几个例子:

  1. /replaceitem entity @r enderchest.8 stone 6
复制代码
将随机玩家的末影箱的第9(8+1)栏(第一行最右侧)的物品替换为6颗石头
注意原物品会消失。
  1. /replaceitem entity @a hotbar.0 sand
复制代码
将所有玩家的快捷栏的第1栏的物品替换为1个沙子

  1. /replaceitem entity @e[type=donkey] horse.chest chest
复制代码
为所有驴按上箱子

  1. /replaceitem entity @e[type=donkey] horse.chest air
复制代码
为所有驴卸下箱子
当你想要将特定位置物品清空,将物品ID指定为air(空气)即可。

  1. /replaceitem block ~ ~ ~ container.4 diamond 64
复制代码
在执行位置的容器第5格(假设它有第五格)放置64颗钻石

  1. /replaceitem entity @a armor.head glass
复制代码
在所有玩家的头部替换为玻璃


好,这样应该够了。
最后的几件事是,本命令可以使用NBT,和在give与clear中一样。
/replaceitem是无法突破堆叠上限的……比如你无法替换64个药水。嗯。
而且/replaceitem命令运行时是没有动画或提示的。而/give至少会有捡起物品的“破"的一声。


     后记

以上就是本期所有内容了。
前面的两帖,NBT与/data的教程自我感觉其实不咋好……但是也不知道怎么改。判断为还太菜理解不够……但是这不是想明白就能解决的。
那就先放哪,等我把这个系列写完,也许就知道怎么改了。

那,这一帖,与接下来几帖都很简单……最难的就是/attribute了。
直到JSON文本之前都很简单。对。
那,如果你有学到什么的话,请支持一下作者吧……反正给人气又不会扣你自己的。

再见。

     注释

【1】但是无法射击,因为没说填了啥


#更新日志
Java 1.16.5/a  页面发布
Java 1.16.5/b  删除了一个多余的空格,改正了钻石的英文。
Java 1.16.5/c  添加了关于/item的提示。
Java 1.16.5/d  添加了关于物品展示框的说明。

Java 1.17/a  1.17更新完成,添加了/give数量限制


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


系列《命令教程“真”从零开始》
前往来自 麻瓜草稿簿系列教程索引
下一篇:【命令】命令教程“真”从零开始(十四)修改属性/attribute【一拳打爆末影龙】





评分

参与人数 3人气 +4 金粒 +40 收起 理由
ykyh836657876 + 1 MCBBS有你更精彩~
mGHLy + 1 + 20 神乎其技!6的飞起!
xiang_xge + 2 + 20 MCBBS有你更精彩~

查看全部评分

ruhuasiyu 当前离线
积分
21827
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2014-10-16
查看详细资料
发表于 2021-5-19 13:44:49 | 显示全部楼层
2中倒数第二个命令多了个空格
回复

使用道具 举报

Dahesor 当前离线
积分
2079
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-2-5
查看详细资料
 楼主| 发表于 2021-5-19 13:48:55 | 显示全部楼层
本帖最后由 Dahesor 于 2021-5-19 14:12 编辑
ruhuasiyu 发表于 2021-5-19 13:44
2中倒数第二个命令多了个空格

???没找到
没检索到双空格
可能是你看错了吧。


回复

使用道具 举报

PlusUltra 当前离线
积分
404
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2021-5-10
查看详细资料
发表于 2021-5-19 14:16:27 | 显示全部楼层
本帖最后由 PlusUltra 于 2021-5-19 14:23 编辑

学习到了感谢大佬详细教程

评分

参与人数 2人气 -1 金粒 -4 收起 理由
SHEEP_REALMS -1 -10 请仔细阅读版规,本版严禁灌水!.
Dahesor + 6 你这算水帖,改一下

查看全部评分

回复

使用道具 举报

Xiao2 当前离线
积分
6886
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2014-6-24
查看详细资料
发表于 2021-5-19 15:10:46 | 显示全部楼层
老哥replaceitem的意义不item啊
回复

使用道具 举报

ruhuasiyu 当前离线
积分
21827
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2014-10-16
查看详细资料
发表于 2021-5-19 17:49:20 | 显示全部楼层
Dahesor 发表于 2021-5-19 13:48
???没找到
没检索到双空格
可能是你看错了吧。

/clear @a crossbow{Charged:1b}

评分

参与人数 1人气 +1 金粒 +30 收起 理由
Dahesor + 1 + 30 看到了,已修复

查看全部评分

回复

使用道具 举报

Jurassiccraft 当前离线
积分
2286
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-3-9
查看详细资料
发表于 2021-5-19 20:21:39 | 显示全部楼层
《关于我马上收藏了你的所有教程这事》(不过……好像最近快照replace改成item了,正式版发布之后要不要改一下……)
回复

使用道具 举报

whatfilmae 当前离线
积分
12699
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-8-12
查看详细资料
发表于 2021-5-19 21:22:17 | 显示全部楼层
/give @a dimond_block 64

钻石块的英文都能拼错吗?
除了前言那里的第一条指令是正确的, 下列diamond_block全都是拼错了的

评分

参与人数 1人气 +2 金粒 +30 收起 理由
Dahesor + 2 + 30 感谢,已修复

查看全部评分

回复

使用道具 举报

Dahesor 当前离线
积分
2079
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-2-5
查看详细资料
 楼主| 发表于 2021-5-19 23:21:08 | 显示全部楼层
Jurassiccraft 发表于 2021-5-19 20:21
《关于我马上收藏了你的所有教程这事》(不过……好像最近快照replace改成item了,正式版发布之后要不要改 ...

该就算了……
item变得有亿点点复杂,现阶段讲不明白。
不过你想要的话可以看我发的这个帖子


感谢您的意见。
回复

使用道具 举报

Dahesor 当前离线
积分
2079
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-2-5
查看详细资料
 楼主| 发表于 2021-5-19 23:22:48 | 显示全部楼层
本帖最后由 Dahesor 于 2021-5-19 23:32 编辑
Xiao2 发表于 2021-5-19 15:10
老哥replaceitem的意义不item啊

……啊?
有点搞不明白你在写啥……

如果是说1.17/itme的事,我会在里面加个提醒的。
回复

使用道具 举报

Xiao2 当前离线
积分
6886
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2014-6-24
查看详细资料
发表于 2021-5-19 23:26:14 | 显示全部楼层
Dahesor 发表于 2021-5-19 23:22
**……啊?
有点搞不明白你在写啥……

嗯嗯
我少打了个字
replaceitem的意义不如item
真正得讲清楚item
qaq(可能得先讲loot)
回复

使用道具 举报

Dahesor 当前离线
积分
2079
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-2-5
查看详细资料
 楼主| 发表于 2021-5-19 23:32:13 | 显示全部楼层
Xiao2 发表于 2021-5-19 23:26
嗯嗯
我少打了个字
replaceitem的意义不如item

啊这样啊。
所以……我还有的写………
(item的物品修饰器让把它在现阶段说明白很难……说也不是不说也不是)
回复

使用道具 举报

LiangYuan 当前离线
积分
119
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-7-23
查看详细资料
发表于 2021-5-26 20:48:38 | 显示全部楼层
老哥这个这么搞还有啥意义 就是要不item啊
回复

使用道具 举报

Dahesor 当前离线
积分
2079
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-2-5
查看详细资料
 楼主| 发表于 2021-5-26 23:13:06 | 显示全部楼层
LiangYuan 发表于 2021-5-26 20:48
老哥这个这么搞还有啥意义 就是要不item啊

神奇的问题。

/item不算哦
一方面现阶段太难讲,一方面………正式版未发布被我无视。
我还是会很怀念/replaceitem的
回复

使用道具 举报

3156540659 当前离线
积分
428
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-9-10
查看详细资料
发表于 2021-5-27 20:04:08 | 显示全部楼层
        MCBBS有你更精彩~

评分

参与人数 1人气 -1 金粒 -10 收起 理由
SHEEP_REALMS -1 -10 请仔细阅读版规,本版严禁灌水!.

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2021-9-21 03:26 , Processed in 0.067617 second(s), Total 37, Slave 31 queries, Release: Build.2021.09.13 2028, Gzip On, Redis On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表