【技术/思维】ModAPI的实现技术与思维
minecraftpe吧
全部回复
仅看楼主
level 13
ErrP-血狼 楼主
ModAPI是什么?简单的说就是一个Mod给其他Mod提供的接口,通过这些接口,可以使主Mod之下的子APIMod使用主Mod的函数/方法,以提高代码的利用率,以及建立子APIMod与主Mod之间的联系并进行信息交换。
API已经应用于多个我们所熟知的Mod,如几年前的[PE]Factorization因式分解、现在的[PE]InnerCore、[PC]Forge、[PC]工业时代2及其衍生、[PC]热力膨胀各版本及其衍生、[PC]格雷科技各版本及其衍生等,都应用了API。通过API,Mod们可以把一个Mod做不完的、Mod可拓展的内容进一步开发,并且若是提供开放性接口,甚至是其他的开发者也可以使用已经写好的方法拓展出更多的Mod。
例如,我写了一套自定义物品工具的算法,算法被我写成一个方法setTool(),而我将该方法作为API开放,那么以后其他ModPE就可以通过使用setTool()方法(前提是客户已安装API)快速构建一个工具物品。
Minecraft是一款自由度极高的沙盒游戏,包括其可拓展空间,非常庞大。以后定是Mod们百家争鸣的局面:ScriptEngine与行为包,甚至有可能看似过气的ModPE和NativeAddon(或NMod)也可以参战。在众多Mod作品中,必定存在可重复利用的、传奇的算法/方法,通过API,可以使所有Mod都可以使用这些算法,极大地减少了Mod的开发时间和提高了Mod的丰富性,使开发者们成为同一个Mod开发家庭。
下面通过ModPE对API的实现进行讨论,为未成熟的SE和其他以后的任何Mod提供实现思维。
多个ModPE之间并不能直接进行沟通,我们需要一个信息中转站,让所有ModPE都能使用统一位置的库----Minecraft材质包是一个不错的选择。使用BlockLauncher载入材质包的功能(.zip或.modpkg),载入一个材质包,在材质包的assets文件夹里放入API的实现文件,再通过eval( new java.lang.String( ModPE.getBytesFromTexturePack( assets目录下文件路径 ), "UTF-8" ) + "" );将API引入APIMod。
该实现思维可用于以后成熟的SE或其他Mod平台。
2019年06月20日 05点06分 1
level 14
如果是这样的话,Mod联动是个问题唉
2019年06月20日 06点06分 2
都没人做呢😂
2019年06月20日 06点06分
有什么问题?
2019年06月20日 08点06分
@ErrP-血狼 直接eval的话,每个mod的js的内存空间里同一个函数都不是“同一个”函数,同一个变量也不是“同一个”变量,更没有公用的域供多个不同的mod调用“同一个”信息,就会导致一个mod访问不到另一个mod内的任何信息,除非后者mod刻意通过其他方式(比如存储信息到本地文本文件)传递
2019年06月20日 08点06分
@ErrP-血狼 唯一做到的就是不同mod仅能使用同一套算法而已,如果仅靠这一个API,一个mod不能更改另一个mod中的任何信息[摊手]
2019年06月20日 08点06分
level 11
sdl wsl
2019年06月20日 06点06分 3
sdl wsl
2019年06月20日 09点06分
level 14
sdl wsl
2019年06月20日 06点06分 4
sdl wsl
2019年06月20日 09点06分
level 13
我觉得mojang官方的api未来发展会更好,网易那个自己写的文档都漏洞百出,调试器还只能用他那个闪退无线的半成品IDE...
2019年06月20日 07点06分 5
会的吧
2019年06月20日 08点06分
level 2
复杂的我不懂,镇楼我好了。[滑稽]
2019年06月20日 08点06分 6
level 14
大致意思就是 类似于弄一个标准函数库 然后别的mod开发者就只要调用?
2019年06月20日 08点06分 7
是的
2019年06月20日 09点06分
@ErrP-血狼 那这个函数库名声得非常大才行⑧,要不然大家都不知道有这么个库,谈何标准化[暗中观察]
2019年06月20日 10点06分
@elf-32 确实
2019年06月20日 10点06分
@elf-32 不过初衷不是直接发布库,而是把库放在mod里
2019年06月20日 10点06分
level 14
告辞[吃瓜]加载件已经在一些层面能吊打ModPE script了
2019年06月20日 09点06分 8
我这是在讨论思路,不是让你去写ModPE
2019年06月20日 10点06分
吊打?[阴险]
2019年06月20日 10点06分
@ErrP-血狼 [阴险]开发难度[阴险]教程人性化(虽然恶心但是比ModPE好)[阴险]语言标准(面对对象)
2019年06月20日 10点06分
@ErrP-血狼 算了上面的都是废话[阴险]跨平台
2019年06月20日 10点06分
level 7
se还在娘胎里呢,我觉得最靠谱的就是NMod
2019年06月20日 09点06分 9
话不是这么说,
2019年06月20日 10点06分
它稳定就就是最稳定的,它差劲闪退的比谁都快
2019年06月20日 10点06分
@ErrP-血狼 哈哈,都要看开发者的本事
2019年06月20日 10点06分
level 8
可以试试
我也有这种想法
2019年06月20日 11点06分 10
level 8
一个是bl函数确实有点缺,还有是一些自定义函数意义较大(比如说工具和矿石等)
特别的,modpe甚至可以和native addon结合起来(如果有谁还记得高版本Fz可以自定义电线导管连接)
2019年06月20日 12点06分 11
自定义那个求告知
2019年06月24日 13点06分
@贴吧用户_QteJ9A7 icrender.apk
2019年06月25日 13点06分
level 8
API的实现文件我倒觉得可以学学zheka
毕竟材质包是压缩文件,不便于改配置什么的
2019年06月20日 12点06分 12
zheka的方法可以试试
2019年06月20日 12点06分
level 8
有需要叫我一声
2019年06月20日 12点06分 13
level 12
膜
2019年06月20日 22点06分 14
[阴险]
2019年06月21日 05点06分
level 14
sdl wsl
2019年06月21日 04点06分 15
nsdl wsl
2019年06月21日 05点06分
@ErrP-血狼 wbsdl wsl
2019年06月21日 05点06分
@1003917294 bbb njsdl wsl
2019年06月21日 05点06分
@ErrP-血狼 wzdsmxl ncsdl wsl
2019年06月21日 05点06分
1 2 尾页