Minecraft指令手册

你好MC

首页 >> Minecraft指令手册 >> Minecraft指令手册最新章节(目录)
大家在看 联盟:变身绝症少女,打哭全世界 火影之时雨日常 超级小前锋 金牌杀手妃:国师忙追妻 海贼:是大将黄猿但有木遁轮回眼 御天武帝 错遇惊婚 美人意阑珊 绝世无双 胧月夜
Minecraft指令手册 你好MC - Minecraft指令手册全文阅读 - Minecraft指令手册txt下载 - Minecraft指令手册最新章节 - 好看的游戏小说

第七十二章 存储子命令

上一章 书 页 下一章 阅读记录

(本章已于2022年7月16日重写)

现在,我们只剩下了一个存储子命令,即store。

这个store可不是商店,而是一个动词,意为『储存』。

和if子命令一样,store子命令也有许多子命令。截止1.19版本,store子命令一共有5个子命令,但在这我们只能讲一个。

为什么?你仔细看看这五个子命令,斟酌一下你的水平,然后你就会发现在这里我们的确也只能讲一个。

这五个子命令分别是:

block ——将值存储到方块实体(方块Nbt)中

bossbar ——将值存储到boSS栏中

entity ——将值存储到实体Nbt中

score ——将值存储到计分板中

storage ——将值存储到硬盘中

额,其实storage子命令我们也可以稍微讲一下......

在开讲之前,让我们先回顾一下第六十一章的内容。在那一章,我们了解到指令的返回结果有五种类型:

1指令执行成功的次数(Successcount)

2指令的查询结果(queryResult)

3受到该指令影响的物品数量(AffectedItems)

4受到该指令影响的实体数量(AffectedEntities)

5受到该指令影响的方块数量(Affectedblocks)

但mojang可能觉得这五种太多了,而且2、3、4、5分得那么细也没啥用。于是,在Java1.13版本中,后四类合并成了一类,加上原先『指令执行成功的次数』,就变成了两大类型:

1指令执行成功的次数(success)

2指令返回的结果(result)

其中,前者可以被我们的比较器探测到并输出为红石信号强度。

回到store子命令上。虽然现在指令执行的结果只剩下两大类型,但也是有分类的嘛。所以,store子命令的格式如下:

... store <返回类型>(block|bossbar|entity|score|storage)...

比如:

... store result block ...

这将会指定将指令执行所返回的结果(一般是run子命令执行的结果)存储到方块实体(方块Nbt)郑

考虑到我们尚未真正开始学习Nbt,因此这里我们就不讲block、bossbar和entity了,就仔细学习一下score,并稍微讲一下storage即可。

store的score子命令,其格式如下:

... store <返回类型> score <分数持有者><计分项>...

很简单吧?至少比\/stats指令要简单许多。我们只需要指定返回类型,然后指定要存储到谁在哪个计分项上的分数即可。我们不需要考虑会不会受到其他指令的影响,也不需要考虑要在开始存储之后停止存储,甚至不需要考虑指定的分数持有者是否在被指定的计分项追踪。

举个简单的例子:

\/execute as @a store result score @s ore_count run clear @s #forge:ores 0

在装了Forge模组加载器的情况下,运行上述指令将会将所有玩家背包内的矿石数量储存到每名玩家的ore_count计分项上。假设在线玩家张三(id:Zhang_San)背包内有25个铁矿石、17个深层铁矿石、45个工业时代2的锡矿石,那么运行上述指令后,张三在ore_count计分项上的分数会更改为87(25+17+45)。

这是store子命令比较常见的用法。

但在上一章讲条件子命令时,我曾经过这么一句话:

『因为条件子命令也可以看做是一个具有功能的,能够返回东西的指令(毕竟原来就是由几条单独指令结合在一起的嘛)。』

所以,store子命令是否可以存储条件子命令所返回的结果呢?

答案是可以的。比如下面这一条:

\/execute store result score slime_count counter if entity @e[type=minecraft:slime]

这将会统计出当前所有已加载维度的已加载区块的史莱姆数量,并将其以分数的形式储存到虚假玩家slime_count于计分项counter上的值。

需要注意的是,你不能这么写:

\/execute if entity @e[type=minecraft:slime] store result score slime_count counter

虽然这么写也能执行指令,但是将会没有任何效果。

下面我们再来看两个例子:

1\/execute store result score item_count counter if entity @e[type=minecraft:item] store result score co_count counter if entity @e[type=co]

2\/execute store result score item_count susu if entity @e[type=minecraft:item] store result score co_count susu if entity @e[type=co] store result score player_count susu run execute if entity @e[type=player]

第一个例子中有两组store+if。第二个例子中,在第一个例子的基础上,又加上邻三个store和一个run子命令来运泻execute if entity @e[type=player]』。

我们先来看看第一个例子。假设现在有2个掉落物,3头牛,请你猜一猜,运行这条指令会发生什么?

A.出现错误。

b.item_count的分数变成2,co_count的分数变为3。

c.item_count的分数变为3,co_count的分数变为3。

d.item_count的分数变成2,co_count的分数变为2。

请你将公屏,打在你的答案上。

(这哪有公屏,这只有评论啊)

让我们等五秒钟,看看答案是什么。

答案是:

c!

当一个不带有run子命令的execute指令中含有多个store和条件子命令时,除了在最后一个条件子命令后面的store子命令收不到数据以外,其他的store子命令将会获取到最后一个条件子命令的数据。

但需要注意,虽然store子命令只能获取到最后一个条件子命令的数据,但是这不代表其他条件子命令没有作用。如果前面的条件子命令发现条件不符合的话,那么store就会无法获取到任何数据而不更改分数。

