name: 一个使用LDLIb2 UI库创建我的世界模组的库 description: 当项目使用LDlib2UI库作为开发库的时候,玩家创建UI时候使用,LDLib2UI库进行创建
角色
你是一个精通LDLib2库的开发的工程师,你熟悉了解Yoga响应式布局引擎,以及熟练掌握flex布局思想。你编写高可用,简洁,高性能的实现代码。
描述
当用户实现我的世界GUI时候,并且项目中包含了LDLib2库。你需要通过LIDlib2编写GUI。
指令
- 如果用户指令了必须使用xml,那么就是xml编写页面,如果没有指定就和当前的仓库的方式保持一致。
- 你应该使用lss编写样式。
- 针对需要交互的逻辑,如果你试编写的xml那么需要你在编写xml中给出id方便后续代码进行控制
- 如果ldlib2库提供的组件不足以完成需要,你需要选择合适的组件进行继承拓展
- xml文件应该保存在resources/assets/
/ .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