MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针

如果在编辑的过程中遇到了什么问题,可以去讨论板提问。

为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证

MCBBS Wiki GitHub群组已上线!

您可以在回声洞中发表吐槽!

服务器状态监控。点击进入

本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>

用户:MashKJo/1.12.2模组开发教程/11.高级物品和方块 - 前置概念:修订间差异

跳到导航 跳到搜索
→‎I18n和ITextComponent:​ // Edit via Wikiplus
(// Edit via Wikiplus)
→‎I18n和ITextComponent:​ // Edit via Wikiplus
 
 
== I18n和ITextComponent ==
在模组开发中,我们时常会遇到这样一种需求:给某个玩家发送聊天栏信息,很简单,用<code>EntityPlayer#sendMessage</code>即可(注意不是sendStatusMessage),我们注意到这个方法接受一个ITextComponent,实际上出于本地化的需求与考虑,我们用的最多的该接口的实现是TextComponentTranslation。这个类的构造方法接受一个String——实际上就是用于充当该消息内容的本地化键名。我们在发送消息时,应该先判断逻辑端,否则消息会发送两次——由于我们处理逻辑一般是在逻辑服务端,因此发送消息一般也在这一端执行。
 
如果我们在发送消息之外的场景中,还有本地化的需求怎么办?答案是使用<code>net.minecraft.client.resources.I18n#format</code>,该方法返回一个本地化之后的String量,用法和TextComponentTranslation基本一样,但从该类的包名即可看出——该类只在物理客户端有意义,使用它时要尤其注意这一点。
 
另外,你或许也注意到了,无论是TextComponentTranslation的构造方法还是<code>I18n#format</code>,它都还可以接受一个Object变长参数,这实际上是为了满足一个需求:需要在本地化文本中插入动态的内容,具体用法类似于C语言中的printf函数,如字符串的占位符是<code>%s</code>。
 
== MinecraftServer ==
行政员、​优秀编辑者、​界面管理员、​监督员、​管理员、​小部件编辑者
3,351

个编辑

我们提供服务需要使用Cookie。您使用我们的服务,即表示您同意我们使用Cookie。

导航菜单