跳到主要内容

GUI组件介绍

在使用GUI部分功能时,建议先了解以下列出的十二种组件.

每种组件的第一行索引名可以自定义,<type:>决定了你所选用的组件类型.

组件有一些相通的属性字段例如,tooltip,initDos等,且每个组件内不需要的字段都是可以删除的,例如options的startX,如果不需要可以整行删除


基本选项

一个GUI界面最多只能有一个基本选项(options)

#options标识符表示设置这个GUI的参数(该标识符可全部删除)
options:
#设置起始坐标轴,你可以根据你的习惯来设置这个界面的原点。(如果删除此行,默认为MC界面的最上边)
startX: "w*0.01"
#设置起始坐标轴,你可以根据你的习惯来设置这个界面的原点。(如果删除此行,默认为MC界面的最左边)
startY: "10"
#此界面的优先级 优先级越大 越不会被遮住 (物品模型的默认优先级都很大,要想把物品模型遮住,Z轴就要很大) 不懂不要管 直接删去就可以 默认为 0
startZ: "10"
#当width不为零时 设置 startX 为 right center 分别会将startX的坐标起始点设置为 最右边 中间
width: "0"
#当height不为零时 设置 startY 为 bottom center 分别会将startY的坐标起始点设置为 最下边 中间
height: "0"
#打开一次后就在客户端删除该界面的缓存(就是打开并关闭后,需要重载才能再打开,给写插件时用的,写配置直接删去)可删除 默认false
consume: false
#是否开启编辑模式,开启后将会绘制指针的坐标位置(可删除,默认为false)
#开启后可用鼠标拖动组件位置和大小,按下S键切换至大小设置模式,按下V键切换至位置设置模式,设置时可中途右键鼠标放弃当前任务
guide: false
#详细教程看 http://docs.germmc.com/zh/%E3%80%906%E3%80%91GUI/99%EF%BC%8C%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%84%9A%E6%9C%AC
#一般用来做脚本处理时的数据,填写json
data: |
{
num:10,
}
#variables字段,例如下方的示例,则可以在该ui内的字段里直接使用 `{{a}}` `{{c.d}}` 来获取variable内的值
variables: |
{
a:1,
c:{
d:3
}
}
#当点击无组件的地方时 是否要丢出鼠标上的物品 (在颠覆界面无需使用)
dropCursorItem: false
#是否取消ESC关闭界面 (可删除默认为 false)
escCancel: false
#是否是置顶的HUD 默认为false
topperHud: false
#是否需要与hud交互 默认为false 开启后打开界面可以直接与HUD交互,可以做到把GUI的物品拖到HUD上之类的操作
interactiveHud: false
#如果该界面在最顶层 开启下面选项后 按下ESC只会关闭这个界面 (关闭escCancel才有效,可删除默认为false)
escCloseOnly: false
#是否开启背景虚化 默认为false 也可以设置虚化的具体时间 例如 1000 代表1秒
blur: false
#当界面被关闭的时候会触发
closeDos:
- "message<->thisGui界面被关闭了"
#当玩家在此界面按下按键时触发
#不支持keyup的组合按键
#不支持鼠标滚轮点击的响应
keyDos:
keyDown@U:
- "message<->按下了 U 键"
keyDown@LSHIFT@A:
- "message<->按下了 左SHIFT + A 键"
keyDown@LSHIFT@MLEFT:
- "message<->按下了 左SHIFT + 鼠标左键"
keyUp@U:
- "message<->松开了 U 键"
#点击到拖动bar是否吞掉点击操作
#这样就不会穿透点击到其他组件了
dragSwallow: true
#这里设置窗口拖动的参数 删掉代表无法拖动
drag:
#可拖动区域的坐标
locationX: "0"
locationY: "0"
#可拖动区域的宽度
width: "100"
#可拖动区域的高度
height: "100"
#布局器 它可以帮助你填充组件进去
#如果在options参数中使用需要设置options内的width和height
layout:
#布局器类型 FLOW 将根据组件的宽高 自动瀑布流式的填充进容器
type: FLOW
# 组件间隙
gapX: "5"
gapY: "5"
# 组件填充 每个组件前填充一个指定大小的空白距离
# 与组件间隙的区别在于 第一个组件前是否有空隙
fillX: "5"
fillY: "5"
#打开界面时的声音,删除此行默认无声
openSound: "minecraft:block.anvil.use"
#打开GUI时执行一些关于GUI的特殊操作 以下称为dos(可删除)
#dos都是以 标记<->参数 的形式书写 不同的标记拥有不同的功能
openDos: |
message<->开了界面thisGui
#每次滚动滚轮会触发的dos %scroll_change% 为本次滚动了多少距离 有正负之分
scrollDos:
- "message<->滚动了%scroll_change%"
#所有dos都还支持列表的这种写法
#但是更推荐上面的长字符串的这种写法,可以利用缩进格式增加可读性
#openDos:
# - "openChild<->default3" #打开一个子窗口(default3也是一个gui目录下的yml文件)
#这个界面中支持动画的部件共有的动画,目前动画还不是所有部件兼容,但是后面会一个一个兼容直到全部兼容(可删除)
#目前兼容动画的部件有 GIF 图片 按钮 字符串 物品模型
animations:
- "default_move"

基本选项【例子】方便复制这条可无视 后期明白了记不住可直接复制

XX界面:
options:
startX: "w*0.5"
startY: "h*0.5"
startZ: "10"


图片组件

#图片组件
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
texture:
#是否开启这个组件 (关闭后任何效果、显示、互动、功能啥的都不存在了,就跟没有似的) (可删除默认为显示)
# 如果将 enable 后面的 true或false 设置某个条件 将自动匹配条件开关
# 例如填写 enable: "%player_health% = 100" 当玩家的血量到达100时才会开启该组件
# 例如填写 enable: "str(%player_has_permission_germ_gui%,true) || str(%player_has_permission_germ_gui%,true) " 当玩家拥有权限germ_gui时才会显示
#以下每个部件都有这个选项 不再列出
enable: true
#悬浮时候显示的tooltip就跟原版悬浮到道具时显示的lore界面一样(可删除 默认为不显示)
#以下每个部件都有这个选项 不再列出
tooltip:
- '&c我是悬浮的时候被显示出来的那个'
#type作为标记这个部件是什么类型
type: texture
#吞掉点击 默认false
#这样就不会穿透点击到其他组件了
swallow: false
#视口剔除 默认为false
#根据组件的位置和大小来剔除不在视口内的组件 (视口指 游戏窗口和滚动框形成的可视窗口)
#注意的是 开启后如果组件的位置和大小设置不正确可能会被隐藏 例如实体模型组件
viewportCulling: false
#图片的材质路径地址可以使用 local<->地址
#还支持base64编码的图片 例如 base64<->base64Code 萌芽自带的api=com.germ.germplugin.api.util.ImageUtil.bufferedImageToBase64(bufferedImage, formatName) 其他编码方法java.util.Base64.getEncoder().encodeToString
#同时支持网络连接地址 前面必须加上标记 url<-> 例如:url<->https://s1.ax1x.com/2020/06/19/NnqzVK.png
#其中 local<->可以省略,但是url<->必须加上
#当这样写 path: 'url<->https://xxx.png' 时,萌芽MOD会将图片缓存在GermCache根目录下
#但是也可以这样写 path: 'textures/url<->https://xxx.png' 这样萌芽MOD会将图片缓存在 GermCache/textures/目录下方便分类管理
path: 'local<->textures/misc/logo.png'
#图片的显示起始坐标(图片的左上角为起始点)
locationX: "w-90"
locationY: "h-90"
#优先级 通常情况下删了就可以了
locationZ: "0"
#这里也可以直接使用x代替locationX y代替locationY z代替locationZ
#x: "w"
#y: "h"
#z: 100
#宽度width和高度height也同样支持运算符和 w h 变量 w代表整个MC的宽度
#使用 tw1 可以代表在path填下的图片的真实宽度
width: "50"
#使用 th1 可以代表在path填下的图片的真实高度
height: "50"
#简写 w h
#w: "50"
#旋转
rotateY: "0"
rotateX: "0"
rotateZ: "0"
#这四个参数可以截取图片的一部分渲染 详情见wiki https://wiki.germmc.com/gui/gui_component.html
#小技巧 当UV大于图片本身的真实宽高时 会自动循环截取图片 可以用来做平铺到满屏的背景效果
startU: '10'
startV: '10'
endU: "20"
endV: "20"
#从startU开始 截取后面的10个像素 (4.4.0+)
widthU: "10"
heightV: "10"
#自动九宫格缩放
#在调整宽时 水平方向上 会只缩放 splitU 指定的一段
#在调整高时 垂直方向上 会只缩放 splitV 指定的一段来
#填固定数字时 注意是图片的真实纹理大小
#注意使用了 startU endU startV endV 时 splitU splitV 需要根据裁剪后的区域设置splitU splitV
splitU: '10'
splitV: '10'
#当界面打开的时候 组件第一次加载后触发该Dos
#所有组件都有这个Dos因为篇幅 下面不在罗列
initDos:
- "message<->我是界面 thisGui 的组件 thisPart"
#所有组件都有这个Dos 下面不在罗列
tickDos: |
message<->我是tickdos
#这个图片的动画(可删除)
animations:
- "default_scale"
`
### 图片组件【简略版例子】

```yaml
texture:
type: texture
path: 'local<->textures/misc/logo.png'
locationX: "w-tw1/2"
locationY: "h-th1/2"
width: "tw1"
height: "th1"
`


**UV为截取图片中的一部分显示出来,其中黑框为图片原始大小,红框为图片截取范围,灰线的长度为对应UV的大小**
![uv.png](/uv.png)


**locationZ可以理解为组件离下图红色框体的距离,**
> 要注意的是在设置实体与物品的locationZ时,因为实体和物品是立体的,所以其本身也占了一定的Z轴大小


![locationz.png](/locationz.png)

---



## **颜色块组件**

```yaml
#颜色块组件
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
color:
type: color
#形状 有太多了 暂时默认0即可 后面再列出
shape: 0
#厚度
thickness: "1"
#半径
radius: "1"
#吞掉点击 默认false
#这样就不会穿透点击到其他组件了
swallow: false
#视口剔除 默认为false
#根据组件的位置和大小来剔除不在视口内的组件 (视口指 游戏窗口和滚动框形成的可视窗口)
#注意的是 开启后如果组件的位置和大小设置不正确可能会被隐藏 例如实体模型组件
viewportCulling: false
locationX: "w*0.1"
locationY: "h*0.1"
#优先级 通常情况下删了就可以了
locationZ: "0"
width: "w*0.1"
height: "h*0.8"
#颜色块的颜色为RGBA,请在前面加上0x,如果不了解什么是RGBA可以搜索 什么是RGBA
color: 0x88888800
#颜色块的末尾颜色,可以形成渐变色(可删除)删除后为纯色
endColor: 0x88888800

