Minecraft(我的世界)中文论坛
标题: MC1.8:指令方块{CommandStats}教程
作者: PotatoMaster101 时间: 2014-7-3 19:35
标题: MC1.8:指令方块{CommandStats}教程
本帖最后由 PotatoMaster101 于 2014-7-24 16:47 编辑
大家好。今天出了14w27b,在14w27a中出来了一个新的dataTag:{CommandStats}。这个dataTag是控制积分板用的,适合做冒险地图什么。这个功能比较强大。目前有4个功能:Block,Item,Entity和Success。这个的用处是,可以探测玩家背包里有多少个某个物品,探测地图里有多少个生物等等。
Blocks - 控制方块。指令方块放置了几个方块,那就会把积分变到几分。比如:如果是/setblock,那就是1,因为/setblock只能放一个方块。如果是/fill,那就可以很多了,看玩家/fill多少个方块,然后就显示多少。
Items - 控制物品。用这个可以探测玩家身上带了几个指定的物品。这个和/clear结合,把玩家的某个物品删除0个,然后Item就会显示出玩家物品的数量。
Entities - 探测生物。比如:使用/tp @e ~ ~ ~,可以把所有生物TP到他们当前的位置,然后Entity就会显示出有多少个输出,也就是多少个生物。
Success - 控制执行的次数。比如如果是Item的话,/clear之后就会探测有多少个物品,但是Success还是1,因为就执行了一次。
Query - 游戏晚点再加入的,控制其他一些东西的次数。比如:/time,来告诉玩家时间是多少,或者/xp,来告诉玩家自己有多少XP等等。这个就不发教程了,详情请看Tyson的教程。
之后来说下NBT的格式。格式:- {CommandStats:{AffectedItemsName:"Items玩家",AffectedItemsObjective:"积分板变量",
- AffectedBlocksName:"Blocks玩家", AffectedBlocksObjective:"积分板变量",
- AffectedEntitiesName:"Entities玩家", AffectedEntitiesObjective:"积分板变量",
- SuccessCountName:"Success玩家",SuccessCountObjective:"积分版变量"}}
复制代码 大家看见。NBT的格式里面有4个刚才说的东西:Blocks,Items,Entities和Success。本人推荐把积分板变量都改成相同的变量,这样比较方便。Blocks玩家,Entities玩家什么,都是积分板里面的玩家系统。但是本人推荐使用假名。(官方格式来自Wiki)
==============分割线===============
之后来教大家如何使用这个NBT。首先要做很多准备工作,比如创建积分板变量,创建假名什么。
首先创建一个积分板变量。指令方块里输入:
- /scoreboard objectives add (变量名字) dummy
复制代码 变量名字地方随便填写。本人这里就使用“14w27b”这个名字。
之后,创建假名。这里也是和刚才一样。指令方块里分别输入:
- /scoreboard players set (假名) (变量名字) 0
复制代码 这里需要4个假名,因为有4个选项。所以,放置4个指令方块,然后分辨打入4个不同的假名。本人的假名就使用Blocks,Items,Entities和Success。(注意,变量名字要和刚才创建的相同)。
之后,设置积分板的显示。这个很简单,使用setdisplay:
- /scoreboard objectives setdisplay sidebar (变量名字)
复制代码 这条指令把积分板变量显示在游戏画面右边。输入完这条指令后不会出现东西,因为还未加入积分。所以,我们要把假名的积分全部设置成0(默认)。
现在把积分板变量里的4个假名分数都变成0。指令就是:
- /scoreboard players set (假名) (积分板变量) 0
复制代码 有4个假名,所以就要把4假名都设置成0。一个一个的设置。
最终效果就是在画面右边显示积分板。截图:
之后来控制显示使用的指令方块。地上放一个指令方块,然后里面输入:
- /blockdata ~ ~ ~
- {CommandStats:{AffectedItemsName:"Items玩家",AffectedItemsObjective:"积分板变量",
- AffectedBlocksName:"Blocks玩家", AffectedBlocksObjective:"积分板变量",
- AffectedEntitiesName:"Entities玩家", AffectedEntitiesObjective:"积分板变量",
- SuccessCountName:"Success玩家",SuccessCountObjective:"积分版变量"}}
复制代码 大家看见,这个格式就和刚才一样。这里使用/blockdata给指令方块注入积分板的信息。这里有4个玩家:Blocks, Entities, Success和Items。这4个玩家就分别使用刚才创建的4个假名。然后积分板变量就和刚才创建的相同。
比如像我这里,就是:- /blockdata ~ ~ ~
- {CommandStats:{AffectedItemsName:"Items",AffectedItemsObjective:"14w27b",
- AffectedBlocksName:"Blocks", AffectedBlocksObjective:"14w27b",
- AffectedEntitiesName:"Entities", AffectedEntitiesObjective:"14w27b",
- SuccessCountName:"Success",SuccessCountObjective:"14w27b"}}
复制代码 假名不同,变量一样。
(当然,/setblock也可以使用。)
之后执行就可以了。然后指令方块会自己注入所有的信息。注意:只有注入的指令方块才可以执行。所以注入完毕后别打掉指令方块,否则要重新注入。
注入完毕后清空掉指令方块里的指令,然后就可以随便的打了。比如:/fill ~ ~1 ~ ~ ~3 ~ minecraft:stone 0 replace ,那么指令方块就会把上面3格换成石头。然后看积分板,控制Blocks的假名就会实现,把0分换成3分,因为换了3个方块。然后Success处也会+1分,因为执行了一次就成功。
截图:
之后,控制Entities,Items都一样。Entities的话,那么就可以使用 /tp @e ~ ~ ~ ,把所有的生物移到他们当前位置(也就是没有移动),然后Entities就会显示所有移动的生物数量:
之后的Items就不多说了。使用/clear或者/give什么,可以增加Items假名的积分。
之后,如果要输出的话本人就不多说了,过于简单。可以用/testfor,execute或者/scoreboard players test。
最后,要清空积分板的话那就把4个假名的分数都变成0。
----------------分割------------------
之后,教大家使用/stats。这个/stats,也是新出的指令,配合{CommandStats}。首先,指令格式是:
- /stats <entity> <对象> <格式> <stat> <积分板假名> <积分板变量>
复制代码 这个是使用在生物上面的。之后,还有一个使用在指令方块上面的:
- /stats block <指令方块XYZ> <格式> <stat> <积分板假名> <积分板变量>
复制代码
这些指令我就不多说了,和上面的一样。主要是把NBT换成了指令而已。
最后引用Janghr的推断:土豆君依旧很给力
所谓的变量名字、假名我以前捣鼓计分板时实际上是把它们作为记录体格式的变量来统计的。这里计分板我看就是个指示统计输出的作用。
按说计分板数据的输出是一个比较纠结的问题,通过命令方块本身NBT存储这些数据,最好能作为指令里的参数发挥作用,这样可以类似于编程里i++等的作用,简单循环比如造伸展造桥的效果什么的可以用较少的指令方块来完成。
另附:无聊时制作的{CommandStats}数怪器。---下载地址---
进入后按下绿色按钮就可以开始了。并不是所有的生物,只是本人预设的一些。
=========END==========
作者: plasma 时间: 2014-7-3 19:37
1.8的指令诞生好快
作者: xcc 时间: 2014-7-3 20:37
据说命令方块可以远程打开红石电路
命令是?
作者: leavessoft 时间: 2014-7-3 21:12
支持下lz~:-)
作者: jianghr 时间: 2014-7-3 21:32
土豆君依旧很给力{:10_512:}
所谓的变量名字、假名我以前捣鼓计分板时实际上是把它们作为记录体格式的变量来统计的。这里计分板我看就是个指示统计输出的作用。
按说计分板数据的输出是一个比较纠结的问题,通过命令方块本身NBT存储这些数据,最好能作为指令里的参数发挥作用,这样可以类似于编程里i++等的作用,简单循环比如造伸展造桥的效果什么的可以用较少的指令方块来完成。
作者: Miedie 时间: 2014-7-3 21:43
有没有一些1.6.4的教程。。。
作者: 1411465506 时间: 2014-7-3 21:55
你把论坛怎么了。。我打开饿不是你的半岛生存,结果跳出这帖子
作者: zhanglitiger 时间: 2014-7-3 23:43
能不能在详细点 我新手啊
作者: Milk_ 时间: 2014-7-4 06:38
命令方块啊红石什么的 我全都是一头雾水
作者: Rxper迷恋 时间: 2014-7-4 08:46
右边那个小显示栏怎么弄出来啊 0 0
作者: PotatoMaster101 时间: 2014-7-4 09:02
/scoreboard的setdisplay显示的
作者: PotatoMaster101 时间: 2014-7-4 09:07
/setblock (输出坐标) minecraft:redstone_block 0 replace
或者使用积分板
作者: zjjxhy1567 时间: 2014-7-4 09:08
不错不错,挺好的,对我很有帮助
作者: xcc 时间: 2014-7-4 09:09
谢了
我最近正在弄RPG服务器
作者: angelo 时间: 2014-7-4 09:26
话说土豆君
计分版的scoreboard players reset 这个指令是不是还有bug,为什么我想去除显示分数的显示栏都去除不了。。。
还有已收藏。对于我做地图有帮助!
作者: qpqp 时间: 2014-7-4 10:15
楼主,求1.8的客户端
作者: sylqiuyifeng 时间: 2014-7-4 10:18
reset对象为*才能把连非真正玩家的数据也重置
作者: sylqiuyifeng 时间: 2014-7-4 10:19
老实说这新功能就是testfor的扩展版嘛……
非要弄那么复杂就不能简单点吗……
作者: angelo 时间: 2014-7-4 10:19
话说wiki上面没写,谢谢了!
作者: angelo 时间: 2014-7-4 10:25
命令方块也来也偏向也编程了
作者: 1425360905 时间: 2014-7-4 12:03
不明觉厉......
作者: q3878217 时间: 2014-7-4 12:06
你有见过这么标准的十五个字回复吗
作者: PotatoMaster101 时间: 2014-7-4 14:57
正版用户官方自己升级的
盗版不知道
作者: qpqp 时间: 2014-7-5 20:19
我去正版服务器为什么不是1.8的
作者: PotatoMaster101 时间: 2014-7-6 06:55
因为1.8还没出 现在只有预测 不稳定 所以服务器还是1.7 正式版来了后再出1.8
作者: kongbaiyo 时间: 2014-7-6 20:57
本帖最后由 kongbaiyo 于 2014-7-6 20:58 编辑
这种事情的发生是迟早的了= =
现在MC的命令方块越来越向编写程序的思想发展了越来越多的输入接口和输出接口了= =
控制部分也会很快出现的
作者: hacccc 时间: 2015-6-14 17:52
请问大神的/stats命令可以详细一些吗?我不会使用。
作者: Fox_狐狸 时间: 2015-6-14 20:43
原来是红石大湿,我们交个朋友吧。。。