Minecraft(我的世界)中文论坛

标题: 【冰块的命令方块】冰块教你DIY药水

作者: 冰块⑨号    时间: 2013-12-26 17:52
标题: 【冰块的命令方块】冰块教你DIY药水
本帖最后由 Lighten_Eagle 于 2013-12-28 16:05 编辑

Good Morning~
这里是冰块⑨号~



首先看一下如何扔出一个自定义药水——

翻译自:http://www.minecraftforum.net/topic/1969520-17-using-summon-give-datatags-in-map-making-tutorials/page__st__700#entry24541327 (#715)

好的,那么想让命令方块扔出一个喷溅药水,首先要写一个开头——
  1. /summon ThrownPotion ~ ~ ~
复制代码
这将不会产生任何效果,所以我们要添加参数——
  1. /summon ThrownPotion ~ ~ ~ {【药水参数】}
复制代码
【药水参数】就是物品的数据值。我们可用它来生成普通的喷溅药水(创造模式可直接从物品栏拿)。
但是我们想要自定义的药水效果,比如说只能用/give命令得到的那种……
  1. /summon ThrownPotion ~ ~ ~ {Potion:{id:373,Damage:【损害值】,Count:1}}
复制代码
Potion 是药水的另一个标签……
id:373 一直是这样,因为药水就是这个ID……
Damage:【损害值】 药水的样子,颜色……
损害值表(http://minecraft-zh.gamepedia.com/%E8%8D%AF%E6%B0%B4):

Count 数量……
  1. /summon ThrownPotion ~ ~ ~ {Potion:{id:373,Damage:,Count:1,tag:{CustomPotionEffects:[{Id:,Amplifier:,Duration:}]}}}
复制代码
来自中文WIKI,下午刚刚花了一些时间翻译更新(http://minecraft-zh.gamepedia.com/Player.dat%E6%A0%BC%E5%BC%8F#.E8.8D.AF.E6.B0.B4.E6.95.88.E6.9E.9C
药水效果
药水喷溅药水可以通过tag标签来绕过物品本身的参数,来达到多个自定义的药水效果。这些参数只在以下标签全部存在的情况下才会起作用。

例子——
  1. /summon ThrownPotion ~ ~ ~ {Potion:{id:373,Damage:16385,Count:1,tag:{CustompotionEffects:[{Id:1,Amplifier:1,Duration:1},{Id:2,Amplifier:2,Duration:2}]}}}
复制代码
分析:{Potion:{}}——NBT实体标签的一个分支(必要)
{id:373,Damage:16385,Count:1,tag:{}}——id:373(药水ID);损害值:16385(由表得知,生命恢复,喷溅);数量:1;tag(标签,自定义药水必要)
{CustompotionEffects:[{},{}]}——CustompotionEffects,必要句柄,[] 方括号表示这是一个列表
{Id:1,Amplifier:1,Duration:1},——id:1(速度),Amplifier:1(等级0),Duration:1(持续长度1刻)
{Id:2,Amplifier:2,Duration:2}——id:2(缓慢),Amplifier:2(等级1),Duration:2(持续长度2刻)

这是另一个使用的例子——
  1. /summon ThrownPotion ~ ~-2 ~ {Potion:{id:373,Damage:16421,Count:1},Riding:{id:Silverfish,Attributes:[{Name:generic.movementSpeed,Base:0.0},{Name:generic.maxHealth,Base:0.1},{Name:generic.attackDamage,Base:0.0},{Name:generic.knockbackResistance,Base:100.0}],ActiveEffects:[{Id:14,Amplifier:1,Duration:640000,Ambient:1}]}}
复制代码
分析:不难看出这是一个药水和生物的组合,药水显示为瞬间治疗双倍药效版喷溅版,数量1,骑在一条蠹虫上面(速度0,最高生命值0.1,攻击伤害0,击退防御100,怪物附带效果为14隐身,持续时间无限),也就是说杀死怪物,药水自动掉落
SYL的药水弩炮就是这个原理:http://www.mcbbs.net/thread-167609-1-1.html

下面也是一个可拾取强化道具的例子,药水骑在经验球的上面,一旦碰到,经验球被吸收,药水掉落
  1. /summon ThrownPotion ~ ~ ~ {Potion:{id:373,Damage:16385,Count:1,tag:{CustomPotionEffects:[{Amplifier:50,Duration:999999,Id:1}]}},Riding:{id:XPOrb}}
复制代码


下面为冰块⑨号自创教程

同样的,我们可以为扔出药水赋予一个速度——
  1. /summon ThrownPotion ~ ~1 ~ {Potion:{id:373,Damage:16456,Count:1,tag:{CustomPotionEffects:[{Amplifier:3,Id:20,Duration:400}]}},Motion:[0,0.1,0.99]}
复制代码
Motion中,按照 XYZ 的顺序的参数就是药水的初始速度,注意不要让药水生成在一个有障碍物的环境里,可惜的是XYZ的最高数值被限制在“1”以下,所以也不要指望能扔的很远……

你可以试着把这些命令填进命令矿车里……一个移动的炮台?哈哈?
  1. /summon MinecartCommandBlock ~ ~ ~
  2. {Command:"/summon ThrownPotion ~ ~1 ~ {Potion:{id:373,Damage:16456,Count:1,tag:{CustomPotionEffects:[{Amplifier:3,Id:20,Duration:400}]}},Motion:[0,0.1,0.9]}"}
复制代码
如果你想进行范围攻击……这里也有一段成熟的代码……








  1. /summon MinecartCommandBlock ~ ~ ~
  2. {Riding:{id:"MinecartCommandBlock",
  3. Riding:{id:"MinecartCommandBlock",
  4. Riding:{id:"MinecartCommandBlock",
  5. Riding:{id:"MinecartCommandBlock",
  6. Command:"/summon ThrownPotion ~ ~1 ~ {ownerName:Icy_Kun,Potion:{id:373,Damage:16396,Count:1,tag:{CustomPotionEffects:[{Amplifier:3,Id:7,Duration:400}]}},Motion:[0.9,0.1,-0.9]}"},
  7. Command:"/summon ThrownPotion ~ ~1 ~ {ownerName:Icy_Kun,Potion:{id:373,Damage:16396,Count:1,tag:{CustomPotionEffects:[{Amplifier:3,Id:7,Duration:400}]}},Motion:[0.9,0.1,-0.45]}"},
  8. Command:"/summon ThrownPotion ~ ~1 ~ {ownerName:Icy_Kun,Potion:{id:373,Damage:16396,Count:1,tag:{CustomPotionEffects:[{Amplifier:3,Id:7,Duration:400}]}},Motion:[0.9,0.1,0]}"},
  9. Command:"/summon ThrownPotion ~ ~1 ~ {ownerName:Icy_Kun,Potion:{id:373,Damage:16396,Count:1,tag:{CustomPotionEffects:[{Amplifier:3,Id:7,Duration:400}]}},Motion:[0.9,0.1,0.45]}"},
  10. Command:"/summon ThrownPotion ~ ~1 ~ {ownerName:Icy_Kun,Potion:{id:373,Damage:16396,Count:1,tag:{CustomPotionEffects:[{Amplifier:3,Id:7,Duration:400}]}},Motion:[0.9,0.1,0.9]}"}
复制代码
你可能会发现这里面多了一句“ownerName:Icy_Kun”,这是我的用户名,也表示药水的拥有者,本意是测试用命令方块刷出的药水能否被我所拥有(用于塔防地图的杀僵尸数统计……),注意不要放在“Potion”的列表里面!这里  @SYL猪骑士


记得铺一层激活铁轨……


作者: LittleHei    时间: 2013-12-26 17:53
速度抢前排,欢迎冰块回归
作者: 20020607    时间: 2013-12-26 17:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: zero∑    时间: 2013-12-26 17:58
{:10_493:}⑨不是笨蛋的意思吗为什么有人会说自己是⑨
作者: 星空骑士    时间: 2013-12-26 17:59
冰块菌隆重回归,支持!(鼓掌:啪啪啪啪啪啪啪啪啪...)
作者: 吾是新手渣渣    时间: 2013-12-26 18:01
速度抢前排      
作者: yeyaowei    时间: 2013-12-26 18:12
其实我一直搞不懂Motion= =
作者: songfeitong    时间: 2013-12-26 20:03
我在U2B上找到了一个summon滤器,不用再自己写命令了。
作者: pacerrecap    时间: 2013-12-26 23:52
这玩意儿应该会对塔防有很大的帮助。。。但是还是没有想法
另外如果没猜错的话头像貌似过长?
作者: 冰块⑨号    时间: 2013-12-26 23:55
pacerrecap 发表于 2013-12-27 01:52
这玩意儿应该会对塔防有很大的帮助。。。但是还是没有想法
另外如果没猜错的话头像貌似过长?

找了个插件做长头像好像没效果……
作者: 德玛西亚小蜗牛    时间: 2013-12-27 00:04
冰块换头像了呢

作者: dcsuibian    时间: 2013-12-27 18:09
支持,话说你又换头像
作者: 我是基岩    时间: 2013-12-27 19:40
⑨的完美命令教室
作者: a129487039    时间: 2013-12-27 19:42
顶起!!!!!!!!!!!!!!!!!!!
作者: 1395170632    时间: 2013-12-27 21:48
本帖最后由 1395170632 于 2013-12-27 21:48 编辑
20020607 发表于 2013-12-26 17:55
好难~不过总算,可以做毒气特效了


收藏3 顶一下6 踩一下1 评分

作者: 冰块⑨号    时间: 2013-12-28 14:08
pacerrecap 发表于 2013-12-27 01:52
这玩意儿应该会对塔防有很大的帮助。。。但是还是没有想法
另外如果没猜错的话头像貌似过长?

我今天检查了一下命令发现 ownerName 放错地方了……

现在这段命令可以模拟玩家扔出的药水了!

而且我想过了,即使是不同用户名的玩家,只要默认 ownerName:Player,然后再计分板 Zombie Kill:Player 就可以无视用户名计分了!
作者: pacerrecap    时间: 2014-1-5 18:18
Lighten_Eagle 发表于 2013-12-28 14:08
我今天检查了一下命令发现 ownerName 放错地方了……

现在这段命令可以模拟玩家扔出的药水了!

现在我的模型和指令基本都做完了,还有几个问题
1.计分板能否记录mob杀死mob的数目?例如小白杀死苦力怕
2.雪人能否自定义投掷物?例如改为药水?
3.药水效果对投掷物品是否有效?例如给小白力量2,他的箭会不会变强?
三个里面解决任意两个,塔防就妥了
作者: 冰块⑨号    时间: 2014-1-6 18:02
pacerrecap 发表于 2014-1-5 20:18
现在我的模型和指令基本都做完了,还有几个问题
1.计分板能否记录mob杀死mob的数目?例如小白杀死苦力怕 ...

1. 不可能,因为经过和SYL之后发现讨论箭矢的伤害计算不是 ownerName 而是别的机制,而且计分板需要一个用户名,不然我们可以用一个虚拟的用户名来计算小白杀死Creeper的数量
2. 不知道,试着改一下游戏文件吧,或者查一下雪人的NBT标签
3. 力量……不知道啊……用生存模式自己试试?我只知道箭矢上有伤害这个标签
作者: 冰块⑨号    时间: 2014-1-6 18:06
本帖最后由 Lighten_Eagle 于 2014-1-6 20:10 编辑
pacerrecap 发表于 2014-1-5 20:18
现在我的模型和指令基本都做完了,还有几个问题
1.计分板能否记录mob杀死mob的数目?例如小白杀死苦力怕 ...

还有一个问题帮我想想顺便问一下 SYL:
/summon 的时候好像有一类标签是无法设定的,比如说箭矢的“Life”,我在想如果改变比如 1100 就可以使箭矢迅速消失防止地图卡顿之类的……
还有一个用途就是制作定时红石,箭矢消失时间为 60 秒/1200 刻,如果可以自己制定 Life 的话就不得了了……

作者: pacerrecap    时间: 2014-1-6 19:13
Lighten_Eagle 发表于 2014-1-6 18:06
还有一个问题帮我想想顺便问一下 SYL:
/summon 的时候好像有一类标签是无法设定的,比如说箭矢的“Life ...

我是个NBT渣,不太懂得怎么看NBT表签,都是根据教程写的summon。。

作者: songfeitong    时间: 2014-1-6 19:57
pacerrecap 发表于 2014-1-6 19:13
我是个NBT渣,不太懂得怎么看NBT表签,都是根据教程写的summon。。

其实summon和give能使用mcedit自动转换的。
作者: PotatoMaster101    时间: 2014-1-7 09:50
Lighten_Eagle 发表于 2014-1-6 20:06
还有一个问题帮我想想顺便问一下 SYL:
/summon 的时候好像有一类标签是无法设定的,比如说箭矢的“Life ...

嗯,好像是不能设置。Wiki上的解释:
Increments each tick when an arrow is not moving; resets to 0 if it moves. When it ticks to 1200, the arrow despawns.
其中有一句是,每次移动时会重置为0。觉得意思应该是不管life设置成什么,箭移动时都会重新变成0
作者: 冰块⑨号    时间: 2014-1-7 12:02
PotatoMaster101 发表于 2014-1-7 11:50
**** 作者被禁止或删除 内容自动屏蔽 ****

为毛你直接末地了?

发生了什么事?
作者: PotatoMaster101    时间: 2014-1-7 19:56
Lighten_Eagle 发表于 2014-1-7 14:02
为毛你直接末地了?

发生了什么事?

嗯,好像是不能设置。Wiki上的解释:
Increments each tick when an arrow is not moving; resets to 0 if it moves. When it ticks to 1200, the arrow despawns.
其中有一句是,每次移动时会重置为0。觉得意思应该是不管life设置成什么,箭移动时都会重新变成0

不知为什么被封了3小时,回复了几个帖子就封了
作者: 971042889    时间: 2014-1-7 20:09
冰块君的一定要顶赞啊
作者: PotatoMaster101    时间: 2014-1-7 20:53
冰块问你个/tellraw的问题:好像/tellraw的action:run_command有一定得指令长度限制?我把一些简易的包含NBT的指令输入进去就可以运行,一些长的输进去会出错。
作者: 冰块⑨号    时间: 2014-1-7 21:06
PotatoMaster101 发表于 2014-1-7 22:53
冰块问你个/tellraw的问题:好像/tellraw的action:run_command有一定得指令长度限制?我把一些简易的包含NB ...

如果引号之中带引号的那种句子需要用 /"命令/" 的方法来进行识别的
作者: PotatoMaster101    时间: 2014-1-7 21:08
Lighten_Eagle 发表于 2014-1-7 23:06
如果引号之中带引号的那种句子需要用 /"命令/" 的方法来进行识别的

求冰块举个例子?
作者: Mega_bed    时间: 2017-9-26 13:37
666真的超棒。。。才知道SUMMON丢出的药水qwq