颜色块组件【简略版例子】

color:
type: color
locationX: "w-50/2"
locationY: "h-50/2"
width: "50"
height: "50"
color: 0x88888800
`



---

## 序列帧组件

```yaml
#序列帧组件
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
frame:
type: frame
#同样支持url<->xxx.png
frames:
- "textures/misc/logo.png"
- "textures/misc/buffer.png"
#吞掉点击 默认false
#这样就不会穿透点击到其他组件了
swallow: false
#视口剔除 默认为false
#根据组件的位置和大小来剔除不在视口内的组件 (视口指 游戏窗口和滚动框形成的可视窗口)
#注意的是 开启后如果组件的位置和大小设置不正确可能会被隐藏 例如实体模型组件
viewportCulling: false
#切换到下一帧的时间 单位毫秒
hz: 50
#这个gif播放几遍后停止,-1是无限循环
cycle: -1
#最后一遍渲染暂停在第几帧(1为第一帧) 写-1为播放完成后消失 (默认为-1)
pause: -1
locationX: "w*0.26"
locationY: "h*0.11"
locationZ: "0"
# 旋转
rotateY: "0"
rotateX: "0"
rotateZ: "0"
#使用 tw1 可以代表在path填下的图片的真实宽度
width: "w*0.53"
#使用 th1 可以代表在path填下的图片的真实高度
height: "h*0.58"
#这四个参数可以截取图片的一部分渲染 详情见wiki https://wiki.germmc.com/gui/gui_component.html
startU: '10'
startV: '10'
endU: "10"
endV: "10"
#自动九宫格缩放
#在调整宽时 水平方向上 会只缩放 splitU 指定的一段
#在调整高时 垂直方向上 会只缩放 splitV 指定的一段
#填固定数字时 注意是图片的真实纹理大小
splitU: '10'
splitV: '10'
#这个图片的动画(可删除)
animations:
- "default_move"

序列帧组件【简略版例子】

frame:
type: frame
frames:
- "textures/misc/logo.png"
- "textures/misc/buffer.png"
hz: 50
locationX: "w-tw1/2"
locationY: "h-th1/2"
locationZ: "0"
width: "tw1"
height: "th1"
`


---



## gif图片组件

```yaml
#gif图片组件
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
gif:
type: gif
#同样支持url<->xxx.png
path: 'local<->textures/gif/ghast.gif'
#这个gif播放几遍后停止,-1是无限循环
cycle: -1
#最后一遍渲染暂停在第几帧(1为第一帧) 写-1为播放完成后消失 (默认为-1)
pause: -1
#吞掉点击 默认false
#这样就不会穿透点击到其他组件了
swallow: false
#视口剔除 默认为false
#根据组件的位置和大小来剔除不在视口内的组件 (视口指 游戏窗口和滚动框形成的可视窗口)
#注意的是 开启后如果组件的位置和大小设置不正确可能会被隐藏 例如实体模型组件
viewportCulling: false
locationX: "w*0.26"
locationY: "h*0.11"
locationZ: "0"
# 旋转
rotateY: "0"
rotateX: "0"
rotateZ: "0"
#使用 tw1 可以代表在path填下的图片的真实宽度
width: "w*0.53"
#使用 th1 可以代表在path填下的图片的真实高度
height: "h*0.58"
#这四个参数几乎不用 不要填 直接删了就好
startU: '10'
startV: '10'
endU: "10"
endV: "10"
#自动九宫格缩放
#在调整宽时 水平方向上 会只缩放 splitU 指定的一段
#在调整高时 垂直方向上 会只缩放 splitV 指定的一段
#填固定数字时 注意是图片的真实纹理大小
splitU: '10'
splitV: '10'
#这个图片的动画(可删除)
animations:
- "default_move"

gif图片组件【简略版例子】

gif:
type: gif
#同样支持url<->xxx.png
path: 'local<->textures/gif/ghast.gif'
#这个gif播放几遍后停止,-1是无限循环
cycle: -1
#最后一遍渲染暂停在第几帧(1为第一帧) 写-1为播放完成后消失 (默认为-1)
pause: -1
locationX: "w*0.26"
locationY: "h*0.11"
locationZ: "0"
width: "w*0.53"
height: "h*0.58"
`


---



## 视频组件

> 该组件需要购买视频组件拓展方可使用



```yaml
#视频组件
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
video:
type: video
#同样支持url<->https://mz.eastday.com/61673377.mp4
path: "url<->https://mz.eastday.com/61673377.mp4"
#播放几遍后停止,-1是无限循环
cycle: -1
#音量,填0-100
#可以用%sound_volume_master%取得玩家客户端的音量
volume: 100
#是否播放
#可以用dos暂停和播放视频
play: true
#播放完毕后是否停在最后一帧 默认为false
holdLastFrame: false
#是否异步加载视频 默认为true
async: true
#吞掉点击 默认false
#这样就不会穿透点击到其他组件了
swallow: false
#视口剔除 默认为false
#根据组件的位置和大小来剔除不在视口内的组件 (视口指 游戏窗口和滚动框形成的可视窗口)
#注意的是 开启后如果组件的位置和大小设置不正确可能会被隐藏 例如实体模型组件
viewportCulling: false
#当前播放的时间 单位秒
#设置 10 将从十秒后开始播放
#可以用dos动态设置该值做到进度条
#可以使用%thisGui_thisPart_length%变量得到这个视频的长度
time: 0
locationX: "w*0.26"
locationY: "h*0.11"
locationZ: "0"
#使用 tw1 可以代表在path填下的图片的真实宽度
width: "w*0.53"
#使用 th1 可以代表在path填下的图片的真实高度
height: "h*0.58"
#这四个参数可以截取一部分渲染 详情见wiki https://wiki.germmc.com/gui/gui_component.html
startU: '10'
startV: '10'
endU: "10"
endV: "10"
#这个图片的动画(可删除)
animations:
- "default_move"

视频组件【简略版例子】

