本帖最后由 贰逼 于 2015-8-9 19:33 编辑

(附)效果指令
第二页为 方块操作指令
效果指令作为语句的一个输出,通常为对游戏本体产生影响效果操作的指令

效果指令包含以下内容

实意指令与效果指令区别

文字
  • json
  • 其他

物品操作
  • give
  • replaceitem

实体操作
  • summon
  • kill

方块操作
  • setblock
  • clone
  • fill

音效
  • playsound大全

粒子效果
  • 粒子大全


全索引链接
上一篇实体操作)--下一篇(音效)
§д.5 方块操作
第三页为 setblock
实体操作还有一点对于数据整理的意味,然而方块操作就是纯属效果了。

方块操作就是对方块的类型,方向进行操作,几乎没有涉及到量的领域,是纯属模块的输出

方块操作指令分为:
setblock - 放置单方块
clone    - 复制/剪切一个区域
fill     - 填充一个区域

        д.5.1 setblock
第四页为 clone
setblock是一个单方块放置的指令,当然也可以使用blockdata进行单方块操作
对于单方块的检测指令是testforblock,可以自己试试

setblock的基本格式:
  1. /setblock 坐标 方块 方块附加值 模式
复制代码

其中 坐标/方块/方块附加值 十分简单,主要讲解下其中的几个模式

  • replace
替换方块:替换原来的方块为指定方块,即强制放置








  • keep
只有空气才会放置。也就是有方块就不会强制放置





  • destroy
打掉原来的方块,放置指定方块。也是一个强制,如果开启了方块掉落,那么会生成物品







setblock通常用于但方块效果操作,具体需要通过不同模式进行调试


        .5.2 clone
第五页为 fill
clone是官方提供的复制/剪切区域的指令,
对于区域的检测指令为/testforblocks,可以自己试试。

clone基本格式:
  1. /clone 区域一角坐标 区域相对的另一角坐标 目标坐标 模式 选项 (方块 方块附加值)
复制代码



目标坐标是整个构成的区域里x y z最小的坐标


其中需要讲解 模式/选项

模式:
  • replace
把整个区域包括空气全部复制,强制





比如把木头复制到红石块构成的区域,
那么空气都强制替换掉了木头

  • masked
查漏补缺,替换所有空的





还是原来的例子,只有空气被替换掉了

  • filtered
基于masked,且只复制一种方块





那么可以看到不会复制空气,而且只会复制红石块。


选项
  • normal
正常,默认值
  • force
强行克隆,比如有重叠,会强行复制过去






  • move
剪切模式,基于force





再次强调,目标坐标为目标区域内xyz最小的坐标。


        д.5.3 fill
第二页为 fill与stats
fill高频提到了一些fill的格式和用处。

fill格式:
  1. /fill 区域角落 区域相对角落 方块 附加值 模式 (方块 方块附加值)
复制代码

依旧是讲解 模式
(部分不配图)
  • replace
并非强制,只会替换符合的







  1. /fill ~ ~ ~ ~1 ~4 ~ wool 0 replace wool 1
复制代码


  • destroy
和setblock的destroy一样,破坏原有的再替换,有强制性

  • hollow
继承destroy,只会填充外层





  1. /fill ~-2 ~2 ~-2 ~2 ~4 ~2 wool 0 hollow
复制代码

那么生成的区域中空,
如果是一个只有一个方块宽/长/高的区域,那么不会中空

  • outline
继承replace,替换外层





外层的被替换了,类似夹心饼干

  • keep
与setblock相同,只会填充空气


      д.5.3 fill与stats
详情:
执行值与条件语句
的指令:

  1. /scoreboard players set @e[name=f] a 0
  2. /stats entity @e[name=f] set SuccessCount @e[name=f] a
  3. /execute @e[name=f] ~ ~ ~ testforblock ~ ~2 ~ minecraft:wool 14</div>
复制代码

*执行值获取
能够检测单方块


改成如下:

  1. /scoreboard players set @e[name=f] a 0
  2. /stats entity @e[name=f] set AffectedBlocks @e[name=f] a
  3. /execute @e[name=f] ~ ~ ~ fill ~2 ~2 ~2 ~-2 ~-2 ~-2 minecraft:wool 14 replace wool 0
  4. execute @e[name=f] ~ ~ ~ fill ~2 ~2 ~2 ~-2 ~-2 ~-2 minecraft:wool 0 replace wool 14
复制代码

*执行值获取
就是利用fill的执行值获取f周围红色羊毛数量
不影响效果



附加部分

练习:
  • 可以结合资料,制作一个检测钻石的装置;

[groupid=546]Command Block Logic[/groupid]