注【AuxBlock】: 即特殊值方块,将每一个id所具有的16个特殊值分别进行渲染,暂时解决id不足问题
item和block在新版当中被渲染后会显示其内部名称(然而这并不是bug),例如item.xxx.name和tile.xxx.具体id的值.name.要让正常显示外部名称其实很简单,使用ModPE.langEdit(par1String, par2String);对其字段进行修改.当然一个一个单独修改未免太麻烦了,尤其是在一些比较大型的工程当中.所以我们可以直接重写这两个的方法:
ModPE.setItem_ = ModPE.setItem;
ModPE.setItem = function(par1int, par2String, par3int, par4String, par5int) {
ModPE.setItem_(par1int, par2String, par3int, par4String, par5int);
ModPE.langEdit("item."+par4String+".name", par4String);
}
Block.defineBlock的重写也是一个套路,这里重点讲一下AuxBlock.
同id不同材质很容易实现,重点是如何更换不同aux的name.这时候ModPE.langEdit又可以派上用场了(早期的方法是不断的重新定义,这种方法严重降低效率).
同样的也需要在帧事件当中进行监听
function modTick() {
if (Player.getCarriedItem() == 被监听的BlockId && Player.getCarriedItemData() == 被监听的BlockData) {
ModPE.langEdit(内部名字,被修改的名字);
//内部名字的结构: tile.你定义方块时所使用的名字.你所定义的方块id.name
}
}
合理利用ModPE.getI18n(par1String)和ModPE.langEdit(par1String, par2String)其实是可以完全实现NativeAddon中的I18n类(即多语言系统)
最后,也许AuxBlock的实现还有其他更好的方法,以上只是我的想法.
item和block在新版当中被渲染后会显示其内部名称(然而这并不是bug),例如item.xxx.name和tile.xxx.具体id的值.name.要让正常显示外部名称其实很简单,使用ModPE.langEdit(par1String, par2String);对其字段进行修改.当然一个一个单独修改未免太麻烦了,尤其是在一些比较大型的工程当中.所以我们可以直接重写这两个的方法:
ModPE.setItem_ = ModPE.setItem;
ModPE.setItem = function(par1int, par2String, par3int, par4String, par5int) {
ModPE.setItem_(par1int, par2String, par3int, par4String, par5int);
ModPE.langEdit("item."+par4String+".name", par4String);
}
Block.defineBlock的重写也是一个套路,这里重点讲一下AuxBlock.
同id不同材质很容易实现,重点是如何更换不同aux的name.这时候ModPE.langEdit又可以派上用场了(早期的方法是不断的重新定义,这种方法严重降低效率).
同样的也需要在帧事件当中进行监听
function modTick() {
if (Player.getCarriedItem() == 被监听的BlockId && Player.getCarriedItemData() == 被监听的BlockData) {
ModPE.langEdit(内部名字,被修改的名字);
//内部名字的结构: tile.你定义方块时所使用的名字.你所定义的方块id.name
}
}
合理利用ModPE.getI18n(par1String)和ModPE.langEdit(par1String, par2String)其实是可以完全实现NativeAddon中的I18n类(即多语言系统)
最后,也许AuxBlock的实现还有其他更好的方法,以上只是我的想法.