video:
type: video
#同样支持url<->https://mz.eastday.com/61673377.mp4
path: "url<->https://mz.eastday.com/61673377.mp4"
#播放几遍后停止,-1是无限循环
cycle: -1
#音量,填0-100
#可以用%sound_volume_master%取得玩家客户端的音量
volume: 100
#是否播放
#可以用dos暂停和播放视频
play: true
#当前播放的时间 单位秒
#设置 10 将从十秒后开始播放
#可以用dos动态设置该值做到进度条
#可以使用%thisGui_thisPart_length%变量得到这个视频的长度
time: 0
locationX: "w*0.26"
locationY: "h*0.11"
locationZ: "0"
#使用 tw1 可以代表在path填下的图片的真实宽度
width: "w*0.53"
#使用 th1 可以代表在path填下的图片的真实高度
height: "h*0.58"
`


---



## 按钮组件

```yaml
#按钮组件
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
button:
type: button
#按钮默认的图片、GIF(如果填的是gif文件就会渲染成gif)
defaultPath: 'local<->textures/misc/warn.png'
#鼠标悬浮到按钮时的图片、GIF(如果填的是gif文件就会渲染成gif)
hoverPath: 'local<->textures/misc/logo.png'
#悬浮时改变defaultPath的颜色 此选项可以作为没有悬浮效果贴图的备选方案
hoverColor: 0xFFAAAAAA
#悬浮到按钮播放声音(可删除)
hoverSound: 'minecraft:ui.button.click'
#点击按钮播放声音(可删除)
clickSound: 'minecraft:ui.button.click'
#按钮无效时点击按钮播放声音(可删除)
invalidSound: 'none'
#交互冷却 单位毫秒 默认 100ms
interactCooldown: 100
locationX: "w*0.3"
locationY: "h*0.1"
locationZ: "0"
#使用 tw1 可以代表在defaultPath填下的图片的真实宽度
#使用 tw2 可以代表在hoverPath填下的图片的真实宽度
width: "w*0.1"
#使用 th1 可以代表在defaultPath填下的图片的真实高度
#使用 th2 可以代表在hoverPath填下的图片的真实高度
height: "h*0.2"
#吞掉点击 默认true
#这样就不会穿透点击到其他组件了
swallow: true
#视口剔除 默认为false
#根据组件的位置和大小来剔除不在视口内的组件 (视口指 游戏窗口和滚动框形成的可视窗口)
#注意的是 开启后如果组件的位置和大小设置不正确可能会被隐藏 例如实体模型组件
viewportCulling: false
#是否是禁止点击悬浮的
invalid: false
#默认的按钮动画(可删除)
animations:
- "default_rotate"
#悬浮到按钮时的动画(可删除)
hoverAnimations:
- "default_rotate"
#是否开启真实的边缘计算悬浮检测
#默认为false
#开启后会根据defaultPath的透明区域生成检测区域 只有悬浮在非透明区域才算悬浮
realHover: false
#默认文字对齐模式 可删除
align: "center"
#默认字符串大小 默认1
textScale: "1"
#是否渲染文字阴影 默认为 true
textShadow: true
#是否渲染阴影 默认为 true
hoverTextShadow: true
#自动换行的像素长度 每行超过长度的字符串将会自动被换行到下一行 (默认为不自动换行)
textSplitWidth: "100"
#自动换行的像素长度 每行超过长度的字符串将会自动被换行到下一行 (默认为不自动换行)
hoverTextSplitWidth: "100"
#渲染该button上的字体使用的ttf字体名 ttf 字体要放入 assets/germmod/font/ 下,字体名就是文件名去掉.ttf后缀
#放入字体后可以在germmod.cfg 填写读取字体的精度 不写默认是27
#强烈不建议放入过多的字体,耗玩家客户端内存
#可删除 默认为 minecraft 的原版字体
font: "default"
#加载的特殊字体的文字大小,仅对特殊字体ttf有效 默认为27
fontSize: 27
#字体描边 范围 [0-1] 默认为0
stroke: 0
#字体描边颜色 默认为 0xFF000001
strokeColor: 0xFF000001
#在单行中超过该长度的文本将会被渲染为省略号
omitWidth: "w*0.1"
#默认字符串将显示在按钮中间,支持PAPI变量(可删除)
texts:
- "&e亲爱的: %player_name%"
- "&e这是按钮"
#自动九宫格缩放
#在调整宽时 水平方向上 会只缩放 splitU 指定的一段
#在调整高时 垂直方向上 会只缩放 splitV 指定的一段
#填固定数字时 注意是图片的真实纹理大小
splitU: '10'
splitV: '10'
hoverSplitU: '10'
hoverSplitV: '10'
#对齐模式 可删除
hoverAlign: "center"
#渲染该button上的字体使用的ttf字体名 ttf 字体要放入 assets/germmod/font/ 下,字体名就是文件名去掉.ttf后缀
#放入字体后可以在germmod.cfg 填写读取字体的精度 不写默认是27
#强烈不建议放入过多的字体,耗玩家客户端内存
#可删除 默认为 minecraft 的原版字体
hoverFont: "default"
#加载的特殊字体的文字大小,仅对特殊字体ttf有效 默认为27
hoverFontSize: 27
#字体描边 范围 [0-1] 默认为0
hoverStroke: 0
#字体描边颜色 默认为 0xFF000001
hoverStrokeColor: 0xFF000001
#在悬浮的情况单行中超过该长度的文本将会被渲染为省略号
hoverOmitWidth: "w*0.1"
#悬浮字符串大小 默认1
hoverTextScale: "1"
#悬浮字符串,介绍同上(可删除)
hoverTexts:
- "&c亲爱的: %player_name%"
- "&c这是按钮"
#在根据对齐方式对齐后坐标再偏移多少
textOffsetX: "1"
textOffsetY: "1"
textOffsetZ: "1"
#在根据对齐方式对齐后坐标再偏移多少
hoverTextOffsetX: "1"
hoverTextOffsetY: "1"
hoverTextOffsetZ: "1"
#这些dos更多的是用来写配置界面时使用,如果您是开发者这些几乎用不到
#点击的时候执行dos,这里的dos在任何dos中都适用(可删除)
clickDos:
- "openChild<->leftMenu"
rightDos: #鼠标右键时候执行dos(可删除)
- "openChild<->rightMenu"
#鼠标悬浮时候执行dos(可删除)
hoverDos:
- "open<->null" #关闭界面
#鼠标悬浮离开后执行dos(可删除)
leaveDos:
- "open<->null" #关闭界面
shiftClickDos:
- "open<->null"
shiftRightDos:
- "open<->null"
#鼠标中间点击
middleDos:
- "open<->null" #关闭界面
shiftMiddleDos:
- "open<->null" #关闭界面

按钮组件【简略版例子】

