【技术交流】1.7 已逆天 —— 地图作者的福音

大家好这里是你们亲爱(的基佬)繁华菌。
接下来给大家看看我最近的研究吧。
当然我也会做不太详细的讲解的 23333!
(注:如何有必要的话请使用“只看楼主”达到比较舒适的观看效果。)

[未经允许不得转载]


楼主 1076742624  发布于 2013-09-22 22:55:00 +0800 CST  
首先这里说下 1.7 的部分变动:
1.命令方块的256字符限制被取消了
2.添加了 summon 指令 用于刷出 实体 (可附加NBT)
3.添加了 setblock 指令 用于设置 方块 (可附加NBT)
4.添加了 testforblock 指令 判断指定位置的 方块 (可附加NBT)
5.添加了 tellraw 指令 (这个比较特殊)
6.更改了 give 指令 (可附加NBT)

楼主 1076742624  发布于 2013-09-22 22:57:00 +0800 CST  
1.Attribute

什么是Attribute?
Attribute就是Minecraft在1.6新增的一种东西,他存储于NBT,用于给道具、实体增加一些特殊的属性(不是药水效果)。


如图,+7 攻击伤害就是一个Attribute。

当然Attribute可以不止一个~

楼主 1076742624  发布于 2013-09-22 23:01:00 +0800 CST  

因为 1.7 的 give 指令可以附加NBT,所以我们可以利用他~

现在我们把他拿在手上,然后:


然后我们再换到其他道具:


怎么样?看到效果了吧!
(众:卧槽,好炫酷 23333)

楼主 1076742624  发布于 2013-09-22 23:05:00 +0800 CST  
如何达到这个目的呢?
我在这里给大家准备了一个例子:
give @p 293 1 0 {AttributeModifiers:[{Operation:0,Amount:100.0,UUIDLeast:1,UUIDMost:2,AttributeName:"generic.maxHealth",Name:1}]}

当然你不能直接在聊天栏中发送他,因为他喵的实在太长♂了!
所以你需要一个 命令方块(使用 give @p 137 获取,只讲一次 ) ~
然后输入比较长的命令,然后给他一个红石信号!

接下来我们详细的来分析一下这串NBT。 (可能不是比较初心向吧?)

楼主 1076742624  发布于 2013-09-22 23:08:00 +0800 CST  
我们先把NBT单独拿出来分析:
AttributeModifiers:[{
Operation:0,
Amount:100.0,
UUIDLeast:1,
UUIDMost:2,
AttributeName:"generic.maxHealth",
Name:1
}]

AttributeModifiers 是一个 NBTTagList,也就是表示 Attribute 可以很多个。

Operation 这个我暂时不做详细的解释,因为实在比较复杂,这里大家可以参考wiki原文:
0, 1, or 2. Defines the operation this Modifier executes on the Attribute's Base value. 0: Increment X by Amount, 1: Increment Y by X * Amount, 2: Y = Y * (1 + Amount) (equivalent to Increment Y by Y * Amount). The game first sets X = Base, then executes all Operation 0 modifiers, then sets Y = X, then executes all Operation 1 modifiers, and finally executes all Operation 2 modifiers.
这里我用的是 0,大概就是直属 Amount,并不会进行其他的运算。

Amount 就是属性的具体值,例如我这里写的 100.0 那么他的属性就应该是 +100。
(注:Amount 必须是一个浮点数。)

UUIDLeast 与 UUIDMost 这两个是唯一标识。
不能没有也不能重复也不能与其他的 Attribute 重复,如果没有满足这三个条件的话 Attribute 就会失效。
(注:MCE会自动生成,所以使用MCE的各位不用担心!)

AttributeName 这个呢就是表示你属性的名字,一会儿会详细的讲解。

Name 这个比较蛋疼,我也不知道这是什么,不过在道具的 Attribute 里,他貌似永远是 1。


楼主 1076742624  发布于 2013-09-22 23:23:00 +0800 CST  
小提醒:
什么?难道你不知道 Attribute 对穿在身上的道具也管用么?!

好!下面该详细的讲讲 AttributeName 了!
generic.maxHealth:最大生命值,基础值:20,最大:无限
generic.movementSpeed:移动速度,基础值:0.69999998807907104,最大:无限
generic.attackDamage:攻击力,基础值:2,最大:无限
generic.knockbackResistance:击退抗性,基础值:0,最大:1.0

啥?你以为完了?
不不不!
还有实体专用的 Attribute!
(具体如何使用一会儿会讲到)

horse.jumpStrength:马跳跃的高度,基础值:0.69999999999999996,最大:2.0
zombie.spawnReinforcements:攻击僵尸产生另外一个僵尸的几率,基础值:0,最大:1.0
generic.followRange:最大追踪范围(比较特殊),基础值:32,最大:2048


楼主 1076742624  发布于 2013-09-22 23:34:00 +0800 CST  
这里来专门讲讲 generic.followRange。
这东西极为鸡肋 =o=!
貌似只能用于僵尸 Orz。
如果以后有什么新的发现或使用方法我会贴在楼中楼的!

