3,351
个编辑
MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
(// 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 ==
|