button:
type: button
defaultPath: 'local<->textures/misc/warn.png'
hoverPath: 'local<->textures/misc/logo.png'
#悬浮到按钮播放声音(可删除)
hoverSound: 'minecraft:ui.button.click'
#点击按钮播放声音(可删除)
clickSound: 'minecraft:ui.button.click'
#交互冷却 单位毫秒 默认 100ms
interactCooldown: 100
locationX: "w*0.3"
locationY: "h*0.1"
locationZ: "0"
width: "w*0.1"
height: "h*0.2"
#吞掉点击 默认true
#这样就不会穿透点击到其他组件了
swallow: true
#默认文字对齐模式 可删除
align: "center"
#默认字符串大小 默认1
textScale: "1"
#默认字符串将显示在按钮中间,支持PAPI变量(可删除)
texts:
- "&e亲爱的: %player_name%"
- "&e这是按钮"
#在根据对齐方式对齐后坐标再偏移多少
textOffsetX: "1"
textOffsetY: "1"
textOffsetZ: "1"
`


---



## 复选框组件

```yaml
#复选框组件
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
checkbox:
type: checkbox
#复选框默认的图片、GIF(如果填的是gif文件就会渲染成gif)
defaultPath: 'local<->textures/misc/warn.png'
#鼠标悬浮到复选框时的图片、GIF(如果填的是gif文件就会渲染成gif)
hoverPath: 'local<->textures/misc/logo.png'
#悬浮时改变defaultPath的颜色 此选项可以作为没有悬浮效果贴图的备选方案
hoverColor: 0xFFAAAAAA
#checkbox的组别 相同组的checkbox选中时 会把同组的其他checkbox取消选中 默认为没有分组
group: "group1"
#是否在选择的情况下交换 defaultPath hoverPath texts hoverTexts 默认为false
checkedSwap: false
#复选框被选中的时候渲染图片、GIF(如果填的是gif文件就会渲染成gif)
checkedPath: "local<->textures/misc/checked.png"
#悬浮到按钮播放声音(可删除)
hoverSound: 'minecraft:ui.button.click'
#点击按钮播放声音(可删除)
clickSound: 'minecraft:ui.button.click'
#按钮无效时点击按钮
invalidSound: 'none'
#交互冷却 单位毫秒 默认 100ms
interactCooldown: 100
#复选框的选择状态 跟enable一样 可以写成条件的形式
#状态会以变量 %界面名_复选框索引名_checked% 该界面为 %default_checkbox_checked% 的形式存入变量库 值为true或false
checked: true
locationX: "w*0.3"
locationY: "h*0.1"
locationZ: "0"
width: "w*0.1"
height: "h*0.2"
#是否开启真实的边缘计算悬浮检测
#默认为false
#开启后会根据defaultPath的透明区域生成检测区域 只有悬浮在非透明区域才算悬浮
realHover: false
#复选框被选择后渲染的图片或gif的大小 不写就和width,height一样大
checkedWidth: "w*0.1"
checkedHeight: "h*0.2"
#吞掉点击 默认true
#这样就不会穿透点击到其他组件了
swallow: true
#视口剔除 默认为false
#根据组件的位置和大小来剔除不在视口内的组件 (视口指 游戏窗口和滚动框形成的可视窗口)
#注意的是 开启后如果组件的位置和大小设置不正确可能会被隐藏 例如实体模型组件
viewportCulling: false
#是否是禁止点击悬浮的
invalid: false
#默认的按钮动画(可删除)
animations:
- "default_rotate"
#悬浮到按钮时的动画(可删除)
hoverAnimations:
- "default_rotate"
#默认文字对齐模式 可删除
align: "center"
#默认字符串大小 默认1
textScale: "1"
#渲染该button上的字体使用的ttf字体名 ttf 字体要放入 assets/germmod/font/ 下,字体名就是文件名去掉.ttf后缀
#放入字体后可以在germmod.cfg 填写读取字体的精度 不写默认是27
#强烈不建议放入过多的字体,耗玩家客户端内存
#可删除 默认为 minecraft 的原版字体
font: "default"
#加载的特殊字体的文字大小,仅对特殊字体ttf有效 默认为27
fontSize: 27
#字体描边 范围 [0-1] 默认为0
stroke: 0
#字体描边颜色 默认为 0xFF000001
strokeColor: 0xFF000001
#在单行中超过该长度的文本将会被渲染为省略号
omitWidth: "w*0.1"
#默认字符串将显示在按钮中间,支持PAPI变量(可删除)
texts:
- "&e亲爱的: %player_name%"
- "&e这是按钮"
#自动九宫格缩放
#在调整宽时 水平方向上 会只缩放 splitU 指定的一段
#在调整高时 垂直方向上 会只缩放 splitV 指定的一段
#填固定数字时 注意是图片的真实纹理大小
splitU: '10'
splitV: '10'
hoverSplitU: '10'
hoverSplitV: '10'
#对齐模式 可删除
hoverAlign: "center"
#渲染该button上的字体使用的ttf字体名 ttf 字体要放入 assets/germmod/font/ 下,字体名就是文件名去掉.ttf后缀
#放入字体后可以在germmod.cfg 填写读取字体的精度 不写默认是27
#强烈不建议放入过多的字体,耗玩家客户端内存
#可删除 默认为 minecraft 的原版字体
hoverFont: "default"
#字体描边 范围 [0-1] 默认为0
hoverStroke: 0
#字体描边颜色 默认为 0xFF000001
hoverStrokeColor: 0xFF000001
#加载的特殊字体的文字大小,仅对特殊字体ttf有效 默认为27
hoverFontSize: 27
#在悬浮的情况单行中超过该长度的文本将会被渲染为省略号
hoverOmitWidth: "w*0.1"
#悬浮字符串大小 默认1
hoverTextScale: "1"
#悬浮字符串,介绍同上(可删除)
hoverTexts:
- "&c亲爱的: %player_name%"
- "&c这是按钮"
#对齐模式 可删除
checkedAlign: "center"
#渲染该button上的字体使用的ttf字体名 ttf 字体要放入 assets/germmod/font/ 下,字体名就是文件名去掉.ttf后缀
#放入字体后可以在germmod.cfg 填写读取字体的精度 不写默认是27
#强烈不建议放入过多的字体,耗玩家客户端内存
#可删除 默认为 minecraft 的原版字体
checkedFont: "default"
#字体描边 范围 [0-1] 默认为0
checkedStroke: 0
#字体描边颜色 默认为 0xFF000001
checkedStrokeColor: 0xFF000001
#加载的特殊字体的文字大小,仅对特殊字体ttf有效 默认为27
checkedFontSize: 27
#在悬浮的情况单行中超过该长度的文本将会被渲染为省略号
checkedOmitWidth: "w*0.1"
#悬浮字符串大小 默认1
checkedTextScale: "1"
#悬浮字符串,介绍同上(可删除)
checkedTexts:
- "&c亲爱的: %player_name%"
- "&c这是按钮"
#在根据对齐方式对齐后坐标再偏移多少 默认0
textOffsetX: "1"
textOffsetY: "1"
textOffsetZ: "1"
#checked的图片偏移原位置的左上角多少 默认0
checkedOffsetX: "0"
checkedOffsetY: "0"
checkedOffsetZ: "0"
#这些dos更多的是用来写配置界面时使用,如果您是开发者这些几乎用不到
checkedDos:
- 'message<->你选择上了'
cancelledDos:
- 'message<->你取消了选择'
clickDos:
- "open<->null" #关闭界面
rightDos: #鼠标右键时候执行dos(可删除)
- "openChild<->rightMenu"
#鼠标悬浮时候执行dos(可删除)
hoverDos:
- "message<->你在thisGui界面悬浮上了复选框组件thisPart" #关闭界面
#鼠标悬浮离开后执行dos(可删除)
leaveDos:
- "message<->你在thisGui界面悬离开悬浮复选框组件thisPart" #关闭界面

复选框组件【简略版例子】

checkbox:
type: checkbox
#复选框默认的图片、GIF(如果填的是gif文件就会渲染成gif)
defaultPath: 'local<->textures/misc/warn.png'
#鼠标悬浮到复选框时的图片、GIF(如果填的是gif文件就会渲染成gif)
hoverPath: 'local<->textures/misc/logo.png'
#复选框被选中的时候渲染图片、GIF(如果填的是gif文件就会渲染成gif)
checkedPath: "local<->textures/misc/checked.png"
#悬浮到按钮播放声音(可删除)
hoverSound: 'minecraft:ui.button.click'
#点击按钮播放声音(可删除)
clickSound: 'minecraft:ui.button.click'
#交互冷却 单位毫秒 默认 100ms
interactCooldown: 100
#复选框的选择状态 跟enable一样 可以写成条件的形式
#状态会以变量 %界面名_复选框索引名_checked% 该界面为 %default_checkbox_checked% 的形式存入变量库 值为true或false
checked: true
locationX: "w*0.3"
locationY: "h*0.1"
locationZ: "0"
width: "w*0.1"
height: "h*0.2"
#复选框被选择后渲染的图片或gif的大小 不写就和width,height一样大
checkedWidth: "w*0.1"
checkedHeight: "h*0.2"
#吞掉点击 默认true
#这样就不会穿透点击到其他组件了
swallow: true
#默认文字对齐模式 可删除
align: "center"
#默认字符串大小 默认1
textScale: "1"
#默认字符串将显示在按钮中间,支持PAPI变量(可删除)
texts:
- "&e亲爱的: %player_name%"
- "&e这是按钮"
hoverOmitWidth: "w*0.1"
#悬浮字符串大小 默认1
hoverTextScale: "1"
#悬浮字符串,介绍同上(可删除)
hoverTexts:
- "&c亲爱的: %player_name%"
- "&c这是按钮"
checkedDos:
- 'message<->你选择上了'
cancelledDos:
- 'message<->你取消了选择'
clickDos:
- "open<->null" #关闭界面
rightDos: #鼠标右键时候执行dos(可删除)
- "openChild<->rightMenu"
#鼠标悬浮时候执行dos(可删除)
hoverDos:
- "message<->你在thisGui界面悬浮上了复选框组件thisPart" #关闭界面
#鼠标悬浮离开后执行dos(可删除)
leaveDos:
- "message<->你在thisGui界面悬离开悬浮复选框组件thisPart" #关闭界面

文本组件

RGBA颜色详见此处 >>> 传送门

