minecraftpe吧 关注:639,411贴子:15,087,761

【技术/思维】ModAPI的实现技术与思维

只看楼主收藏回复

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平台。


IP属地:内蒙古来自Android客户端1楼2019-06-20 13:39回复
    如果是这样的话,Mod联动是个问题唉


    IP属地:北京来自Android客户端2楼2019-06-20 14:04
    收起回复
      sdl wsl


      IP属地:广东来自Android客户端3楼2019-06-20 14:52
      收起回复
        sdl wsl


        IP属地:四川来自Android客户端4楼2019-06-20 14:58
        收起回复
          我觉得mojang官方的api未来发展会更好,网易那个自己写的文档都漏洞百出,调试器还只能用他那个闪退无线的半成品IDE...


          IP属地:四川来自Android客户端5楼2019-06-20 15:58
          收起回复
            复杂的我不懂,镇楼我好了。


            来自Android客户端6楼2019-06-20 16:28
            回复
              大致意思就是 类似于弄一个标准函数库 然后别的mod开发者就只要调用?


              IP属地:河南来自Android客户端7楼2019-06-20 16:53
              收起回复
                告辞加载件已经在一些层面能吊打ModPE script了


                IP属地:新疆来自Android客户端8楼2019-06-20 17:55
                收起回复
                  se还在娘胎里呢,我觉得最靠谱的就是NMod


                  来自Android客户端9楼2019-06-20 17:56
                  收起回复
                    可以试试
                    我也有这种想法


                    IP属地:湖南10楼2019-06-20 19:45
                    回复
                      一个是bl函数确实有点缺,还有是一些自定义函数意义较大(比如说工具和矿石等)
                      特别的,modpe甚至可以和native addon结合起来(如果有谁还记得高版本Fz可以自定义电线导管连接)


                      IP属地:湖南11楼2019-06-20 20:01
                      收起回复
                        API的实现文件我倒觉得可以学学zheka
                        毕竟材质包是压缩文件,不便于改配置什么的


                        IP属地:湖南12楼2019-06-20 20:09
                        收起回复
                          有需要叫我一声


                          IP属地:湖南13楼2019-06-20 20:11
                          回复


                            IP属地:上海来自Android客户端14楼2019-06-21 06:33
                            收起回复
                              sdl wsl


                              IP属地:浙江来自Android客户端15楼2019-06-21 12:29
                              收起回复