不动要塞

有关于落地物品事件的其他问题
版本1.12+     主要是单机,最好支持多人
之前需要
          1.检测有特定lore且在地面上的物品,例如检测lore或者名称为“扔到地上变成宝箱”的箱子物品掉落物
          2.在该物品处生成有内容的容器,例如在该物品处生成一个有颗钻石的箱子
          3.应当删除该掉落物


在前面大神的帮助下成功实现:http://www.mcbbs.net/thread-773909-1-1.html   
  1. /scoreboard players tag @e add sc {Item:{id:"minecraft:chest",Count:1b,tag:{display:{Name:"扔到地上生成箱子"}}},OnGround:1b}

  2. /execute @e[tag=sc] ~ ~ ~ /setblock ~ ~ ~ chest 0 keep {Items:[{Slot:0b,id:"minecraft:diamond",Count:1b}]}

  3. /kill @e[tag=sc,type=Item]
复制代码
但是,我发现,出现一个生成箱子的事件,会把其他没有生成箱子的物品也删掉


在非整格高的上面(比如雪,地毯,半砖)上不视为落地,不生成宝箱
我使用条件,虽然不会出现没生成宝箱就刷掉物品的情况,但还是会出现上面的
出现一个生成箱子事件,就删除物品
应该如何解决?



还有,放在展示框里也会被视为放在地上,且不会被删掉物品,能无限刷宝箱


=====================================================================================
因此,有这两个问题需要帮助:
        1:需要解决刷一个宝箱,会删掉其他没刷宝箱的物品的问题(主要问题)
        2:有办法解决在半砖上不能生成的问题吗(会需要像手榴弹,扔出物品爆炸,不然会出现扔到地毯                        上不爆炸的尴尬情况
        2:展示框里的物品也能出事件的问题(如果不能解决,我只能指定一个不能放展示区的地方,专门用来                   开箱)


ruhuasiyu
因为你setblock 后面是 keep,也就是说如果当前位置不是空气的话不放置方块
如果想要替换的话改成replace即可,但是注意到这样会将雪层和半砖一类的都替换掉
如果你的本意不是,你就需要指明你的意思了

展示框的问题你把第一条 @e 改成 @e[type=item] 即可,限定只有掉落物才检测。

pineapple_
你为什么要用keep
何replace而不为呢


坚持keep?瞎[和谐]乱嵌套execute大法好

  1. /scoreboard players tag @e add sc {Item:{id:"minecraft:chest",Count:1b,tag:{display:{Name:"扔到地上生成箱子"}}},OnGround:1b}

  2. /execute @e[tag=sc] ~ ~ ~ /execute @s[tag=!scc] ~ ~ ~ setblock ~ ~ ~ chest 0 keep {Items:[{Slot:0b,id:"minecraft:diamond",Count:1b}]}

  3. 可以和你之前一样使用制约模式(可以改成不用制约模式的,但是既然你用了我就不改了)
  4. /execute @e[tag=sc] ~ ~ ~ kill @s[tag=!scc]

  5. /scoreboard players tag @e[tag=sc] add scc

复制代码

pineapple_
我可能没看明白你这个
你到底是想不想在半转上生成

不动要塞
pineapple_ 发表于 2018-1-2 12:39
我可能没看明白你这个
你到底是想不想在半转上生成

想在半砖上生成,可以在检测物品落地的情况下,生成在如何东西上吗

⊙v⊙
笑出声...把展示框给忽视了
毕竟replace有破坏地形的可能。所以用keep也能理解

那么如果想保留keep。可以这样
保留你现在用的指令,同时

建立一个名为cd的dummy类计分板。之后,
一个紫cb,给所有@e[type=item,tag=sc]的实体+1分

另一个紫cb连着条件绿cb
紫:execute @e[type,tag,score_cd_min=5] ~ ~ ~ detect ~ ~1 ~ air 0 setblock ~ ~1 ~ chest 0 keep {...}
条件绿:kill @e[type,tag...,score_cd_min=5}

所以就是...
当掉落物落在正常地表时,根据你之前的命令会被set成箱子。
当落在比如半砖地毯等东西,且掉落物所在位置的头顶为空气时,也就是在半砖/地毯的y轴+1位置set箱子。

其实你可以一贴问完的...

下一页 最后一页