Minecraft(我的世界)中文论坛

标题: [API|前置]LanguageUtils——获取物品生物名称API[1.7.10-1.12]

作者: fyfly    时间: 2015-7-7 21:04
标题: [API|前置]LanguageUtils——获取物品生物名称API[1.7.10-1.12]
本帖最后由 1582952890 于 2017-9-17 07:20 编辑

简介:
获取一个物品的名字一直是一个很麻烦的事情,Bukkit/Spigot没有提供相对的API。之前这里有一个实现,但是只支持英文,而且对于一些特殊的物品(药水,怪物蛋等)没有支持。所以这个API诞生了(其实这个API一年前就想搞了,一直没开工/w\)。
在之后的更新中加入了获取生物、附魔、附魔等级名字的功能。
这个API为插件提供了获取物品名字的能力,能够根据玩家客户端使用的语言发送相应语言的物品名称(使用的是原版的语言文件,一共90个)。目前该API只支持原版物品和生物。在1.4.0更新中,服主和插件作者已经可以自定义语言条目了,具体请看后文(之后版本中可能就使用这一功能提供mod支持)。

从现在1.2.0.1-1.7.10的版本起,该插件已经能够工作在Cauldron/KCauldron服务器上了,并且对于原版的物品和生物工作是正常的。只不过可能花费时间长一点。当然,对于mod里面的物品也不会崩溃,但是只能够返回一个自动生成的Material的名字,如果你有好的想法解决mod支持这个问题可以告诉我。

我仍然还是推荐插件作者用
  1. getServer().getName().contains("Cauldron") // JavaPlugin 类中
复制代码
来检测一下环境。

Demo:

目前版本采用HashMap和Enum(其实还是HashMap)来管理和获取语言文件。大概需要100-250 ms来加载所有语言文件,需要50-300 μs来获取一个名字(开服第一次获取时间可能长一点(大概1ms左右),包括反射获取客户端语言的时间)。如果你有更高效的方法请在Github上发PR或者Issues。

当前构建状态:

资源:


使用:
- 如果你是一个服主:
如果有插件需要本插件作为前置,只要把本插件(无任何后缀的版本)下载下来放到plugins/文件夹里去就行了。本插件单独使用任何功能!(除非你想凑数什么的/w\)

本插件主要版本为1.12,如果你使用的是Minecraft 1.7.10或1.8.x或1.9.4或1.10.x或1.11.x,请下载后缀为1.7.10或1.8.x或1.9.x或1.10.x或1.11.x的版本!(暂无计划支持更低的版本,如果需要请自行更改编译)

设置:


修改语言条目的教程:

- 如果你是一个开发者:
首先,请把该插件加到你IDE的Build Path里。如果你想要源码和Javadoc,我提供了sources和javadoc,至于怎么使用请参考各自IDE的说明。

接下来,添加插件的依赖:


如果你使用了Gradle或者Maven:


接下来是一些功能的对应方法,你也可以去看这个示例插件:


如果你想对本API贡献代码:

下载地址(3个都可以):

更新日志:



如果你喜欢这个工程,请在Github给这个工程Star. 如果有Bug请向我汇报.
作者: a8105    时间: 2015-7-7 21:37
本帖最后由 810587921 于 2015-7-7 21:54 编辑
已在github的Issue回复,如果该插件原创属实请在Issue回复,稍后可删除以保持Issue区整洁
谢谢合作
验证完毕
作者: ColorsWind    时间: 2015-7-7 21:39
能否说一下这个API的授权协议
好吧看到了 MIT
作者: fyfly    时间: 2015-7-7 21:56
本帖最后由 fyfly 于 2015-7-7 21:58 编辑
810587921 发表于 2015-7-7 21:37
验证完毕

谁和你讲Github的Issues可以删除了orz, https://github.com/isaacs/github/issues/253 这个问题排了这么长还是没加上去
作者: fyfly    时间: 2015-7-8 21:29
更新至1.1.1,修复玩家头颅显示问题
作者: 阿列萌比    时间: 2015-7-8 21:52
我觉得挺不错啊,都汉化而且挺方便的
作者: fire__rain    时间: 2015-7-10 02:10
然并luan
作者: fyfly    时间: 2015-7-17 15:33
已添加支持1.7.10的版本,如果需要的服主可以来安装
作者: fyfly    时间: 2015-7-22 20:03
更新1.2.0版本,添加生物语言支持
作者: KIYAVA    时间: 2015-7-22 20:29
6666!收下了
作者: fyfly    时间: 2015-7-23 02:07
1.7.10的版本更新1.2.0.1,添加Cauldron/KCauldron兼容,注意只是兼容而不是能够获取mod物品名称
作者: fyfly    时间: 2015-8-2 11:42
更新1.3.0,添加附魔与附魔等级支持。1.7.10版本稍后再准备更新
作者: 黄总    时间: 2015-8-3 23:59
请问一般什么类型的插件会用到这个插件做前置呢?
作者: fyfly    时间: 2015-8-4 00:13
黄总 发表于 2015-8-3 23:59
请问一般什么类型的插件会用到这个插件做前置呢?

