
x4ui
这是我的模组的UI框架。
X4UI 框架
一个为 Minecraft Forge 1.12.2 打造的现代化、高性能、面向对象的 GUI 框架。
🇬🇧 English
关于 X4UI
厌倦了处理硬编码坐标、混乱的 drawScreen 重写,以及古老的原版 Minecraft 1.12.2 GUI 系统中无穷无尽的 Bug 了吗?
X4UI 是一个从 Hammers Unbound 中提取出来的独立、灵活且动态的用户界面框架。它将现代网页式开发范式(如 FlexBox 布局、DOM 树结构和事件冒泡)直接带入了 Forge 1.12.2。
我什么时候应该使用 X4UI?
如果你正在构建以下内容,你应该使用 X4UI:
- 交互式指南或手册: 需要渲染格式化文本?X4UI 包含一个原生的
GuiMarkdown解析器,可自动将 Markdown 文本转换为美观、结构化的 UI 元素(标题、块引用、项目符号和图像)。 - RPG 技能树与复杂菜单: 嵌套面板、按钮、开关和滑块均会自动处理。
- 动态物品栏 / 自定义锻造台:
GuiScrollPanel提供了开箱即用的 OpenGL 裁剪(GL_SCISSOR_TEST),使您能够创建平滑、可滚动的物品列表,且物品不会渲染到边界框之外。
主要特点
- DOM 架构: 通过嵌套组件(
rootPanel.addChild(new GuiButton(...)))来构建您的 UI。 - FlexBox 布局:
GuiPanel支持具有间距和边距的自动VERTICAL和HORIZONTAL堆叠。不再需要手动计算 UI 位置! - 高性能(脏标记系统): 仅在组件实际发生变化时才重新计算布局,从而节省大量 CPU 资源,即使在拥有数百个元素的界面中也能防止 FPS 下降。
- 事件冒泡: 点击和滚动事件精确地遵循 Z 轴顺序。点击一个重叠的按钮将触发最顶层的按钮并停止向下传播。
- 微动画: 内置 lerp 逻辑,实现极其顺滑的悬停和点击过渡效果。
安装(面向开发者)
将以下内容添加到您的 build.gradle 中:
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
// 将 r1.0b1 替换为最新的发布标签
compile 'com.github.X4yi:X4UI:r1.0b1'
}
快速开始
要使用 X4UI,只需继承 GuiBaseScreen 而不是原版的 GuiScreen:
public class MyCustomScreen extends GuiBaseScreen {
public MyCustomScreen() {
super(null, "My Title");
}
@Override
protected void initComponents() {
// rootPanel 由 GuiBaseScreen 自动创建
rootPanel.setFlexDirection(FlexDirection.VERTICAL);
rootPanel.setGap(5);
GuiLabel titleLabel = new GuiLabel(0, 0, "Welcome to X4UI!");
GuiButton closeButton = new GuiButton(0, 0, 100, 20, "Close", () -> this.closeScreen());
rootPanel.addChild(titleLabel);
rootPanel.addChild(closeButton);
}
}
🇪🇸 Español
Sobre X4UI
¿Cansado de lidiar con coordenadas estáticas (hardcodeadas), sobreescrituras desordenadas de drawScreen e infinitos bugs en el arcaico sistema de interfaces de Vanilla Minecraft 1.12.2?
X4UI es un framework de interfaces de usuario dinámico, flexible e independiente, extraído del mod Hammers Unbound. Trae consigo los paradigmas de desarrollo web modernos (como diseños FlexBox, estructuras en árbol DOM y propagación de eventos) directamente a Forge 1.12.2.
¿Cuándo debería usar X4UI?
Deberías considerar usar X4UI si estás creando:
- Guías o Manuales Interactivos: ¿Necesitas renderizar texto con formato? X4UI incluye un analizador nativo
GuiMarkdownque convierte automáticamente texto en elementos de UI estructurados y hermosos (Encabezados, citas, viñetas e imágenes). - Árboles de Habilidades RPG y Menús Complejos: Los paneles anidados, botones, interruptores y deslizadores (sliders) se manejan automáticamente.
- Inventarios Dinámicos / Forjas Customizadas:
GuiScrollPanelproporciona recorte OpenGL nativo (GL_SCISSOR_TEST), permitiéndote crear listas de ingredientes desplazables y suaves sin que los ítems se rendericen fuera de la caja.
Características Principales
- Arquitectura DOM: Construye tu interfaz anidando componentes (
rootPanel.addChild(new GuiButton(...))). - Diseños FlexBox:
GuiPanelsoporta apilamiento automáticoVERTICALyHORIZONTALcon márgenes y separaciones. ¡Se acabó calcular matemáticas manuales para posicionar interfaces! - Alto Rendimiento (Dirty Flag System): Los diseños sólo se recalcularán matemáticamente cuando un componente cambia físicamente. Esto ahorra inmensas cantidades de procesamiento y previene caídas de FPS, incluso en menús con cientos de elementos.
- Propagación de Eventos: Los clics y el desplazamiento (scroll) respetan con precisión el índice Z. Hacer clic en un botón superpuesto activará el que esté por encima y detendrá la propagación a los de abajo.
- Micro-Animaciones: Lógica de interpolación (lerp) integrada para transiciones de "hover" (pasar el ratón por encima) y clics extremadamente fluidas.
Instalación (Para Desarrolladores)
Añade lo siguiente a tu build.gradle:
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
// Reemplaza r1.0b1 con la versión más reciente
compile 'com.github.X4yi:X4UI:r1.0b1'
}
Inicio Rápido
Para usar X4UI, simplemente extiende GuiBaseScreen en lugar del clásico GuiScreen de Vanilla:
public class MyCustomScreen extends GuiBaseScreen {
public MyCustomScreen() {
super(null, "Mi Título");
}
@Override
protected void initComponents() {
// rootPanel es creado automáticamente por GuiBaseScreen
rootPanel.setFlexDirection(FlexDirection.VERTICAL);
rootPanel.setGap(5);
GuiLabel titleLabel = new GuiLabel(0, 0, "¡Bienvenido a X4UI!");
GuiButton closeButton = new GuiButton(0, 0, 100, 20, "Cerrar", () -> this.closeScreen());
rootPanel.addChild(titleLabel);
rootPanel.addChild(closeButton);
}
}
X4UI 是开源项目,并根据 GNU 通用公共许可证 v3 (GPL-3.0) 提供。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。