介绍
如果你打算在 Java19 环境下使用此模组,请阅读更新日志以获取说明
详细文档: https://blog.exz.me/omni-ocular/
目前仍在开发中
描述
Omni Ocular 是一个模组,可在 Waila HUD 上显示玩家自定义的特定 NBT 信息。适合极端数据爱好者和模组测试者使用。
Omni Ocular 是 WailaNBT 的继任者,代码经过大幅重写,功能更加丰富。
安装
依赖
Not Enough Items、Waila 和 Omni Ocular 必须同时安装在客户端和服务端。下载后将 jar 文件复制到 mods 文件夹中。
强烈推荐使用 In-Game NBTEdit (在此下载 1.7.10 版本)来查看 NBT 数据结构,以便自定义要显示的内容。
展示(截图)
只需安装 Omni Ocular 即可使用,无需其他操作。

自定义配置教程
Omni Ocular 使用 XML 格式文件作为其配置文件。你可以打开 minecraft/config/OmniOcular 文件夹查看预配置的文件。
游戏内命令
“/oor”(代表 Omni Ocular Reload config):将重新加载 minecraft/config/OmniOcular 文件夹下的所有 XML 配置文件。如果在服务端使用,将重新加载服务端配置文件并将新配置发送给所有在线玩家。运行此命令时会记录玩家名称。在多人游戏中仅 OP 可使用。
“/ooe”(代表 Omni Ocular Entity name):将显示你指向的实体的注册名。
“/oon”(代表 Omni Ocular Name):将显示你手持物品的注册名。
编写配置文件
配置文件为 XML 文件格式,其中包含 JavaScript。文件必须遵循 XML 和 JavaScript 标准才能正常工作。
建议以该文件所针对模组的 Mod ID 来命名文件。
请查看预配置文件以了解实际用法。下方展示了一个示例配置。
<!--Author: EpixZhang-->
<!--Date: 2015/1/1-->
<!--Version: 1.0-->
<oo>
<init>
function tick2second(n){return n/20}
</init>
<tileentity id="Furnace">
<line displayname="Burn Time">
return tick2second(nbt['BurnTime'])
</line>
</tileentity>
<entity id="Sheep">
<line displayname="Until next love">
tick2second(nbt['InLove'])
</line>
</entity>
<tooltip id="minecraft:skull">
<line displayname="OwnerName">
return nbt['SkullOwner']
</line>
</tooltip>
</oo>
配置文件信息部分:
<!--作者:EpixZhang--> <!--日期:2015/1/1--> <!--版本:1.0-->
此部分不是必需的,但建议保留。它用于记录有用的信息。目前,版本指目标模组版本。 未来自动更新时可能会需要此信息。
基础节点:
所有生效的节点都必须位于基础标签 “<oo></oo>” 中。
方块实体节点:
若要显示方块实体(TE)的信息,请使用以下格式的标签。
<tileentity id="Furnace"></tileentity>
“id” 属性定义此节点适用的方块实体。上面的节点适用于 id 为 “Furnace” 的方块实体。
它使用正则表达式格式来匹配方块实体的 id。例如,id=”Powered.*” 会匹配所有 id 以 “Powered” 开头的方块实体。 如果 id 中包含特殊字符,则必须使用转义字符(反斜杠 ”\”)。例如,id=”BC\|Engine” 可以匹配 id 为 “BC|Engine” 的方块实体,而 id=”BC|Engine” 则不行。
实体节点:
若要显示实体的信息,请使用以下格式的标签。
<entity id="Sheep"></entity>
“id” 属性定义此节点适用的实体。上面的节点适用于 id 为 “Sheep” 的实体。
这里同样使用正则表达式。
提示框节点:
若要在鼠标悬停于物品上时显示信息,请使用以下格式的标签。
<tooltip id="minecraft:skull"></tooltip>
“id” 属性定义此节点适用的物品。上面的节点适用于 id 为 “minecraft:skull” 的物品。
这里同样使用正则表达式。
初始化节点:
若要执行初始化操作,例如常用函数,请使用以下格式的标签。
<init></init>
此标签中的脚本会在配置加载时运行。
行节点:
若要逐行显示信息,请使用以下格式的标签。
<line displayname="Foo">
script bar
</line>
这里的 “script bar” 应为函数的内容。也就是说,function(){script bar} 必须是有效的 JavaScript 函数。此函数的返回值将会显示出来。如果只有一个表达式,可以省略 “return”。例如,在 script bar 中写入 “Epix”,等同于写入 “return ‘Epix’”。
默认样式为:显示名称以白色显示,返回值以灰色显示,两者之间以制表符分隔。返回值中可以使用 Minecraft 颜色代码,但显示名称中不能使用。
<line displayname="Foo">
"bar"
</line>
将会显示如下内容。
显示名称可以省略或设为 “”(空字符串),这样就只会显示返回值。这也是为整行设置颜色的方法。
如果 Display name 是本地化键,它会自动进行本地化。请尽可能使用它进行本地化。可以在本地化 lang 文件中查找键,该文件通常位于模组 .jar 文件的 assets/ModID/lang 目录下。(可以使用 7-zip 等工具将 jar 文件作为 zip 文件打开。)强烈建议使用当前配置文件所对应模组、其依赖模组,或 Waila/Omni Ocular 的 lang 文件中的键。如果以上文件都不包含所需的键,请向我反馈,和/或在 GitHub 上为 Omni Ocular 的 lang 源文件作出贡献。
“n” 可用于将一个返回值拆分为多行。
如果返回 “null”/”__ERROR__”/”undefined”/”NaN”,则会直接忽略该行,并且不会在 HUD 中显示。这是在特定条件下隐藏行的方法。
注意:如果行节点和初始化节点中的 JavaScript 代码包含 XML 特殊字符(“&”、“<“、“>”),无需写成转义形式(“&”、“<”、“>”)。Omni Ocular 会自动转义。
内置特殊字符
可以使用格式代码(http://minecraft.gamepedia.com/Formatting_codes)和 Waila 特殊字符,不过这里还提供了更方便的使用方式。
所有代码均已预定义为大写形式,不带引号。
例如:默认样式。以下代码的显示结果与上一张图片完全相同。
<line displayname="">
return "Foo" + TAB + ALIGNRIGHT + WHITE + "bar"
</line>
所有特殊字符:
BLACK, DBLUE, DGREEN, DAQUA, DRED, DPURPLE, GOLD, GRAY, DGRAY, BLUE, GREEN, AQUA, RED, LPURPLE, YELLOW, WHITE, OBF, BOLD, STRIKE, UNDER, ITALIC, RESET
与http://minecraft.gamepedia.com/Formatting_codes中的格式代码相同。
TAB
制表符。
ALIGNRIGHT, ALIGNCENTER
将文本右对齐或居中对齐。
HEART, HHEART, EHEART
完整的心、半颗心、空心。
内置 JavaScript 函数
translate(string):获取字符串的本地化文本。请尽可能使用它进行本地化。
name(object):获取对象的显示名称。通过铁砧等方式修改的名称也能正确显示。“object” 必须是一个 NBT Compound 标签。例如,获取原版箱子中第一个物品的名称:
return name(nbt['Items'][0])
fluidName(string):获取字符串对应的本地化流体名称。推荐使用。
holding():获取玩家手持物品的 ID。
armor(int):获取玩家所穿盔甲的 ID。int=0:靴子,int=1:护腿,int=2:胸甲,int=3:头盔。
isInHotbar(string):判断快捷栏中是否有 ID 为 string 的物品。
isInInv(string):判断物品栏中是否有 ID 为 string 的物品(包括快捷栏)。
使用游戏内 NBTEdit
下面以实际例子说明。假设下方有一个熔炉。
将准星指向熔炉,然后运行 “/nbtedit” 命令打开 NBTEdit GUI。
上方显示的 NBT 数据将转换为一个名为 “nbt” 的 JSON 变量。
nbt={
"BurnTime":15567,
"CookTime":134,
"x":-288,
"y":63,
"z":155,
"id":"Furnace",
"Items":[
{
"Count":50,
"Slot":0,
"Damage":0,
"id":4
}
]
}
当玩家指向一个方块实体时,此变量会保持并同步。你可以在 <line></line> 节点中调用它。
例如,如果你想在 HUD 中显示 “CookTime”,可以在配置文件中这样写。
<oo>
<tileentity id="Furnace">
<line displayname="Cook Time">
return nbt['CookTime']
</line>
</tileentity>
</oo>
注意,id=”Furnace” 可以通过 NBTEdit GUI 获取。你可以随时使用 NBTEdit GUI 获取方块实体的 id。至于绵羊等实体或物品提示信息,请使用上文提到的 “/ooe” 和 “/oon” 命令。
“CookTime” 代表什么?哦,这就得靠你自己来猜了。
关于配置文件
客户端
minecraft/config/OmniOcular/ 中扩展名为 “.xml” 的文件会被加载为配置文件。子文件夹将被忽略。
游戏启动时,会根据已安装的模组 ID 自动生成预设配置文件。 不过,已存在的文件不会被覆盖。如果你想禁用预设配置文件中的某些功能,请清空配置文件内容,而不是删除文件。 如果你更新了 Omni Ocular 并想更新预设配置文件,则需要删除旧文件。
服务端
配置文件的加载方式与客户端相同。不过,服务端不会生成预设配置文件。也就是说,你必须先在客户端单人游戏中准备或修改文件,然后将它们复制到服务端才能生效。
多人游戏中,服务端配置会覆盖所有客户端配置。这意味着所有客户端配置文件都会被忽略,所有客户端都会使用服务端配置。无需担心玩家通过自定义客户端配置窃取受保护的 NBT 数据(可能包括密码)。“/oor” 命令也会让所有客户端重新加载新的服务端配置。
计划中的功能
支持显示掉落在地上的物品信息。
允许根据配置隐藏部分信息,也许可以通过按键实现。
二进制文件的使用权限
你可以:
在整合包中使用此模组
发布此模组的截图或视频
修改此模组并在 GitHub 上提交拉取请求
在此处发布链接,告知我你已将它加入整合包等
只要不违反以下规则,你可以做任何想做的事
你必须:
以任何形式重新分发时(整合包、转载到其他网站等),保留署名信息(作者名、指向此帖的链接等)
你不能:
对他人声称 Omni Ocular 是你制作的
常见问题
Omni Ocular 支持哪些 Minecraft 版本?
Omni Ocular 支持 Minecraft Java 版 1.7.10,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。
Omni Ocular 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
EpixZhang 的其他作品
查看全部 →Non Update
禁止模组检查版本更新
Volumetric Flask
一个主要专注于流体自动合成的应用能源2附属模组。
Waila NBT
Waila NBT 是一款可在 Waila HUD 上显示玩家自定义特定 NBT 信息的模组。
Model Colle
Collection of Custom Models



评论
登录后评论和评分