#文本组件
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
label:
type: label
#文字的对齐方式 左对齐 left 右对齐 right 居中 center 可删除 默认为left
align: "center"
#吞掉点击 默认false
#这样就不会穿透点击到其他组件了
swallow: false
#视口剔除 默认为false
#根据组件的位置和大小来剔除不在视口内的组件 (视口指 游戏窗口和滚动框形成的可视窗口)
#注意的是 开启后如果组件的位置和大小设置不正确可能会被隐藏 例如实体模型组件
viewportCulling: false
#缩放 注意引号 可用 w h 计算 1为原大小
#当对字体缩放时是非常不友好的 很容易丢失像素
scale: '1'
#渲染该button上的字体使用的ttf字体名 ttf 字体要放入 assets/germmod/font/ 下,字体名就是文件名去掉.ttf后缀
#放入字体后可以在germmod.cfg 填写读取字体的精度 不写默认是27
#可删除 默认为 minecraft 的原版字体
font: "default"
#加载的特殊字体的文字大小,仅对特殊字体ttf有效 默认为27
fontSize: 27
#字体描边 范围 [0-1] 默认为0
stroke: 0
#字体描边颜色 默认为 0xFF000001
strokeColor: 0xFF000001
#是否渲染阴影 默认为 true
shadow: true
#行间距 默认为0
lineSpace: '0'
#自动换行的像素长度 每行超过长度的字符串将会自动被换行到下一行 (默认为不自动换行)
splitWidth: "w*0.4+40"
#在单行中超过该长度的文本将会被渲染为省略号
omitWidth: "w*0.1"
#每个字弹出的时间 单位ms 不设置是默认直接显示
popTime: "100"
#字符串
texts:
- "使用#C80800FF萌芽引擎#ACDA70D6可以在任何地方使用RGBA&c来控制字体颜色!"
- "它的格#FA008080式是这样#FFFFAACD的#号后面跟上RGBA值"
- "像#FFB22222这样#a8F9C4A3其中,#号#C9FDF5E6后面一定要跟8位16#FFB0E0E6进制数"
- "#FFFF69B4并且这16#FF7B68EE进制数的字母都要大写。"
- "#FFFF69B4-FFBBAACC这种格式写令颜色渐变哦!"
- "亲爱的: %player_name%" #支持变量
- "您的世界: %world_name%" #甚至支持/tellraw 的 json格式 !!!
- "[{\"text\":\"我骑上了心爱的小摩托~\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/say 嘟嘟嘟嘟嘟~\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"他永远也不退堵车\"}}},{\"text\":\"你好呀你好呀\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"溜溜溜啊\"}}}]"
locationX: "w*0.5"
locationY: "h*0.5"
locationZ: "0"
#这个图片的动画(可删除)
animations:
- "default_move"

文本组件【简略版例子】

label:
type: label
#文字的对齐方式 左对齐 left 右对齐 right 居中 center 可删除 默认为left
align: "center"
scale: '1'
texts:
- "使用#C80800FF萌芽引擎#ACDA70D6可以在任何地方使用RGBA&c来控制字体颜色!"
locationX: "w*0.5"
locationY: "h*0.5"
locationZ: "0"

输入框组件

#输入框组件
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
input:
type: input
# 是否将输入的内容替换为*
password: false
#是否在按下enter后自动清空 默认为 true
autoClear: true
#是否将&变为§ 也就是说是否允许玩家输入颜色 默认为 false
replaceColor: true
#是否开启默认的背景 默认为true
background: true
#网易屏蔽字检测 开启后服务端的事件会在通过检测后触发 对客户端的脚本无效 默认为false
#不到迫不得已 不建议使用该选项 在附属内调用 com.germ.germplugin.api.util.FilterUtil.neteaseCheckText() 更好
neteaseCheck: false
#吞掉点击
swallow: true
#视口剔除 默认为false
#根据组件的位置和大小来剔除不在视口内的组件 (视口指 游戏窗口和滚动框形成的可视窗口)
#注意的是 开启后如果组件的位置和大小设置不正确可能会被隐藏 例如实体模型组件
viewportCulling: false
#在输入框内没有字的时候预览
preview: '请在这里输入...'
#限制输入的字符长度 默认为 32
limit: 7
#是否作为焦点 默认为 false
focus: true
#是否永久聚焦 默认为 false 如果设置为true 不管玩家的鼠标点击了哪里 都可以输入内容进去
permanentFocus: false
#正则验证 符合正则表达式的才允许输入进去 默认为空
# [^(0-9)] 填入后只能输入数字
# [^(A-Za-z)] 填入后只能输入字母
# [^(\u4e00-\u9fa5)] 填入后只能输入中文
# 更多表达式自行百度
regular: "[^(0-9)]"
#是否实时同步内容到服务端 默认为 false(开发者使用的选项,写配置文件直接删去)
sync: false
#填入clear 或者 留空 为清空输入框 默认为 空
#变量库中会有一个变量实时等于该输入槽中的内容
#可以在其他dos中引用 变量为 %界面名_输入槽索引名_input% 该界面为 %default_input_input%
#注意,在输入框作为滚动框,画布等组件的子组件时 要注意 %界面名_画布组件索引名$输入槽索引名_input% 多级嵌套以此类推
input: '默认内容'
#是否使失效 默认为 false
invalid: false
width: "w*0.4"
height: "h*0.1"
#文本自动换行模式(超过输入框的文本换行) 默认为不换行
autoWrap: false
locationX: "w*0.2"
locationY: "h*0.7"
locationZ: "0"
# 输入脚本 输入内容为 input
enterScript: |
Log.chat(input);
#为了方便 专门为input添加了变量%input% 只有在input中 %input% 会被替换为输入槽的内容
enterDos:
- "opcmd<->say &a亲爱的 &e%player_name% &a想说 %input%"

输入框组件【简略版例子】

input:
type: input
autoClear: true
#是否将&变为§ 也就是说是否允许玩家输入颜色 默认为 false
replaceColor: true
#是否开启默认的背景 默认为true
background: true
#网易屏蔽字检测 开启后服务端的事件会在通过检测后触发 对客户端的脚本无效 默认为false
#不到迫不得已 不建议使用该选项 在附属内调用 com.germ.germplugin.api.util.FilterUtil.neteaseCheckText() 更好
neteaseCheck: false
#吞掉点击
swallow: true
#在输入框内没有字的时候预览
preview: '请在这里输入...'
#限制输入的字符长度 默认为 32
limit: 7
#正则验证 符合正则表达式的才允许输入进去 默认为空
# [^(0-9)] 填入后只能输入数字
# [^(A-Za-z)] 填入后只能输入字母
# [^(\u4e00-\u9fa5)] 填入后只能输入中文
# 更多表达式自行百度
regular: "[^(0-9)]"
#填入clear 或者 留空 为清空输入框 默认为 空
#变量库中会有一个变量实时等于该输入槽中的内容
#可以在其他dos中引用 变量为 %界面名_输入槽索引名_input% 该界面为 %default_input_input%
#注意,在输入框作为滚动框,画布等组件的子组件时 要注意 %界面名_画布组件索引名$输入槽索引名_input% 多级嵌套以此类推
input: '默认内容'
width: "w*0.4"
height: "h*0.1"
locationX: "w*0.2"
locationY: "h*0.7"
locationZ: "0"


扩展槽位组件

#扩展槽位组件
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
slot:
type: slot
#槽位的宽和高 默认 16(可以使用 w h) 例如:size: 'w*0.1' 或 size: 'h*0.1' 或 size: ' w / h * 0.1'
size: "36"
#物品大小 默认和size一样大
itemSize: "36"
#是否是禁止所有状态(点不了,没声音,悬浮没变化)
invalid: true
#是否允许与该槽位交互(可以点,有声音,但是无法进行操作)
interact: true
#交互冷却 单位毫秒 默认 100ms
interactCooldown: 100
#物品的右下角的角标内容(可以用来做出超过64个的物品的假储存器)
subscript: "128"
#角标文字大小 默认和size一样大
subscriptSize: 16
#这个选项的意思是不同步槽位里面的物品到客户端
#一般客户端脚本会用这个选项 或者 只做预览时 使用GermPacketAPI.sendItemStack发送
sync: true
#该槽位中的物品冷却时是否显示冷却白色遮罩 默认 true
showCooldownMask: true
#该槽位中的物品冷却时是否显示冷却文字 默认 true
showCooldownText: true
#GermPlugin提供了一些基本的保存、属性、时装槽为功能,前缀要设置为germplugin_
#如果您是开发者 需要别的处理逻辑 推荐使用 处理该槽位的插件全名小写_用来逻辑判断的字符
identity: "germplugin_default"
#当槽位内有物品时显示的图片 填gif就可以显示为gif
fillPath: 'local<->textures/gui/slot.png'
#当鼠标悬浮到槽位上时的白色遮罩贴图
maskPath: 'textures/misc/translucent.png'
#当槽位为空的时候显示的图片 填gif就可以显示为gif
emptyPath: 'local<->textures/gui/slot.png'
hoverSound: 'minecraft:ui.button.click'
clickSound: 'minecraft:ui.button.click'
locationX: "w*0.7"
locationY: "h*0.5"
locationZ: "0"
#背景的偏移量 默认为0
backgroundOffsetZ: "0"
#此外还有 fillStartU fillStartV fillEndU fillEndV fillWidthU fillHeightV 如果不设置将读取 不带fill的值 (4.4.0+)
startU: '10'
startV: '10'
endU: "10"
endV: "10"
widthU: "20"
heightV: "20"
#自动九宫格缩放
#在调整宽时 水平方向上 会只缩放 splitU 指定的一段
#在调整高时 垂直方向上 会只缩放 splitV 指定的一段
#填固定数字时 注意是图片的真实纹理大小
splitU: '10'
splitV: '10'
#可以直接把下面这个物品填进格子里
#配合interact(关闭槽位的互动)使用可以做一个物品的展示界面
#展示界面的identity 前缀不要加 germplugin_
#
#可以手持某个物品输入/gp misc save然后在GermPlugin/Items.yml中获得这个物品的配置
#支持NeigeItems插件物品,格式为 itemStack: NeigeItems:id
#支持MythicMobs插件物品,格式为 itemStack: mmid:id
itemStack:
==: org.bukkit.inventory.ItemStack
type: DIAMOND_SWORD
meta:
==: ItemMeta
meta-type: UNSPECIFIC
display-name: '§2我是名字'
lore:
- '§f我是描述第一行'
- '§7颜色符请用§'

