本帖最后由 PotatoMaster101 于 2014-6-16 17:49 编辑

大家好,今天来教大家一个做地图的小窍门。就是这个{HideFlags}。这个dataTag可以用在物品上面,来把物品的显示数据屏蔽掉。比如:如果是一把附魔的钻石剑,那么加入这个{HideFlags}后,钻石剑的附魔就会被屏蔽掉,但是附魔还是存在,只是玩家无法看见。不光是附魔,连属性,{CanDestroy},{Unbreakable},{CanPlaceOn},{Author}等等都可以屏蔽掉。如果做冒险地图的话,那么就是利器,可以把信息都屏蔽,这样玩家要动脑才会通关。这个{HideFlags}在MC的14w06a版本时第一次出现。

进入教程。这个{HideFlags}的输入有很多数值,并不是1或者0。因为这个{HideFlags}可以自己选择屏蔽的东西。
首先,我们先刷出一把有很多信息的钻石剑:
  1. /give @p minecraft:diamond_sword 1 0
  2. {Unbreakable:1,AttributeModifiers:[{Operation:0,UUIDLeast:1,UUIDMost:1,Amount:9000000000.0,AttributeName:generic.attackDamage,Name:Attack}],ench:[{id:16,lvl:90000}]}
复制代码
这把钻石剑主要是拥有附魔,自定义属性和永远不毁这3个属性。但是玩家可以轻易看出这把钻石剑的所有信息。于是我们可以加入{HideFlags},来隐藏这些信息。


这个很简单,在dataTag里加入:{HideFlags:63}后,就可以隐藏所有的信息,例子:
  1. /give @p minecraft:diamond_sword 1 0
  2. {Unbreakable:1,AttributeModifiers:[{Operation:0,UUIDLeast:1,UUIDMost:1,Amount:9000000000.0,AttributeName:generic.attackDamage,Name:Attack}],ench:[{id:16,lvl:90000}],HideFlags:63}
复制代码
大家看见在指令的最后加入了{HideFlags},后面的值是63,也就是隐藏所有的信息(不包括名字和附加文字)。但是缺点是剑的附魔还是会显示。注意的是,这个{HideFlags}只是用来隐藏信息,而附魔什么还是存在的,并没有被{HideFlags}清除,只是不显示而已。


之后来说的是HideFlags后面的值。后面有很多数值可以填写,每个都是控制隐藏一个单独的信息。发几个常用的:

1 - 隐藏附魔
2 - 隐藏自定义属性
3 - 隐藏附魔和自定义属性
4 - 隐藏{Unbreakable} (永久不毁)
8 - 隐藏{CanDestroy} (可破坏)
16 - 隐藏{CanPlaceOn} (可放置在)
32 - 隐藏大部分信息(药水信息,书作者,烟花效果等等)
63 - 隐藏所有的信息,除了名字和附加文字

这里就是一些常用的数值。一般用63就可以了,除非要自定义什么要显示什么不要显示。

{CanDestroy}那些只是用在冒险模式地图上面的,但是使用了后物品上面会显示可破坏什么方块。所以,制作人员要是想不让玩家知道什么可以破坏什么,那就可以使用这个{HideFlags}。

帖子最后提取Cyqsimon的推断:
1 - 隐藏附魔
2 - 隐藏自定义属性
4 - 隐藏{Unbreakable} (永久不毁)
8 - 隐藏{CanDestroy} (可破坏)
16 - 隐藏{CanPlaceOn} (可放置在)
32 - 隐藏其他(大部分)信息(药水信息,书作者,烟花效果等等)

可以注意到所有这些数字都是二进制数(2的次方数),而这样安排是有特殊性的

任意数量的任意二进制数相加,结果都是不同的,比如,4+32=36,但是你是永远无法使用别的二进制数组合相加等于36,(当然不能重复相加同一个数),同样的,1+16+32=49,1+2+4+8=15等等都是独特的,即每个0-63的数字必定代表了一种独特的“隐藏数据种类”组合(0代表全部显示)

用几个例子说明:如果想要隐藏CanDestroy和自定义附魔,这个数字即是1+8=9;如果想要隐藏自定义属性、自定义附魔、以及Unbreakable,这个数字即使1+2+4=7;如果想要全部隐藏,这个数字即是1+2+4+8+16+32=63;以此类推

========END==========