暂时没有公开的吧,就是为作者提供个API用,可能私服也会用到,不过这位仁兄已经打算在他的下一个插件使用了
作者: fyfly    时间: 2015-8-13 21:32
更新1.4.0,添加自定义语言条目功能
作者: li709854423    时间: 2015-12-10 17:33
不明所以。。是说根据这个获取物品名 的时候能获取到中文名吗?
我以前有个疑惑就是。quests插件。比如需求物品之类的。他都会显示成英文的。。用这个插件会变成中文嘛?我估计不会吧 - -
作者: 心里有她    时间: 2015-12-10 18:38
插件不错噢
作者: fyfly    时间: 2015-12-10 22:08
li709854423 发表于 2015-12-10 17:33
不明所以。。是说根据这个获取物品名 的时候能获取到中文名吗?
我以前有个疑惑就是。quests插件。比如需求 ...

不会,必须要调用我这个插件的API才行
作者: li709854423    时间: 2015-12-11 10:06
fyfly 发表于 2015-12-10 22:08
不会,必须要调用我这个插件的API才行

= =不知道有没有意义啊。先码一下再考虑。。一般RPG服都是自定义名字。。也用不到原版的这些
作者: 南方    时间: 2015-12-11 10:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: huwei5201314789    时间: 2016-1-3 11:19
没有1.72的吗?

作者: fyfly    时间: 2016-1-3 12:19
huwei5201314789 发表于 2016-1-3 11:19
没有1.72的吗?

你可以试试1.7.10版本,不保证能用,不过这个是完全开源你可以自己修改
作者: huwei5201314789    时间: 2016-1-3 12:35
fyfly 发表于 2016-1-3 12:19
你可以试试1.7.10版本,不保证能用,不过这个是完全开源你可以自己修改