我们再来看看第二个例子。假设现在还是有2个掉落物,3头牛,1个玩家,请你猜一猜,运行第二个例子会发生什么?

答案是:item_count、co_count和player_count的分数均会变为1

当一个带有run子命令的execute指令中含有多个store和条件子命令时,store子命令仅仅只会获取到run子命令运行的数据,并不会获取到其他条件子命令的数据。

你听懂了吗?

在本章的最后,我们来稍微了解一下store的这个storage子命令。

storage子命令(store)和predicate子命令(if|unless)都是在Java1.15版本中被添加的,并不是Java1.13一开始就有的。有趣的是,这两个东西都和数据包有较大关系。谓词我们已经知道了,那这个storage子命令又是什么呢?

正如我对这条子命令的描述一样,这条子命令可以将返回的值存储到硬盘上。更确切地,是存储到指定的存储容器中(这是minecraft iki的法)。

硬盘?存储容器?都是什么鬼!

待会你就知道是什么鬼了。让我们先来看看这东西的格式:

... store <返回类型> storage <目标存储容器Id><数据类型><倍率>...

举个简单的例子:

\/execute store result storage minecraft:distance to_the_nearest_village double 1.0 run locate structure #minecraft:village

这条指令适用于Java1.19及以上版本,效果是:将执行地点与最近村庄的距离以double双精度浮点数类型存储到名为『minecraft:distance』容器内的to_the_nearest_village标签。

如果你的存档是个全新的,那么你在运行上述指令后,首先游戏将会给你创建一个叫做『minecraft:distance』的存储容器,这个存储容器以Nbt树状结构存储数据,并放置于你的存档目录下的data文件夹内的mand_storage_minecraft.dat文件中,具体路径如下:

存档根目录\/data\/mand_storage_minecraft.dat.data.contents.distance

其中,前面的『存档根目录\/data\/mand_storage_minecraft.dat』是文件路径,后面的『data.contents.distance』是Nbt路径。

如果你看不懂也没关系,你只需要了解一件事情:计分板数据也是差不多这样子存储的——计分板存储在data文件夹下面的另外一个叫做scoreboard.dat的文件郑

然后,游戏会在这个叫做『minecraft:distance』的存储容器内部,在Nbt根目录创建一个to_the_nearest_village标签,并以double的形式写上取得的数据。

这样子,你通过execute指令获得的数据就存储在了硬盘上,而且你可以随时调用。

怎么个调用法?使用\/data指令获取:

\/data get storage minecraft:distance

如果先前你运行指令时,执行地点与最近村庄的距离世362格,那么这将会返回:

存储minecraft:distance含有以下内容:{to_the_nearest_village:362.0d}

虽然使用起来十分容易,但由于涉及到较多的Nbt知识,以及我们尚未讲过的\/data指令(这玩意可比execute更加复杂),所以这边就不细讲了。

你只需要知道四点:

1这玩意可方便了

2容器名称只要符合规范,随便写(如hentai:photos、I_am_a_shuabi:things)

3标签名称只要符合规范,也随便写(如a_photo、hat_up)

4数据类型一般用int即可

那么本章就到此结束了。

喜欢Minecraft指令手册请大家收藏:(m.aizhuixs.com)Minecraft指令手册爱追小说网更新速度最快。

上一章 目 录 下一章 存书签
站内强推 权力之巅 说我不配当师兄,我退宗了你哭啥 诡城密语 无敌升级王内 重生另嫁摄政王,屠尽侯府白眼狼 车厢求生:我能强化五感 我在修真界苟道长生 女主一直在遭罪[星际] 启禀陛下,娘娘又上战场了! 重生之九尾凶猫 送个外卖也能成凯甲 中国古代名人传 恐怖降临【鬼门】 让你管封地,没让你治下人均暴富 少爷请用餐 荒古镇狱经 代号:清道夫 我为穿越者跑腿,惊动了国家爸爸 数据入侵:我培养千万战士 从导引服食开始做红尘仙
经典收藏 足坛少侠 植物庄园 女子推理社,拯救意难平 晚来 无‘颜’的爱 篮坛圆梦大师:我带你们拿冠军 丑女翻身:专宠嚣张妃 死亡奖励神器!全服玩家求我别死 人间情多 绝顶枪王 抵死缠绵:驯服小悍妻 网游之大魔头从学天残神功开始 生存游戏禁止恋爱 NBA:开局融合鲨鱼文班亚马 神奇宝贝:神奥开始【后续】 火影:我大筒木雏田,忍界女帝! NBA模拟器!我十冠王朝! 我成了山海界灵 楚先生,请离婚 Minecraft指令手册 我的舢舨能升级
最近更新 四合院:开局傻柱拒绝道德绑架 崩铁观影:太一?阿哈不许复活 绑定系统,回家种田续命 四合院:傻柱重生,娶妻陈雪茹 快逃!死他手里会失去一切! 祁厅重生,汉东再无沙家帮 抗战:从加强团到装甲集团军 开局天灾:我靠空间精致咸鱼躺 FATE:目标冠位御主 崩坏:崩崩崩全崩了 天赋百分比斩杀,我反手攻速拉满 原神:提瓦特的大法师 快穿:三千世界修罗场 阿宝重生之宿命情缘 百变小樱:转世后制作卡牌 LOL:变身美少女,吊打全世界 网游:拾荒少年封神 开局满级号,你让我怎么输? 全球游戏:开局百亿灵能币 CSGO之黄金年代
Minecraft指令手册 你好MC - Minecraft指令手册txt下载 - Minecraft指令手册最新章节 - Minecraft指令手册全文阅读 - 好看的游戏小说