使用说明

:::warning{title=版权警示} Lingmien Aether受软件著作权保护! :::

简介

旨在高效开发产品所用,集成优秀常用功能!推荐与自动化软件协作使用! :::success{title=统计信息}

  • 功能接口:152
  • 配置组件:5
  • 自动化开发:4
  • 副包开发(DLC):3
  • 开发指南:23 :::

更好的管理界面

使用说明

:::success{title=太棒了}

  • 现在使用始于2023年11月的自动化程序,可以直接完成客户端代码、服务端代码、依赖文件、注册模组信息。再也不用担心忘记了!
  • 从2024年11月29日开始,获取接口数据需要使用密钥,并将于2024年12月22日正式废弃原有获取方案
  • 现在调用接口系统后,补全库将不再需要注释就可以使用了! :::

:::code-group

import ...
from ClientLingmienAether import ClientLingmienAether

class ***ClientSystem(ClientSystem, ClientLingmienAether):  # 继承补全库,方便接口补全编写代码
  def __init__(self, namespace, systemName):
    ...
    # 调用接口系统
    self.LA = self.GetLASys('密钥')
    # 使用接口CreateDefaultUI注册并创建UI
    print self.LA.CreateDefaultUI(config.ModName, GlobalConfig.UIStartName, config.ScriptsName, True)
import ...
from ServerLingmienAether import ServerLingmienAether

class ***ServerSystem(ClientSystem, ServerLingmienAether):  # 继承补全库,方便接口补全编写代码
  def __init__(self, namespace, systemName):
    ...
    # 调用接口系统
    self.LA = self.GetLASys('密钥')
    # 使用接口ServerMsg给所有玩家发送消息
    for PlayerId in serverApi.GetPlayerList():
      self.LA.ServerMsg(PlayerId, '这是一条自定义消息')

:::

使用***自动化程序***来创建脚本文件!

注册模组信息(必要)

在UiInitFinished(客户端)事件下使用InitLingmienAetherMod(服务端)接口来注册你的mod信息

@Event.ClientEvent('UiInitFinished')
def UiInitFinished(self, *args):
  ModData = {
      'ModName': 'Lingmien Aether',
      'Version': '1.0.2',
      'LogoPath': 'textures/ui/LA/logo_text',
      'Content': 'Lingmien Aether(灵免以太)'
                  '\n版本:1.0.2'
                  '\n制作人员:大肥免开发组\n'
                  '\nLAAPI Mod前置组件管理器',
  }
  self.LA.UseServerApi('InitLingmienAetherMod', [ModData])

文件结构

  • ***Scripts脚本文件夹
    • ***Common
      • __init__.py
      • config.py脚本配置文件
    • ModClient客户端文件夹
      • uiScriptUI脚本文件夹
        • __init__.py
        • {UIName}.py对应{UIName}的脚本文件
      • __init__.py
      • ClientEventList客户端监听事件列表(使用监听装饰器,不推荐在此处编写监听事件)
      • ClientLingmienAether.py灵免以太客户端补全库
      • EventApi.py客户端监听事件装饰器
      • GlobalClientSystem.py客户端系统
    • ModServer服务端文件夹
      • __init__.py
      • EventApi.py服务端监听事件装饰器
      • ServerEventList服务端监听事件列表(使用监听装饰器,不推荐在此处编写监听事件)
      • ServerLingmienAether.py灵免以太服务端补全库
      • GlobalServerSystem.py服务端系统
    • __init__.py
    • modMain.py脚本系统(不推荐在此处编写代码)

特殊概念说明

实体

任一实体皆可使用,包含玩家。因此部分玩家上的功能也可以使用到实体接口来实现。

建筑

指多个方块组合的内容,通常用于大型内容,该概念需要与方块区分开来。

行为

涉及范围包含实体,即包含了玩家,更为功能性,例如检索敌人并造成伤害(GetAndAttackRadiusEntities)接口。

