Skip to content

ZalithLauncher/RendererPlugin-v2

 
 

Repository files navigation

RendererPlugin V2

安卓端 Minecraft Java 版启动器的渲染器插件模板
本模板提供了一套 Kotlin DSL,用于在构建阶段将渲染器配置序列化为 JSON 并写入应用字符串资源
启动器通过读取 AndroidManifest.xml 中的 meta-data 来识别插件并加载渲染器库

使用模板

AndroidManifest.xml 中添加插件标记

<!-- 引用新架构渲染器配置 -->
<meta-data
    android:name="fclPlugin_V2"
    android:resource="@string/config" />

<!-- 可选:兼容旧版插件架构 -->
<!-- 如插件支持新架构,启动器不会同时加载旧版本配置 -->
<meta-data
    android:name="fclPlugin"
    android:value="true" />

启用 resValues,否则配置字符串无法正常写入

android {
    buildFeatures {
        resValues = true
    }
}

放置渲染器库
将编译好的 .so 文件放入 app/src/main/jniLibs/ 对应的 ABI 目录:

app/src/main/jniLibs/
├── arm64-v8a/
│   └── libxxx.so
├── armeabi-v7a/
│   └── libxxx.so
├── x86/
│   └── libxxx.so
└── x86_64/
    └── libxxx.so

DSL API 参考

renderer(...)

参数 类型 说明
displayName String 在启动器中显示的渲染器名称
rendererId String 渲染器 ID,启动器将其配置到环境变量 POJAV_RENDERER
rendererGLPath String 渲染器库路径,使用 nativePath() 构建
rendererEGLPath String 渲染器 EGL 库路径,使用 nativePath() 构建
dlopenLibPaths List<String> 需要额外 dlopen 的库路径列表
env List<Env> 环境变量列表,使用 buildEnvs() 构建
minMCVer String? 最低支持的 MC 版本号(如 "1.17"),null 不限制
maxMCVer String? 最高支持的 MC 版本号,null 不限制

nativePath(string)

nativePath("libXXX.so") // 返回 "**|libXXX.so"

**| 前缀拼接到库文件名前,启动器识别到此前缀后,会替换为插件实际的 nativeLibraryDir 路径

buildEnvs {}

normal(key, value)

固定环境变量,不可配置

normal("LIB_MESA_NAME", nativePath("libMesa.so"))

selectable(key, items, check?, title?)

可根据预设值自由选择值的环境变量,启动器会根据插件提供的选项,提供配置入口
该环境变量的值不支持拼接 nativeLibraryDir 路径

selectable(
    key = "GL_VERSION",
    title = RendererConfig.MetaString("title_gl_version"), // 可选:标题资源索引
    check = true, // 可选:给是否启用该环境变量的按钮提供一个默认值(true:默认启用,false:默认禁用,null:不显示按钮,始终启用)
    items = RendererConfig.EnvItems(
        defaultValue = "4.6",       // 默认值,且会被视为列表的其中一项,不必重复添加到 values 中
        values = buildList {        // 所有可选项
            add("4.5")
            add("3.3")
        }
    )
)

title 用于在 AndroidManifest.xml 中关联插件本地化字符串资源,需要额外声明 meta-data:

<meta-data
    android:name="title_gl_version"
    android:resource="@string/title_gl_version" />

customizable(key, defaultValue?, title?)

可由用户自行编辑值的环境变量,启动器将提供一个输入框,自定义该环境变量的值
该值为 null 或留空时,启动器不使用该环境变量
该环境变量的值不支持拼接 nativeLibraryDir 路径

customizable(
    key = "GL_VERSION",
    title = RendererConfig.MetaString("title_gl_version"), // 可选,见上
    defaultValue = "4.6"
)

toggleable(key, value, toggle, title?)

可开关的环境变量,启动器将提供一个开关,决定是否使用该环境变量

toggleable(
    key = "CUSTOM_ENV",
    value = "VALUE",
    toggle = false, // 默认为 true
    title = RendererConfig.MetaString("title_custom_env") // 可选,见上
)

DSL 插件

如果已有自己的项目,只需引用 DSL 插件即可使用相同的配置 DSL

settings.gradle.kts

pluginManagement {
    repositories {
        maven("https://jitpack.io")
        // ...
    }
}

build.gradle.kts

buildscript {
    dependencies {
        classpath("com.github.ZalithLauncher.RendererPlugin-v2:dsl:1.0.1")
    }
}

plugins {
    // ...
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages