本帖最后由 贰逼 于 2014-7-6 16:44 编辑

逼死插件系列个人正式回归论坛
搬箱器:http://www.mcbbs.net/thread-143009-1-1.html

效果/展示

前置及成本


首先你需要两根木棍和两颗钻石的永久成本


合成一把钻石锄




通过铁砧花费最低一等级的消耗成本改名为"Move the Block"

普通方块使用方式


把这个搬动方块的工具到需要搬动的方块上面


可以发现方块没有了,暂时储存在了名为"Place the Block"的木棍上


再把这个木棍到需要放置搬动的方块的位置


方块就被放置了,且重新获得钻石锄,不过1等级改的名消耗了。



关于搬动非完整方块
(不能被活塞推动[包括无法推动,一推即碎,但不包括黑曜石和基岩]的方块)


众所周知,箱子的方块边缘有个缝隙,是个典型的不完整方块。
如果我们按照刚才的方式扔到箱子上面,发现被搬动的不是箱子,而是箱子下面的方块。
为避免这种漏洞,我们使用下面的特殊方法:


现在,这是一个独一无二的箱子。


我们依然使用搬方块的工具。


在箱子上面放置一个非完整方块


把工具扔到那个非完整方块上方




可以直接扔到需要放置的位置,如果仍的了非完整方块上,


悬空


还是原来的箱子。

原理与特殊操作解释请翻页。

原理:
这不仅仅是本成果的工作原理,也会教大家物品方块交互教程Ⅱ(原本的物品方块交互是针对特殊方块操作,这次是针对所有方块操作)



全部原理区域。



主要原理区域

首先一个命令高频伺候判据添加与探测。



红色区域为判据添加:
  1. /scoreboard objectives add moveblock dummy
复制代码
创建计判moveblock
  1. /scoreboard players set @e[type=Item] moveblock 1 {Item:
复制代码
给名为"Move the block”的钻石锄(下文称为工具1)计判设为1
  1. /scoreboard players set @e[type=Item] moveblock 2 {Item:
复制代码
给名为"Place the Block",备注信息"Place the Block."的木棍(下文称为工具2)设置计判为2
备注信息是为了防止玩家通过正常手段获得这个无法获得的物品。



蓝色区域
工具1相关输出。
  1. /execute @e[type=Item,score_moveblock_min=1,score_moveblock=1] ~ ~ ~ clone ~ ~-1 ~ ~ ~-1 ~ 386 4 266
复制代码
复制计判为1(工具1)下面的方块到某指定坐标。
若能够执行,则输出:
  1. /execute @e[type=Item,score_moveblock_min=1,score_moveblock=1] ~ ~ ~ give @p minecraft:stick 1 0 {display:{Name:"Place the Block",Lore:["Place the Block."]}}
复制代码
给予玩家工具2
并延迟2刻,先执行下面的命令:
  1. /execute @e[type=Item,score_moveblock_min=1,score_moveblock=1] ~ ~ ~ setblock ~ ~-1 ~ air
复制代码
把计判为1(工具1)下面的方块设为空气。(其实clone有个模式可以剪切,这里就麻烦一步吧)
再执行:
  1. /kill @e[type=Item,score_moveblock_min=1,score_moveblock=1]
复制代码
清除工具1



黄色区域
工具2相关输出。
  1. /testfor @e[type=Item,score_moveblock_min=2,score_moveblock=2]
复制代码
探测计判为2(工具2)的出现。若探测到了则输出:


延迟4刻,


首先执行:
  1. /execute @e[type=Item,score_moveblock_min=2,score_moveblock=2] ~ ~ ~ clone 386 4 266 386 4 266 ~ ~ ~
复制代码
复制某指定坐标的方块到工具2所在的方块。
接着执行:
  1. /give @p minecraft:diamond_hoe 1 0
复制代码
给玩家钻石锄(成本)
  1. /kill @e[type=Item,score_moveblock_min=2,score_moveblock=2]
复制代码
清除工具2.

若你看到了这里,依旧作风给你存档:
个人命令研究存档

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