自定义更多GUI
第一步,请选好一张图片作为你的背景图片并放入GermCache/textures/gui内
第二步,通过图片文件的属性来计算出背景图片的长宽比
第三步,在服务端中新建GermPlugin/gui/xx.yml (注意编码UTF-8,xx可以自定义)
第四步,填入一个gui的yml文件的基本信息
xx: #这里是GUI的名字 使用 /gp open <你的名字> xx 即可打开
#options标识符表示设置这个GUI的参数(该标识符可全部删除)
options:
#设置起始坐标轴,你可以根据你的习惯来设置这个界面的原点。(如果删除此行,默认为MC界面的最上边)
startX: "w*0"
#设置起始坐标轴,你可以根据你的习惯来设置这个界面的原点。(如果删除此行,默认为MC界面的最左边)
startY: "h*0"
#此界面的优先级 优先级越大 越不会被遮住 (物品模型的默认优先级都很大,要想把物品模型遮住,Z轴就要很大) 不懂不要管 直接删去就可以 默认为 0
startZ: "10"
#打开一次后就在客户端删除该界面的缓存(就是打开并关闭后,需要重载才能再打开,给写插件时用的,写配置直接删去)可删除 默认false
consume: false
#是否开启坐标指南,开启后将会绘制鼠标的坐标位置(可删除,默认为false)
guide: false
#是否取消ESC关闭界面 (可删除默认为 false)
escCancel: false
#如果该界面在最顶层 开启下面选项后 按下ESC只会关闭这个界面 (关闭escCancel才有效,可删除默认为false)
escCloseOnly: false
#当界面被关闭的时候会触发
closeDos:
- "message<->thisGui界面被关闭了"
#当玩家在此界面按下按键时触发
keyDos:
keyDown_22:
- "message<->按下了 U 键"
keyUp_22:
- "message<->松开了 U 键"
#这里设置窗口拖动的参数 删掉代表无法拖动
drag:
#可拖动区域的坐标
locationX: "0"
locationY: "0"
#可拖动区域的宽度
width: "100"
#可拖动区域的高度
height: "100"
#打开界面时的声音,删除此行默认无声
openSound: "minecraft:block.anvil.use"
#打开GUI时执行一些关于GUI的特殊操作 以下称为dos(可删除)
#dos都是以 标记<->参数 的形式书写 不同的标记拥有不同的功能
openDos:
- "openChild<->default3" #打开一个子窗口(default3也是一个gui目录下的yml文件)
#该动画选项会使得整个GUI界面按照预设动画做出移动(可删除)
animations:
- "default_move"
第五步,添加背景图片到GUI内
xx: #这里是GUI的名字 使用 /gp open <你的名字> default 即可打开
#options标识符表示设置这个GUI的参数(该标识符可全部删除)
options:
#设置起始坐标轴,你可以根据你的习惯来设置这个界面的原点。(如果删除此行,默认为MC界面的最上边)
startX: "w*0"
#设置起始坐标轴,你可以根据你的习惯来设置这个界面的原点。(如果删除此行,默认为MC界面的最左边)
startY: "h*0"
#此界面的优先级 优先级越大 越不会被遮住 (物品模型的默认优先级都很大,要想把物品模型遮住,Z轴就要很大) 不懂不要管 直接删去就可以 默认为 0
startZ: "10"
#打开一次后就在客户端删除该界面的缓存(就是打开并关闭后,需要重载才能再打开,给写插件时用的,写配置直接删去)可删除 默认false
consume: false
#是否开启坐标指南,开启后将会绘制鼠标的坐标位置(可删除,默认为false)
guide: false
#是否取消ESC关闭界面 (可删除默认为 false)
escCancel: false
#如果该界面在最顶层 开启下面选项后 按下ESC只会关闭这个界面 (关闭escCancel才有效,可删除默认为false)
escCloseOnly: false
#当玩家在此界面按下按键时触发
keyDos:
keyDown_22:
- "message<->按下了 U 键"
keyUp_22:
- "message<->松开了 U 键"
#这里设置窗口拖动的参数 删掉代表无法拖动
drag:
#可拖动区域的坐标
locationX: "0"
locationY: "0"
#可拖动区域的宽度
width: "100"
#可拖动区域的高度
height: "100"
#打开界面时的声音,删除此行默认无声
openSound: "minecraft:block.anvil.use"
#打开GUI时执行一些关于GUI的特殊操作 以下称为dos(可删除)
#dos都是以 标记<->参数 的形式书写 不同的标记拥有不同的功能
openDos:
- "openChild<->default3" #打开一个子窗口(default3也是一个gui目录下的yml文件)
#该动画选项会使得整个GUI界面按照预设动画做出移动(可删除)
animations:
- "default_move"
#索引名 没有特殊意义 但是禁止界面内有一样的名称
picture:
type: texture
#是否开启这个组件 (关闭后任何效果、显示、互动、功能啥的都不存在了,就跟没有似的) (可删除默认为显示)
# 如果将 enable 后面的 true或false 设置某个条件 将自动匹配条件开关
# 例如填写 enable: "%player_health% = 100" 当玩家的血量到达100时才会开启该组件
#以下每个部件都有这个选项 不再列出
enable: true
#悬浮时候显示的tooltip就跟原版悬浮到道具时显示的lore界面一样(可删除 默认为不显示)
#以下每个部件都有这个选项 不再列出
tooltip:
- '&c我是悬浮的时候被显示出来的那个'
#图片的材质路径地址可以使用 local<->地址 或者直接输入 地址
#同时支持网络连接地址 前面必须加上标记 url<-> 例如:url<->https://s1.ax1x.com/2020/06/19/NnqzVK.png
path: 'local<->textures/gui/background.png'
#图片的显示起始坐标(图片的左上角为起始点)
locationX: "w*0.25"
locationY: "h*0.25"
#优先级 通常情况下删了就可以了
locationZ: "0"
#宽度width和高度height也同样支持运算符和 w h 变量
width: "w*0.5"
height: "h*0.5"
#图片组件的动画(可删除)
animations:
- "default_scale"
第六步,调整图片大小
首先,我们根据你第二步所得出的图片长宽比,求得比例系数k。例如:示例图片的k=850/593=1.43
在第四步内,你可以看到options内有一个guide选项,启用后,在游戏内该GUI界面内会实时显示鼠标所在的的坐标。
在图片大小设置中,w指的是玩家客户端窗口的宽度,h指的是玩家客户端窗口的高度,你可以通过w*与h*的方式来让该GUI随着玩家窗口的大小自动适应。
你可以通过options内guide选项启用后来对比窗口左上角和右下角的差值来计算出你的游戏窗口大小。例如w为960,h为500,w*0.5就是480。
你需要确保图片组件内的width与height的比值与你的图片长宽比一致,图片方可不变形。例如
#宽度width和高度height也同样支持运算符和 w h 变量
width: "w*0.5"
height: "h*0.67"
上面的配置,我们根据w为960,h为500,求得width为480,height为335,480/335=1.43=k,所以图片保持原有比例不会变形。