示例

# -*- coding:utf-8 -*-
...

class testClientSystem(ClientSystem, ClientLingmienAether):

    def __init__(self, namespace, systemName):
        super(testClientSystem, self).__init__(namespace, systemName)
        ...
        self.LA = self.GetLASys('密钥')
        self.IsQuery = False

    def Timer(self):
        if self.IsQuery:
            self.LA.CameraMotionRun(5, 0.5, 30, 0.9, 0.9, 1.0)

    @Event.ClientEvent('UiInitFinished')
    def OnLocalPlayerStopLoading(self, *args):
        self.LA.Msg('灵免以太')
        self.LA.QueryInit(playerId, 'la', 1.0)
        self.LA.Msg('函数query.mod.la初始化完毕结果为:{0}\n现在开始视角摇晃'.format(self.LA.QueryGet('la')))
        self.IsQuery = True
        self.LA.UseServerApi('PlaySound', [playerId, 'random.click'])
        self.LA.Msg('{0}'.format(type(self.LA.GetLingmienAetherManifest())))
        self.LA.Msg('我自己的三维坐标是:{0},在该坐标生成僵尸,玩家每5秒攻击周围的怪物'.format(self.LA.GetEntityPos(playerId)))
        self.LA.UseServerApi('SummonEntityByName', ['minecraft:zombie', self.LA.GetEntityPos(playerId)])
        compTimer.AddRepeatedTimer(5, self.LA.UseServerApi, 'GetAndAttackRadiusEntities', [playerId, 8, True, True, 3, 120.0])

如何进行开发/测试?

新建自己的项目

新建一个附加包,这就是你的模组项目。

使用自动化程序新建脚本文件夹

暂无自动化,需要手写。随后创建对测试环境的依赖配置。 在行为包behavior_pack_***的根目录中创建config文件夹(即和脚本文件夹同目录),在文件夹内新建文件netease_require.json.给自己的脚本设置灵免一台LingmienAether的依赖项。

  • behavior_pack_***行为包
    • config
      • netease_require.json 这是需要编写的模组依赖配置文件
    • ***Scripts 脚本文件夹
      • entities 原生基岩版Addon自带的必要的文件夹
      • resource_pack_***资源包
        {
            "modName":"test",
            "modRequire":[
                "LingmienAether" 
            ]
        }
        
        Key数据类型说明
        modNamestr模组名称,自行定义,推荐定义为主脚本的Modmain.py文件中定义的名称
        modRequirestrlist必须包含LingmienAether

        例如下列代码中的config.ModName便是这里需要填写的modName

        # -*- coding: utf-8 -*-
        from mod.common.mod import Mod
        import mod.server.extraServerApi as ServerApi
        import mod.client.extraClientApi as ClientApi
        from LACommon import config
        
        @Mod.Binding(name=config.ModName, version=config.ModVersion)
        class LAtest(object):
            def __init__(self):
                pass
        
            @Mod.InitServer()
            def LAServerInit(self):
                ServerApi.RegisterSystem(config.ModName, config.ServerSystemName, config.ServerSystemPath)
        
            @Mod.DestroyServer()
            def LAServerDestroy(self):
                pass
        
            @Mod.InitClient()
            def LAClientInit(self):
                ClientApi.RegisterSystem(config.ModName, config.ClientSystemName, config.ClientSystemPath)
        
            @Mod.DestroyClient()
            def LAClientDestroy(self):
                pass
        

        下载并导入测试环境

        点击顶部导航栏下载测试环境后,在MCS里导入它。

        测试你的项目

        写好脚本代码后,点击自己项目的开发测试,选择测试版本后,在右上角使用功能组件中勾选刚刚导入的测试环境组件一并运行即可正常测试。

        在你的模组简介添加前置说明

        由于模组需要有依赖文件,因此推荐在简介中作出如下说明

        评论交流

        文档目录

        灵免以太