跳到正文

LDLib2 [Fabric]

作者:TysonTheEmber

LDLib2 的 Fabric 移植版。

收藏

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

LDLib2

一款现代 Minecraft 模组开发前置库,提供 UI、渲染、同步、持久化和游戏内编辑器功能。

GitHub stars
CurseForge downloads
Modrinth downloads
Latest Maven version
NeoForge
License

文档 |
Java 集成 |
UI 指南 |
Compose |
Discord |
CurseForge |
Modrinth


LDLib2 是对原版 LDLib 的全面重写,专为现代 Minecraft 和 NeoForge 开发重新设计。它为模组作者提供更高层级的开发基础,让你无需在每个项目中重复搭建基础设施,就能创建 UI、游戏内工具、由渲染器驱动的内容、同步数据以及可持久化的运行时系统。

功能亮点

LDLib2 UI showcase
LDLib2 UI
使用 Taffy 布局、LSS 样式表、可复用组件、XML 定义、数据绑定、RPC 事件和 HUD 覆盖层,打造 Minecraft 界面。
A Kotlin composable next to the LDLib2 panel it renders
Compose UI
在 Kotlin 中基于 Compose runtime,以状态为输入编写界面函数。列表、标签页和对话框会随数据变化,每个控件也都是真正的 LDLib2 元素。作为可选的 ldlib2-compose 模组提供。
Data synchronization and persistence overview
数据同步与持久化
使用 @Persisted、@DescSynced 和 RPC 辅助工具标注字段,即可自动生成 NBT 读写、编解码器、脏字段同步和数据包传输,大幅减少样板代码。
Annotated fields next to the property editors LDLib2 generates
可配置属性
将带注解的 Java 对象转换为可供检查的属性面板,支持范围、选择器、列表、物品和流体选择器、搜索框、撤销历史及持久化。
Node Graph Toolkit editor
节点图工具包
创建游戏内图编辑器,支持节点、端口、连线、变量、子图、黑板、自动布局、可撤销命令以及基于资源的图形资产。
LDLib2 in-game UI editor
游戏内编辑器框架
打造 Unity、Blender 或 Blockbench 风格的工具,支持可停靠视图、项目文件、资源浏览器、检查器、历史记录、可重新绑定的快捷键和设置。
LDLib2 XEI integration
渲染与集成
使用 LDLib2 的着色器、纹理、模型渲染和场景工具,并集成 JEI、REI、EMI、KubeJS 及 Java 插件入口。
A Snake HUD opened and driven by an LDLib2 UI test scenario
UI 测试工具
编写测试场景,在真实客户端中打开真实 UI,通过点击和输入进行操作,等待服务端同步,并保存截图和报告。支持无头运行、并行运行,或在专用服务器上搭配多个客户端运行。同一套脚本还可以录制文档视频,并与测试分开保存:包含平滑指针、点击涟漪、按键显示、双语字幕、聚光和缩放效果,并直接编码为 MP4(-PldRecord,参见 uitest.md)。

Java 集成

LDLib2 已发布到 FirstDark Maven snapshots 仓库。

repositories {
    maven { url = "https://maven.firstdark.dev/snapshots" }
}

dependencies {
    implementation("com.lowdragmc.ldlib2:ldlib2-neoforge-${minecraft_version}:${ldlib2_version}:all")
}

对于 2.2.1 之前的 LDLib2 版本,请禁用传递依赖并手动添加 Yoga:

dependencies {
    implementation("com.lowdragmc.ldlib2:ldlib2-neoforge-${minecraft_version}:${ldlib2_version}:all") {
        transitive = false
    }
    compileOnly("org.appliedenergistics.yoga:yoga:1.0.0")
}

建议的项目变量:

minecraft_version=1.21.1
ldlib2_version=2.2.44

可选:Compose UI

Compose UI 是一个独立模组 ldlib2-compose,由你的模组以 Jar-in-Jar 方式打包分发。它基于 Kotlin 编写,需要使用与 Kotlin 插件版本相同的 Kotlin Compose 编译器插件。

其版本号以适用的 Minecraft 版本开头:21.0.0.1 是首个适用于 1.21.1 的版本,每个 Minecraft 版本都有独立构建。目前仅发布了 1.21.1 版本。

dependencies {
    implementation "com.lowdragmc.ldlib2:ldlib2-compose-1.21.1:21.0.0.1"
    jarJar(group: 'com.lowdragmc.ldlib2', name: 'ldlib2-compose-1.21.1') {
        version { require '[21.0.0.1,)'; prefer '21.0.0.1' }
    }
}

关于插件、仓库和 设置,请参阅 可选模块:ldlib2-composeneoforge.mods.toml。

LDLib 插件入口

如果你的模组需要注册 LDLib2 资源、集成或启动钩子,请创建一个插件类。

import com.lowdragmc.lowdraglib2.plugin.ILDLibPlugin;
import com.lowdragmc.lowdraglib2.plugin.LDLibPlugin;

@LDLibPlugin
public class MyLDLibPlugin implements ILDLibPlugin {
    @Override
    public void onLoad() {
        // Register LDLib2 extensions here.
    }
}

快速 UI 示例

此示例会创建一个简单的 ModularUI,包含标签、按钮和经过样式设置的根元素。

public class MyScreenUi {
    public static ModularUI createUi() {
        var root = new UIElement()
                .layout(layout -> layout.paddingAll(7).gapAll(5))
                .style(style -> style.background(Sprites.BORDER));

        root.addChildren(
                new Label().setText("My First LDLib2 UI"),
                new Button()
                        .setText("Click Me")
                        .setOnClick(event -> {
                            // Handle the click here.
                        })
        );

        return ModularUI.of(UI.of(root));
    }
}

完整操作说明请参阅 UI 入门指南。

使用 Compose UI 时,界面是一个由状态驱动的 Kotlin 函数;状态变化时,界面元素也会随之更新:

@Composable
fun Counter() {
    var count by remember { mutableStateOf(0) }

    Column(layout = { width(120.px); padding { all(6.px) }; gap { all(4.px) } }) {
        Text("Clicked $count times")
        Button(onClick = { count++ }, text = "Click")
    }
}

fun openCounter() {
    val mc = Minecraft.getInstance()
    val mui = composeModularUI(mc.player, StylesheetManager.MODERN) { Counter() }
    mc.setScreen(ModularUIScreen(mui, Component.literal("Counter")))
}

开发者工具

如果你正在开发 LDLib2,建议安装 LDLib Dev Tool IDEA 插件,以便在编辑器中获得针对 LDLib2 特定文件和注解的辅助功能。Java 集成指南介绍了代码高亮、语法检查、跳转到定义、自动补全和注解支持。

从 LDLib 迁移

LDLib2 并非对 LDLib 的小幅修补。它移除了旧系统,并针对 Minecraft 1.21+ 重建了核心架构。

  • 旧版 UI 和过时的框架组件已移除。
  • UI 布局、样式、事件和数据流都经过重新设计。
  • 文档和示例均围绕新架构编写。
  • 兼容性工作重点面向现代 NeoForge 和当前的模组开发集成。

链接

许可证

LDLib2 使用 LGPL-3.0 许可证。

常见问题

LDLib2 [Fabric] 支持哪些 Minecraft 版本?

LDLib2 [Fabric] 支持 Minecraft Java 版 26.1–26.1.2,共 3 个版本,可用的加载器:Fabric。下载时注意选择和你游戏版本一致的文件。

LDLib2 [Fabric] 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

TysonTheEmber 的其他作品

查看全部 →