楼主 1076742624  发布于 2013-09-22 23:35:00 +0800 CST  
如何用于实体呢?
这里是一个例子:
summon Ozelot ~0 ~1 ~0 {Attributes:[{Name:"generic.movementSpeed",Base:0.0,Modifiers:{Operation:0,Amount:0.0,UUIDLeast:1,UUIDMost:2,Name:"generic.movementSpeed"}}]}

具体 summon 指令如何使用我这里就不讲了。
那么!我们来使用一下这个指令吧!



看!一只跑不动(被我们捕捉(大雾))的ztcjohn就刷新出来了!
当然他还是可以被我们推动的~

这里需要讲解一些东西了,在这里。
道具用的 Attribute 的单个NBT内容被放进了 Modifiers 里。
(Modifiers 也可以是一个 NBTTagList,但是这里不推荐这样做,因为命令长了看起来可能会混淆)
然后还多出了其他几个标签值:

Name 这个和上面的一样。
Base 这个就是所谓的基础值了!

楼主 1076742624  发布于 2013-09-22 23:43:00 +0800 CST  
Attribute 的讲解大概就这么多了,啥?
你还有不懂的?留言到这楼的楼中楼吧!


楼主 1076742624  发布于 2013-09-22 23:44:00 +0800 CST  
2.tellraw

tellraw 是啥?
tellraw 是一条命令,用于发送 JSON 信息给指定玩家。


可以发送这种消息哦!
(此处楼主点击了一下 “夜晚:” 后面的 “设置”!)

当然用处不止这一点!

楼主 1076742624  发布于 2013-09-22 23:47:00 +0800 CST  
如上面所说,tellraw 不止可以干这点事情!
还可以干很多,但是 Mojang 官方没有放出具体用法,wiki 也没有写,所以具体用途我们还得等以后来补充~

这里来说一点点邪门的用法:
tellraw @p {"translate":"chat.type.announcement","using":["Server","hi"]}

用这个指令可以蹦指定玩家的客户端!
对!你没听错!蹦客户端!
(纯属乱玩,然后玩脱的产物 23333)

楼主 1076742624  发布于 2013-09-22 23:50:00 +0800 CST  
tellraw 也讲完了,暂时只有这么些内容,不过等官方放出用法后我会第一时间补充 tellraw 的其他用法的!
同理,不懂的可以留问题在这楼的楼中楼。

楼主 1076742624  发布于 2013-09-22 23:51:00 +0800 CST  
3.setblock

setblock 是什么?
setblock 可以对指定坐标的方块进行一系列的操作。


例如这个,虽然铁砧也可以做到,但是这个确实是靠一个命令搞出来的!
是不是特别带感!
(想想看来,也可以做解密地图的某些元素用 2333!)

楼主 1076742624  发布于 2013-09-22 23:55:00 +0800 CST  
用法:
setblock X坐标 Y坐标 Z坐标 方块ID
setblock X坐标 Y坐标 Z坐标 方块ID 方块附加值
setblock X坐标 Y坐标 Z坐标 方块ID 方块附加值 操作方法
setblock X坐标 Y坐标 Z坐标 方块ID 方块附加值 操作方法 NBT标签


楼主 1076742624  发布于 2013-09-22 23:57:00 +0800 CST  
关于坐标这里要讲一些小知识。
坐标的话在命令里可以使用 绝对坐标 (就是直接填写坐标) 和 相对坐标!
这里重点讲讲相对坐标:
相对坐标就是在坐标前面加上 ~ 这个符号。
然后坐标就变成了 发送者的坐标 + 坐标。


楼主 1076742624  发布于 2013-09-22 23:59:00 +0800 CST  
啥?操作方法是啥?
操作方法有三个!
replace:替换,如果目标方块不是你所指定的方块那么他就会替换成你想要的!
keep:替换空气,如果目标方块是空气,那么就替换城你想要的!
destroy:破坏,破坏指定方块并掉落其能得到的物品,然后替换成你想要的!

注:destroy 破坏的掉落物品可以通过 gamerule 的 doTileDrops 禁掉。
(你也可以通过这个来模拟播放一个方块被破坏的动画 2333)

楼主 1076742624  发布于 2013-09-23 00:05:00 +0800 CST  
这里放出刚才刷箱子的那个例子:
setblock ~0 ~-1 ~0 54 0 replace {CustomName:"我TM的不是箱子!"}

(注意!一定要填了操作方式后再填NBT!)

楼主 1076742624  发布于 2013-09-23 00:12:00 +0800 CST  
setblock 大概到这里就结束了?
嗯,大概吧,如果有漏掉的我还会补充的,同理可以在本楼楼中楼留问题!

(部分东西我研究了一下但是失败了,所以可能以后会补充)

楼主 1076742624  发布于 2013-09-23 00:20:00 +0800 CST  
4.give

give 是什么?
……你不知道? ←o← give 就是可以刷指定物品给指定的玩家。


This is Minecraft!!!
(楼上别闹 23333)
喝下这个药之后会获得 速度50 3秒~

楼主 1076742624  发布于 2013-09-23 00:27:00 +0800 CST  

楼主:1076742624

字数:7820

发表时间:2013-09-23 06:55:00 +0800 CST

更新时间:2016-03-08 01:09:49 +0800 CST

评论数:756条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看