Loottable(可抢夺物品列表)是1.9+中的一个新特性,主要靠调用外置json文件实现对物品奖励获取的随机.
第三章内将会向各位介绍Loottable中的技术性提示
Chm版本:http://pan.baidu.com/s/1c1U4804 (若.chm遇到问题下载压缩文件)
全部章节总索引
标准Json
Loottable使用的是标准json(1.9后json都是标准json)
所谓标准json,其实就是规范使用json:
对象使用引号:例如"functions" "type" "condition"
整型、浮点不得混为字符串:例如1.0不能写成"1.0"
字符串使用引号:例如"minecraft:stone"
字符串中转义等.
如果loottable不能成功调用,多半是因为没有使用标准json.
UTF-8编码
如果你在Loottable中使用了中文,却在游戏中调用出现了显示?????的情况,是因为minecraft使用UTF-8编码,请将中文转为unicode并替换.
(或者使用代码编辑器是保存文件时,选择UTF-8编码)
事实上所有特殊字符特殊语言,如果没有使用UTF-8编码,也许在minecraft都会出现上述情况(例如模组汉化等)
§样式代码
如果你想问能否使用样式代码,答案是当然的.
样式代码只是隐蔽了游戏内直接使用,但事实上loottable作为外部调用,和插件模组等一样是支持样式代码的.
由于UTF-8编码,需要把样式代码转为unicode再填写.
原版中的Loottable
下面的Loottable你可以直接调用(命名空间为minecraft:子文件夹/文件)
子文件夹:(转自Wiki,已全部翻译)
┗chests - 资源箱子里的物品。
┗abandoned_mineshaft - 废弃矿井中找到的运输矿车。
┗desert_pyramid - 沙漠神殿的宝藏室里的箱子。
┗end_city_treasure - 末地城里的箱子。
┗igloo_chest - 雪屋地下室里的箱子。
┗jungle_temple - 丛林神庙里的箱子。
┗nether_bridge - 下界要塞里的箱子。
┗simple_dungeon - 地牢里的箱子。
┗spawn_bonus_chest - 如果打开奖励箱选项的话,新世界生成时的奖励箱。
┗stronghold_corridor - 要塞台阶祭坛里的箱子。
┗stronghold_crossing - 要塞储存室里的箱子。
┗stronghold_library - 要塞图书馆里的箱子。
┗village_blacksmith - 村庄中的铁匠铺里的箱子。
┗entities - 实体掉落的物品。应用在箱子上会出现漏洞,可能导致部分堆叠为0。
┗sheep - 有色绵羊
┗black - 黑色
┗blue - 蓝色
┗brown - 棕色
┗cyan - 青色
┗gray - 深灰色
┗green - 绿色
┗light_blue - 浅蓝色
┗lime - 亮绿色
┗magenta - 品红
┗orange - 橙色
┗pink - 粉色
┗purple - 紫色
┗red - 红色
┗silver - 银色
┗white - 白色
┗yellow - 黄色
┗bat - 蝙蝠
┗blaze - 烈焰人
┗cave_spider - 洞穴蜘蛛
┗chicken - 鸡
┗cow - 牛
┗creeper - 苦力怕
┗elder_guardian - 远古守卫者
┗enderman - 末影人
┗endermite - 末影螨
┗ghast - 恶魂
┗giant - 巨人僵尸
┗guardian - 守卫者
┗horse - 马
┗magma_cube - 岩浆怪
┗mushroom_cow - 蘑菇牛
┗ocelot - 豹猫
┗pig - 猪
┗rabbit - 兔
┗sheep - 没毛的羊
┗shulker - 潜匿之贝
┗silverfish - 蠹虫
┗skeleton - 骷髅射手
┗skeleton_horse - 骷髅马
┗slime - 史莱姆
┗snowman - 雪傀儡
┗spider - 蜘蛛
┗squid - 墨鱼
┗wolf - 狼
┗zombie - 僵尸
┗zombie_horse - 僵尸马
┗zombie_pigman - 僵尸猪人
┗gameplay - 游戏机制
┗fishing - 钓鱼
┗fish.json - 鱼类
┗junk.json - 垃圾
┗treasure.json - 宝藏
┗fishing.json - 读取“fishing”文件夹里的一个json,通过幸运决定
┗empty - 不包含任何物品
检验与格式化
当你手写一个Loottable如果不确定是否符合json格式,你可以去检验与格式化:http://www.bejson.com/
格式化能让文件结构更清晰,当然需要注意此处格式化会重新把Unicode转成原字符,请特别备份.
游戏内指令方块的操作
指令方块是支持自动化调用的,具体操作可以融入逻辑中,在这里说一下指令方块操作和loottable更新机制影响:
- 更新
如果你要使一个箱子被玩家打开出现不是特定的物品,那么你在对该容器操作前千万不要打开该容器,如果一旦loottable容器被打开,里面的loottable标签去除,转成了物品标签,此时更新也没有用.
实体中更新loottable是有效的.
- 随机
结合一个loottable
可以检测实体掉落物,制作一个随机器.(该随机器只能通过枚举,较复杂,暂不演示)
- 复制
- 检测
而实体可以.[groupid=546]Command Block Logic[/groupid]