扩展槽位组件【简略版例子】

slot:
type: slot
size: "36"
itemSize: "36"
#是否是禁止所有状态(点不了,没声音,悬浮没变化)
invalid: true
#是否允许与该槽位交互(可以点,有声音,但是无法进行操作)
interact: true
identity: "germplugin_default"
fillPath: 'local<->textures/gui/slot.png'
emptyPath: 'local<->textures/gui/slot.png'
hoverSound: 'minecraft:ui.button.click'
clickSound: 'minecraft:ui.button.click'
locationX: "w*0.7"
locationY: "h*0.5"
locationZ: "0"

注意:扩展槽位组件可以与原版槽位挂钩,即在identity:填入下表内对应id即可挂钩

Tips:当任意界面内存在对应原版槽位id的扩展槽位,基于萌芽引擎的附属插件才能够通过对应id获取到物品哦

germplugin_main_hand #对应原版背包槽位里当前主手所在槽位
germplugin_off_hand #对应原版背包槽位里副手槽位
germplugin_armor_helmet #对应原版背包槽位里头盔槽位
germplugin_armor_chestplate #对应原版背包槽位里胸甲槽位
germplugin_armor_leggings #对应原版背包槽位里裤子槽位
germplugin_armor_boots #对应原版背包槽位里鞋子槽位
germplugin_backpack_0 #对应原版背包槽位里0号槽位
germplugin_backpack_1 #对应原版背包槽位里1号槽位
...
germplugin_backpack_35 #对应原版背包槽位里35号槽位

items_slot_number.png


物品组件

#物品组件
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
#item 组件 可以在界面中单独渲染出这个物品
item:
type: item
#这个物品渲染的大小
size: '30'
#width height这两个是因为每个模型的大小都不同 没办法自适应大小判断悬浮 所以可以重新指定判断悬浮的大小区域 不会对实际渲染造成影响
width: '10'
height: '10'
locationX: '100'
locationY: '100'
locationZ: "0"
#是否显示item组件的tooltip 默认false
itemTooltip: false
#吞掉点击 默认false
#这样就不会穿透点击到其他组件了
swallow: false
#视口剔除 默认为false
#根据组件的位置和大小来剔除不在视口内的组件 (视口指 游戏窗口和滚动框形成的可视窗口)
#注意的是 开启后如果组件的位置和大小设置不正确可能会被隐藏 例如实体模型组件
viewportCulling: false
#渲染眼前的眼前的方块 默认为false
#设置为true时不需要设置itemStack
#支持带皮肤的头颅方块 需要旋转时请使用旋转动画
sightBlock: false
#如果没有设置itemStack 会采用identity的物品 需要用指令或者API发送
identity: germplugin_item_show1
#配置物品 支持mm物品,格式为 itemStack: mmid
#支持NeigeItems插件物品,格式为 itemStack: neigeid
itemStack:
==: org.bukkit.inventory.ItemStack
type: DIAMOND_SWORD
meta:
==: ItemMeta
meta-type: UNSPECIFIC
display-name: '§2我是名字'
lore:
- '§f我是描述第一行'
- '§7颜色符请用§'
animations:
- 'default_rotate'

物品组件【简略版例子】

item:
type: item
size: '30'
width: '10'
height: '10'
locationX: '100'
locationY: '100'
locationZ: "0"
#渲染眼前的眼前的方块 默认为false
#设置为true时不需要设置itemStack
#支持带皮肤的头颅方块 需要旋转时请使用旋转动画
sightBlock: false
itemStack:
==: org.bukkit.inventory.ItemStack
type: DIAMOND_SWORD
meta:
==: ItemMeta
meta-type: UNSPECIFIC
display-name: '§2我是名字'
lore:
- '§f我是描述第一行'
- '§7颜色符请用§'


基岩粒子组件

# 基岩粒子组件
particle:
type: particle
enable: true
# 基岩粒子特效文件 路径省略effect/particles/
path: ""
#吞掉点击
swallow: true
#视口剔除 默认为false
#根据组件的位置和大小来剔除不在视口内的组件 (视口指 游戏窗口和滚动框形成的可视窗口)
#注意的是 开启后如果组件的位置和大小设置不正确可能会被隐藏 例如实体模型组件
viewportCulling: false
# 缩放比例
scale: "1"
# 组件旋转角度
yaw: "0"
pitch: "0"
# 组件位置
locationX: "w*0.2"
locationY: "h*0.7"
locationZ: "0"
#这个组件的动画(可删除)
animations:
- "default_move"

基岩粒子组件【简略版例子】

particle:
type: particle
# 基岩粒子特效文件 路径省略effect/particles/
path: "default.json"
# 缩放比例
scale: "2"
# 组件旋转角度
yaw: "0"
pitch: "0"
# 组件位置
locationX: "1"
locationY: "1"
locationZ: "0"
`


---



## 实体模型组件

```yaml
#实体模型组件
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
entity:
type: entity
enable: true
#该模型头顶的名字 当用 cursor self时不用设置该项
#填写 $cancel 将不显示头顶的名字
name: "萌芽引擎"
#模型种类
#填写 cursor 为玩家面前的生物
#填写 self 为自己
#填写某个原版模型的名字会渲染呢个生物出来 名字大全请在wiki上看
#填写某带有皮肤的UUID会渲染出带有这个皮肤的玩家模型
model: 'self'
#吞掉点击 默认false
#这样就不会穿透点击到其他组件了
swallow: false
#视口剔除 默认为false
#根据组件的位置和大小来剔除不在视口内的组件 (视口指 游戏窗口和滚动框形成的可视窗口)
#注意的是 开启后如果组件的位置和大小设置不正确可能会被隐藏 例如实体模型组件
viewportCulling: false
#实体穿着的装备 可以根据需要添加对应的物品 支持时装,特效等模型的匹配
#当实体身上本身就有装备时,会在渲染时替换掉原本的装备
#头盔 helmet
#胸甲 chestplate
#护腿 leggings
#靴子 boots
#主手 mainhand
#副手 offhand
equipment:
#主手 支持mm物品,格式为 mainhand: mmid (后期可能会支持更多物品库 如有需求可以联系开发组)
#支持NeigeItems插件物品,格式为 itemStack: neigeid
mainhand:
==: org.bukkit.inventory.ItemStack
type: DIAMOND_SWORD
meta:
==: ItemMeta
meta-type: UNSPECIFIC
display-name: '§2我是名字'
#模型是否看向鼠标 默认为 true
followCursor: true
#如果不是看向鼠标的 可以设置模型看向的位置
lookAtX: "w*0.5"
lookAtY: "h*0.5"
#任务的X轴旋转角度
rotateX: "180"
#人物的Y轴旋转角度
#配合横向滑动条的变量%guiName_partName_scrolledH%可以制作360人物模型预览
rotateY: "180"
#人物的Z轴旋转角度
rotateZ: "0"
#模型的大小
size: "30"
#width height这两个是因为每个模型的大小都不同 没办法自适应大小判断悬浮 所以可以重新指定判断悬浮的大小区域 不会对实际渲染造成影响
width: '10'
height: '10'
locationX: "w*0.1"
locationY: "h*0.73"
locationZ: "0"
animations:
- "default_rotate"