试过了,完美报错。。
当然,只是试过了与http://www.mcbbs.net/thread-471208-1-1.html
完美报错{:10_503:}
作者: fyfly    时间: 2016-1-3 13:43
huwei5201314789 发表于 2016-1-3 12:35
试过了,完美报错。。
当然,只是试过了与http://www.mcbbs.net/thread-471208-1-1.html
完美报错{:10_50 ...

1.7.2太老了我不想支持,如果你想要的话自己改吧
作者: huwei5201314789    时间: 2016-1-3 14:52
fyfly 发表于 2016-1-3 13:43
1.7.2太老了我不想支持,如果你想要的话自己改吧

额,,,我怎么知道怎么改= ={:10_493:}
作者: fyfly    时间: 2016-5-28 19:42
已升级1.9.x
作者: A-Kreedz    时间: 2016-6-3 12:28
同头像的来支持一下,期待插件能做得更好
作者: loneen    时间: 2016-6-3 13:52
楼主你真的是太帅啦
作者: fyfly    时间: 2016-7-1 03:11
已更新MC1.10.2的对应版本,增加了一个回溯语言的选项
作者: zyizhuo    时间: 2016-7-2 14:01
好创意,拿来。。。。
作者: Peter_Hao    时间: 2016-8-27 17:40
很好的一个插件~收下了~谢谢
作者: fyfly    时间: 2017-6-9 02:06
已更新至1.12
作者: Bryan33    时间: 2017-6-9 15:34
fyfly 发表于 2017-6-9 02:06
已更新至1.12

提交了一个issue  我觉得可以把HashMap改成EnumMap
作者: 寂    时间: 2017-6-20 14:37
楼主您好,我是一个插件开发者。
我打算用您的API来获取一些东西(比如附魔)对应的中文名,但是我似乎遇到了一些问题无法解决:
以下是调用您的API的异常信息(节选):
java.lang.NoSuchFieldError: BINDING_CURSE
        at com.meowj.langutils.lang.convert.EnumEnchantment.<clinit>(EnumEnchant
ment.java:55) ~[?:?]
        at com.meowj.langutils.lang.LanguageHelper.getEnchantmentUnlocalizedName
(LanguageHelper.java:230) ~[?:?]
        at com.meowj.langutils.lang.LanguageHelper.getEnchantmentName(LanguageHe
lper.java:253) ~[?:?]
        at chenji.itemeditor.help.HelpManager.<init>(HelpManager.java:65) ~[?:?]


HelpManager.java 65:  String display = LanguageHelper.getEnchantmentName(e3, "zh_cn");   //e3是一个非null的Enchantment
测试环境是java8 + Spigot 1.10.2 (R0.1)
劳烦您帮忙看下是什么原因qaq。感谢了


作者: qwe459223217    时间: 2017-6-20 16:34
方便的插件
作者: fyfly    时间: 2017-6-21 13:36
1582952890 发表于 2017-6-20 14:37
楼主您好,我是一个插件开发者。
我打算用您的API来获取一些东西(比如附魔)对应的中文名,但是我似乎遇到 ...

你用的是对应1.10.2的LangUtils吗,对应的插件版本是1.6.3。不同版本之间是不兼容的。
作者: 寂    时间: 2017-6-21 19:48
fyfly 发表于 2017-6-21 13:36
你用的是对应1.10.2的LangUtils吗,对应的插件版本是1.6.3。不同版本之间是不兼容的。 ...

好吧我明白了 一直以为您网盘中的文件名
比如1.8.1-1.11.2是支持1.8.1版本到1.11.2
之前没好好看贴,见笑了,感谢您的解答与回复。
作者: Not103    时间: 2017-11-4 08:25
怎么弄都显示不了中文
作者: fyfly    时间: 2017-11-5 03:01
Not103 发表于 2017-11-4 08:25
怎么弄都显示不了中文

用的是哪个版本呢
作者: Not103    时间: 2017-11-5 05:02
fyfly 发表于 2017-11-5 03:01
用的是哪个版本呢

服务器版本:paperspigot 插件:LangUtils-1.8.1-1.11.2
作者: Not103    时间: 2017-11-5 05:30
换了新版本 然后就又没提示任何东西
作者: fyfly    时间: 2017-11-7 14:48
Not103 发表于 2017-11-5 05:02
服务器版本:paperspigot 插件:LangUtils-1.8.1-1.11.2

把配置里的en_us改成all试试,如果没改的话默认只加载英语的
作者: fyxrim    时间: 2018-1-17 23:52
fyfly 发表于 2017-11-7 14:48
把配置里的en_us改成all试试,如果没改的话默认只加载英语的

你好 还是不行 加载不出来语言 我跟他一样paper服务端1.11.2版本 你的插件就是1.8.1

FallbackLanguage: all
LoadLanguage:
- all


还有zh_CN 还是不行
作者: fyfly    时间: 2018-1-19 16:45
fyxrim 发表于 2018-1-17 23:52
你好 还是不行 加载不出来语言 我跟他一样paper服务端1.11.2版本 你的插件就是1.8.1

FallbackLanguage: ...

等我回去试试Paper吧,最近没什么时间所以可能要等一会
作者: fenghaolin1    时间: 2018-4-21 18:59
我是一个插件的开发者,这个插件在1.9无法获取到包含药水效果的ItemDisplayName,报错如下

Error.png (18.59 KB, 下载次数: 0)

Error.png

作者: TONMMY    时间: 2018-8-6 16:52
没有看出此api的作用
作者: INKDRRAK    时间: 2018-8-8 09:52
很棒的插件
(人气恢复了再评分
希望能够更新至支持1.13
作者: INKDRRAK    时间: 2018-8-16 09:07
很需要该插件,希望可以尽快支持到1.13
作者: 2048028141    时间: 2018-8-16 09:32
不错啊,能检查名字了
作者: huangjc666    时间: 2018-11-23 16:50
找了好久,以为bbs上没有,想搬运,结果……
作者: huangjc666    时间: 2018-11-23 16:51
楼主这是你原创的吗?spigot上好像也有
作者: 18758788225    时间: 2019-1-1 21:04
那个,有个插件拿你当前置,然后放进去只有英文,改了zh_cn只剩代码。。。

作者: 咸鱼气功王    时间: 2019-1-22 10:14
mod物品返回自动生成的Material名称,能否在做一个映射表呢?这样似乎能更好的支持mod物品吧.
作者: Tangao125    时间: 2019-1-26 18:59
非常好的插件,顶!!!
作者: dugulp    时间: 2019-2-5 17:31
楼主我看你好长时间没有更新了1.13版本的LangUtils 我搬运啦啊
作者: Bug520    时间: 2019-7-17 13:16
本帖最后由 Bug520 于 2019-7-17 13:22 编辑

很实用的一款插件,非常好用
作者: h7730861    时间: 2019-8-6 16:17
你好,请问这个插件跟mythicmobs有冲突。。有什么解决方案?我记得我装这个插件是rpgitem需要的前置
作者: 安塔利亚RPG    时间: 2020-3-23 20:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: 爱你入骨    时间: 2020-5-8 20:13
表示不会用嘤嘤嘤
作者: 沃德世界    时间: 2021-2-13 14:25
很不错的前置,拿走了。
作者: 1059945080    时间: 6 天前
这也行???????????????????