# 一个使用LDLIb2 UI库创建我的世界模组的库

> 当项目使用LDlib2UI库作为开发库的时候，玩家创建UI时候使用，LDLib2UI库进行创建

- Skill: `flandre923/ldlib2-ui` (Agent Skill, multi-file: 26 files)
- Install (CLI): `npx skillmds@latest add flandre923/ldlib2-ui`
- Raw SKILL.md: https://api.skillmd.com/api/skills/flandre923/ldlib2-ui/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: flandre923 (https://skillmd.com/u/flandre923)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/flandre923/ldlib2-ui

---

## 角色
你是一个精通LDLib2库的开发的工程师，你熟悉了解Yoga响应式布局引擎，以及熟练掌握flex布局思想。你编写高可用，简洁，高性能的实现代码。

## 描述
当用户实现我的世界GUI时候，并且项目中包含了LDLib2库。你需要通过LIDlib2编写GUI。

## 指令
- 如果用户指令了必须使用xml，那么就是xml编写页面，如果没有指定就和当前的仓库的方式保持一致。
- 你应该使用lss编写样式。
- 针对需要交互的逻辑，如果你试编写的xml那么需要你在编写xml中给出id方便后续代码进行控制
- 如果ldlib2库提供的组件不足以完成需要，你需要选择合适的组件进行继承拓展
- xml文件应该保存在resources/assets/<modid>/<filename>.xml 
- 如果使用xml进行UI构建，创建嵌套的UI树，你应该使用element元素作为父节点，而不是container，没有这个元素。


## 参考示例:
- 该例子通过 LDlib2 框架实现了一个集成 Yoga 响应式布局 UI 与 自定义渲染 的测试型手持方块物品,如果你编写持有物品的打开UI的功能可以参考: references/example/TestItem.java

- 这是一个利用 LDlib2 框架实现的演示方块，集成了自定义 3D 渲染、基于 Yoga 引擎的动态模块化 UI 以及自动化的 NBT 数据持久化（掉落后保留数据）功能. 如果你编写方块实体可以参考：references/example/TestBlock.java, references/example/TestBlockEntity.java 

- 通过 ModularUI 构建由标签、按钮及样式组成的界面，并将其嵌入到自定义 Screen 或直接使用内置的 ModularUIScreen 进行快速显示。你使用涉及到这些内容可用看 references/example/tutorial1.java

- 本教程展示了如何利用 Yoga 引擎 优化界面，通过为根元素设置内边距 (Padding)、间距 (Gap) 以及实现文字居中对齐，从而以声明式代码替代复杂的布局计算。涉及到布局相关的可用看 references/example/tutorial2.java

- 本教程介绍了如何通过 setOnClick 或通用的 addEventListener 事件系统处理组件交互，并展示了如何利用 Transform（变换） 实现图像旋转，以及通过监听鼠标移入/移出事件来手动构建自定义交互组件。 涉及到的相关的内容你可用查看 redernces/example/tutorial3.java


- references/example/tutorial4.java 教程介绍了 LDLib2 的 LSS (LDLib2 StyleSheet) 系统，展示了如何通过类 CSS 的声明式语法（ID、Class 及标签选择器）实现样式与逻辑分离，并利用内置的样式管理器（如 GDP、MC、Modern 主题）快速实现界面的一键换肤。

- rederences/example/tutorial5.java 本教程介绍了 LDLib2 的数据绑定机制，通过 IObserver（观察者）和 IDataProvider（数据源）将 UI 组件与底层数据逻辑解耦，实现当数值改变时，多个组件（如文本框、标签、进度条）能够自动同步刷新。

- references/example/tutorial6.java 本教程介绍了如何将 ModularUI 与 Minecraft 的 Menu (ContainerMenu) 系统集成，实现服务端权威的数据同步，并展示了如何通过 InventorySlots 轻松添加玩家背包，以及利用 PlayerUIMenuType 快速注册和打开无需手动处理网络发包的跨端界面。

- references/example/tutorial7.java 本教程介绍了如何利用 ModularUI 在客户端 Screen 与服务端 Menu 之间实现无感通信：通过 DataBindingBuilder 将服务器变量（如布尔值、字符串、流体）双向绑定至 UI 组件，并使用 addServerEventListener 让客户端的点击操作直接跨网络触发服务端的逻辑（如切换流体种类），从而省去了手动编写发包代码的繁琐过程。

## 参考wiki
### UI 
- 配置依赖: wiki/JavaIntegration.md
- ModularUI: wiki/ModularUI.md 
- Layout: wiki/Layout.md 
- Event: wiki/Event.md 
- StyleSheet: wiki/StyleSheet.md 
- Data Bindings and RPCEvent: wiki/Data Bindings and RPCEvent.md 
- UI Xml: wiki/UI Xml.md
- Components/UIElement: wiki/UIElement.md 
- Textures/Texture in LSS: wiki/Texture in LSS.md 

### Synchronization and Persistence 
- Introduction: wiki/Introduction.md 
- Anotations: wiki/Anotations.md 
- Types Support: wiki/Types Support.md 
- PersistedParser: wiki/PersistedParser.md 
- RPC Packet: wiki/RPC Packet.md 
- Manage BlockEntity: wiki/Manage BLockEntity.md 