实体模型组件【简略版例子】

entity:
type: entity
name: "萌芽引擎"
model: 'self'
#模型是否看向鼠标 默认为 true
followCursor: true
#如果不是看向鼠标的 可以设置模型看向的位置
lookAtX: "w*0.5"
lookAtY: "h*0.5"
#人物的X轴旋转角度
rotateX: "180"
#人物的Y轴旋转角度
#配合横向滑动条的变量%guiName_partName_scrolledH%可以制作360人物模型预览
rotateY: "180"
#模型的大小
size: "30"
#width height这两个是因为每个模型的大小都不同 没办法自适应大小判断悬浮 所以可以重新指定判断悬浮的大小区域 不会对实际渲染造成影响
width: '10'
height: '10'
locationX: "w*0.1"
locationY: "h*0.73"
locationZ: "0"

以下是所有可选用的模型类型

model对应生物
armorstand盔甲架
bat蝙蝠
cavespider洞穴蜘蛛
chicken
cow
creeper苦力怕
donkey
dragon末影龙
elderguardian远古守卫者
enderman末影人
evoker唤魔者
ghast恶魂
giantzombie巨人僵尸
guradian守卫者
husk尸壳
horse
illusionillager幻术师
irongolem铁傀儡
llama羊驼
magmacube岩浆怪
mooshroom哞菇
mule
ocelot豹猫
parrot鹦鹉
pig
pigzombie僵尸猪人
babypigzombie幼年僵尸猪人
polarbear北极熊
rabbit兔子
sheep绵羊
shulker潜影贝
silverfish蠹虫
skeleton骷髅
skeletonhorse骷髅马
slime史莱姆
snowman雪傀儡
spider蜘蛛
squid鱿鱼
stray流浪者
vex恼鬼
villager村民
vindicator卫道士
witch女巫
wither凋灵
witherskeleton凋灵骷髅
wolf
zombie僵尸
babyzombie幼年僵尸
zombiehorse僵尸马
zombievillager僵尸村民
babyzombievillager幼年僵尸村民

滚动框组件

#滚动框组件 从滚动框组件开始 下面填写的任何组件都只会在滚动框区域内显示
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
scroll:
type: scroll
#是否要取消滚动框的所有交互 默认为false
invalid: false
#滚动列表显示的宽度
width: '300'
#滚动列表显示的高度
height: '200'
#滚动列表显示的初始坐标
locationX: '100'
locationY: '100'
#是否开启相对坐标模式
# 开启后滚动框的背景,滑块栏和内部组件将会自动从滚动框设置的坐标
# 为起点计算坐标 默认为false
# 强烈建议把此选项开启 后期版本可能会强制开启此选项
relative: false
#是否允许拖拽式的滑动滚动框 默认为 false
#开启后可以点击滚动框内部区域进行移动
scrollDraggable: false
#直接给滚动框添加背景 (3.3.2新增)
background:
#组件类型
type: texture
#背景图片
path: 'local<->textures/misc/translucent.png.png'
#显示起始坐标(可以删去,默认为上面滚动列表的坐标参数)
#注意该组件的坐标默认是从上面滚动框坐标的位置开始的
locationX: "-2"
locationY: "-2"
#宽度width和高度height也同样支持运算符和 w h 变量 w代表整个MC的宽度 (可以删去,默认为上面滚动列表的大小参数)
#注意该组件的大小是在上面滚动框的大小上改变的
width: "4"
height: "4"
#竖向滑块的设置 (可以为任意材质的部件,该部件的坐标无需设置,将由竖向滑块栏决定)
sliderV:
type: button
#按钮默认的图片、GIF(如果填的是gif文件就会渲染成gif)
defaultPath: 'local<->textures/misc/warn.png'
#鼠标悬浮到按钮时的图片、GIF(如果填的是gif文件就会渲染成gif)
hoverPath: 'local<->textures/misc/logo.png'
width: "50"
height: "50"
#对齐模式 可删除
align: "center"
#默认字符串将显示在按钮中间,支持PAPI变量(可删除)
texts:
- "&e我是竖向滑块"
#滑块栏的坐标
locationVX: '100'
locationVY: '100'
#竖向滑块栏的宽度、高度
widthV: '20'
heightV: '200'
#是否关闭竖向滑块 默认为为true
invalidV: true
#竖向可滚动的像素
#当填写 auto 时,会自动计算并替换为内部组件应该可滚动的最大竖向距离
#当然你想让他可以多滚一点可以写 auto + 5 之类的公式
scrollableV: '1000'
#已经滚动的像素 要小于等于可滚动的像素
scrolledV: '500'
#横向滑块的设置 (可以为任意材质的部件,该部件的坐标无需设置,将由横向滑块栏决定)
#横向滑块栏位和竖向滑块栏可以同时存在,这个时候你就要问了,那么鼠标滚轮控制哪个滑块呢
#目前的判断机制是 鼠标更靠近哪个滑块 就是控制哪个滑块
sliderH:
type: button
#按钮默认的图片、GIF(如果填的是gif文件就会渲染成gif)
defaultPath: 'local<->textures/misc/warn.png'
#鼠标悬浮到按钮时的图片、GIF(如果填的是gif文件就会渲染成gif)
hoverPath: 'local<->textures/misc/logo.png'
width: "50"
height: "50"
#对齐模式 可删除
align: "center"
#默认字符串将显示在按钮中间,支持PAPI变量(可删除)
texts:
- "&e我是横向滑块"
#横向滑块栏的坐标
locationHX: '100'
locationHY: '100'
#横向滑块栏的宽度、高度
widthH: '200'
heightH: '20'
#是否关闭横向滑块 默认为为true
invalidH: true
#横向可滚动的像素
#当填写 auto 时,会自动计算并替换为内部组件应该可滚动的最大横向距离
#当然你想让他可以多滚一点可以写 auto + 5 之类的公式
scrollableH: '1000'
#已经滚动的像素 要小于等于可滚动的像素
scrolledH: '500'
#布局器 它可以帮助你填充组件进去
layout:
#布局器类型 FLOW 将根据组件的宽高 自动瀑布流式的填充进容器
type: FLOW
# 组件间隙
gapX: "5"
gapY: "5"
# 组件填充 每个组件前填充一个指定大小的空白距离
# 与组件间隙的区别在于 第一个组件前是否有空隙
fillX: "5"
fillY: "5"
# 不换行排布 默认为false
nowrap: false
#在滚动框内的部件的部件设置(任意部件都可以往里面填)
#需要注意的是 里面的组件的坐标还是从当前界面的 startX startY 开始的
scrollableParts:
label:
type: label
#文字的对齐方式 左对齐 left 右对齐 right 居中 center 可删除 默认为left
align: "center"
#缩放 注意引号 可用 w h 计算 1为原大小
scale: '1'
#字符串
texts:
- "亲爱的: %player_name%"
- "您的世界: %world_name%"
- "" #独占一行,代表点一下才会继续显示下面的内容
locationX: "w*0.5"
locationY: "h*0.5"
locationZ: "0"
#这个图片的动画(可删除)
animations:
- "default_move"
slot:
type: slot
#槽位的宽和高(可以使用 w h) 例如:size: 'w*0.1' 或 size: 'h*0.1' 或 size: ' w / h * 0.1'
size: "36"
#吞掉点击 默认true
#这样就不会穿透点击到其他组件了
swallow: true
#是否是禁止所有状态(点不了,没声音,悬浮没变化)
invalid: true
#是否允许与该槽位交互(可以点,有声音,但是无法进行操作)
interact: true
#任何界面中identity都不能用一样的 防止槽位的物品混乱 (如果您是开发者 推荐使用 处理该槽位的插件全名小写_用来逻辑判断的字符)
identity: "germplugin_default"
#当槽位内有物品时显示的图片
fillPath: 'local<->textures/gui/slot.png'
#当槽位为空的时候显示的图片
emptyPath: 'local<->textures/gui/slot.png'
hoverSound: 'minecraft:ui.button.click'
clickSound: 'minecraft:ui.button.click'
locationX: "w*0.7"
locationY: "h*0.5"
locationZ: "0"
#可以直接把下面这个物品填进格子里
#配合interact(关闭槽位的互动)使用可以做一个物品的展示界面
itemStack:
==: org.bukkit.inventory.ItemStack
type: DIAMOND_SWORD
meta:
==: ItemMeta
meta-type: UNSPECIFIC
display-name: '§2我是名字'
lore:
- '§f我是描述第一行'
- '§7颜色符请用§'

滚动框组件【简略版例子】【横向滚动】

scroll:
type: scroll
width: '300'
height: '200'
locationX: '100'
locationY: '100'
#是否开启相对坐标模式
# 开启后滚动框的背景,滑块栏和内部组件将会自动从滚动框设置的坐标
# 为起点计算坐标 默认为false
# 强烈建议把此选项开启 后期版本可能会强制开启此选项
relative: false
#直接给滚动框添加背景 (3.3.2新增)
background:
type: texture
path: 'local<->textures/misc/translucent.png.png'
sliderH:
type: button
defaultPath: 'local<->textures/misc/warn.png'
hoverPath: 'local<->textures/misc/logo.png'
width: "50"
height: "50"
align: "center"
texts:
- "&e我是横向滑块"
#横向滑块栏的坐标
locationHX: '100'
locationHY: '100'
#横向滑块栏的宽度、高度
widthH: '200'
heightH: '20'
#是否关闭横向滑块 默认为为true
invalidH: false
#横向可滚动的像素
#当填写 auto 时,会自动计算并替换为内部组件应该可滚动的最大横向距离
#当然你想让他可以多滚一点可以写 auto + 5 之类的公式
scrollableH: '1000'
#已经滚动的像素 要小于等于可滚动的像素
scrolledH: '500'
#布局器 它可以帮助你填充组件进去
layout:
#布局器类型 FLOW 将根据组件的宽高 自动瀑布流式的填充进容器
type: FLOW
# 组件间隙
gapX: "5"
gapY: "5"
# 组件填充 每个组件前填充一个指定大小的空白距离
# 与组件间隙的区别在于 第一个组件前是否有空隙
fillX: "5"
fillY: "5"
# 不换行排布 默认为false
nowrap: false
#在滚动框内的部件的部件设置(任意部件都可以往里面填)
#需要注意的是 里面的组件的坐标还是从当前界面的 startX startY 开始的
scrollableParts:
label:
type: label
#文字的对齐方式 左对齐 left 右对齐 right 居中 center 可删除 默认为left
align: "center"
#缩放 注意引号 可用 w h 计算 1为原大小
scale: '1'
#字符串
texts:
- "亲爱的: %player_name%"
- "您的世界: %world_name%"
- "" #独占一行,代表点一下才会继续显示下面的内容
locationX: "w*0.5"
locationY: "h*0.5"
locationZ: "0"
#这个图片的动画(可删除)
animations:
- "default_move"

滚动框组件【简略版例子】【竖向滚动】

scroll:
type: scroll
width: '300'
height: '200'
locationX: '100'
locationY: '100'
#是否开启相对坐标模式
# 开启后滚动框的背景,滑块栏和内部组件将会自动从滚动框设置的坐标
# 为起点计算坐标 默认为false
# 强烈建议把此选项开启 后期版本可能会强制开启此选项
relative: false
#直接给滚动框添加背景 (3.3.2新增)
background:
type: texture
path: 'local<->textures/misc/translucent.png.png'
sliderV:
type: button
defaultPath: 'local<->textures/misc/warn.png'
hoverPath: 'local<->textures/misc/logo.png'
width: "50"
height: "50"
#对齐模式 可删除
align: "center"
#默认字符串将显示在按钮中间,支持PAPI变量(可删除)
texts:
- "&e我是竖向滑块"
#滑块栏的坐标
locationVX: '100'
locationVY: '100'
#竖向滑块栏的宽度、高度
widthV: '20'
heightV: '200'
#是否关闭竖向滑块 默认为为true
invalidV: true
#竖向可滚动的像素
#当填写 auto 时,会自动计算并替换为内部组件应该可滚动的最大竖向距离
#当然你想让他可以多滚一点可以写 auto + 5 之类的公式
scrollableV: '1000'
#已经滚动的像素 要小于等于可滚动的像素
scrolledV: '500'
#布局器 它可以帮助你填充组件进去
layout:
#布局器类型 FLOW 将根据组件的宽高 自动瀑布流式的填充进容器
type: FLOW
# 组件间隙
gapX: "5"
gapY: "5"
# 组件填充 每个组件前填充一个指定大小的空白距离
# 与组件间隙的区别在于 第一个组件前是否有空隙
fillX: "5"
fillY: "5"
#在滚动框内的部件的部件设置(任意部件都可以往里面填)
#需要注意的是 里面的组件的坐标还是从当前界面的 startX startY 开始的
scrollableParts:
label:
type: label
#文字的对齐方式 左对齐 left 右对齐 right 居中 center 可删除 默认为left
align: "center"
#缩放 注意引号 可用 w h 计算 1为原大小
scale: '1'
#字符串
texts:
- "亲爱的: %player_name%"
- "您的世界: %world_name%"
- "" #独占一行,代表点一下才会继续显示下面的内容
locationX: "w*0.5"
locationY: "h*0.5"
locationZ: "0"
#这个图片的动画(可删除)
animations:
- "default_move"

画布组件

#画布组件(相对坐标,组件集)
#可以把多个组件集合成一个
#可以更方便的设置符合组件的坐标
#该索引名(下面第一行的名称)仅为示例,请在正式配置时进行修改,每个组件的索引名均不可重复!!
canvas:
type: canvas
#画布的起点坐标
locationX: "w*0.26"
locationY: "h*0.11"
#当使用layout时必须设置该参数
width: "100"
#当使用layout时必须设置该参数
height: "100"
#直接给滚动框添加背景 (4.0.0新增)
background:
#组件类型
type: texture
#背景图片
path: 'local<->textures/misc/translucent.png.png'
#显示起始坐标(可以删去,默认为上面滚动列表的坐标参数)
#注意该组件的坐标默认是从上面滚动框坐标的位置开始的
locationX: "-2"
locationY: "-2"
#宽度width和高度height也同样支持运算符和 w h 变量 w代表整个MC的宽度 (可以删去,默认为上面滚动列表的大小参数)
#注意该组件的大小是在上面画布的大小上改变的
width: "4"
height: "4"
#点击到拖动bar是否吞掉点击操作
#这样就不会穿透点击到其他组件了
dragSwallow: true
#画布组件也可以设置拖动 删掉代表无法拖动
drag:
#可拖动区域的坐标
locationX: "0"
locationY: "0"
#可拖动区域的宽度
width: "100"
#可拖动区域的高度
height: "100"
#可以让整个画布一起运行动画
animations:
- "default_rotate"
#布局器
layout:
#布局器类型 FLOW 将根据组件的宽高 自动瀑布流式的填充进容器
type: FLOW
# 组件间隙
gapX: "5"
gapY: "5"
# 组件填充 每个组件前填充一个指定大小的空白距离
# 与组件间隙的区别在于 第一个组件前是否有空隙
fillX: "5"
fillY: "5"
#相对于画布的组件
relativeParts:
part1:
type: gif
#同样支持url<->
path: 'local<->gif/ghast.gif'
#这个gif播放几遍后停止,-1是无限循环
cycle: -1
#该坐标会加上画布的起点坐标
locationX: "w*0.26"
locationY: "h*0.11"
#画布组件(可以套娃)
canvas2:
locationX: "w*0.26"
locationY: "h*0.11"
relativeParts:
part1:
type: gif
#同样支持url<->
path: 'local<->gif/ghast.gif'
#这个gif播放几遍后停止,-1是无限循环
cycle: -1
locationX: "w*0.26"
locationY: "h*0.11"## 画布组件

画布组件【简略版例子】

canvas:
type: canvas
locationX: "w*0.26"
locationY: "h*0.11"
#当使用layout时必须设置该参数
width: "100"
#当使用layout时必须设置该参数
height: "100"
#直接给滚动框添加背景 (4.0.0新增)
background:
type: texture
path: 'local<->textures/misc/translucent.png.png'
#点击到拖动bar是否吞掉点击操作
#这样就不会穿透点击到其他组件了
dragSwallow: true
#画布组件也可以设置拖动 删掉代表无法拖动
drag:
#可拖动区域的坐标
locationX: "0"
locationY: "0"
#可拖动区域的宽度
width: "100"
#可拖动区域的高度
height: "100"
layout:
type: FLOW
# 组件间隙
gapX: "5"
gapY: "5"
relativeParts:
part1:
type: gif
#同样支持url<->
path: 'local<->gif/ghast.gif'
#这个gif播放几遍后停止,-1是无限循环
cycle: -1
#该坐标会加上画布的起点坐标
locationX: "w*0.26"
locationY: "h*0.11"
#画布组件(可以套娃)