主页
复制代码
"left_center" center" "right_center"
"bottom_left" "bottom_center" "bottom_right"
"左上"、"中上"、"右上"、
"左中"、"中心"、"右中"、
"左下"、"中下"、"右下"
复制代码
复制代码
复制代码
复制代码复制代码复制代码复制代码复制代码
复制代码复制代码复制代码复制代码
复制代码
复制代码有两个参数可选:
image:【可选】标定着背景图片的地址,注意这个地址写法比较特殊。图片只支持png格式。
mode:【可选】图片的填充模式,有fill, stretch, center, tile四个选项可选。
-fill:适应,保证图片长宽比前提下,尽可能铺满屏幕。会适当裁剪图片。
-stretch:拉伸,尽可能铺满屏幕,如果不合适会强制拉伸图片。
-center:居中,不改变图片大小和比例,依据屏幕大小裁剪图片。
-tile:平铺,重复图片铺满屏幕。
复制代码image:此时为空,但是不可略去不写。
slideshow:添加循环的图片背景。
-images:添加循环的图片地址。
-displayDuration:图片停留时间,单位为tick。
-fadeDuration:转换图片时间,单位为tick。
自定义主菜单是一个MOD,允许你使用json文件编辑minecraft主菜单。
它允许你添加或删除元素,如按钮和标签,也增加了一些新的东西,你可以添加到你的菜单,如幻灯片或整个自定义gui。
它的配置文件应该是这样的:
- {
 
- "images": {
 
-         "图片一": {
 
-         },
 
-         "图片二": {
 
-         }
 
-     },
 
- "buttons": {
 
-         "按钮一": {      
 
-         },
 
-         "按钮二": {      
 
-         }
 
-     },
 
- "labels": {
 
-         "文本一": {      
 
-         },
 
-         "文本一": {      
 
-         }
 
-     },
 
- "other":{
 
-         "background":{          
 
-         }
 
-     }
 
- }
对齐
什么是对齐方式?
一个元素的对齐方式指定了它在菜单屏幕上的相对位置。为了方便起见,定义了几个对齐方式的预设,不过如果需要的话,你也可以创建一个自定义的对齐方式。(完全不知道怎么自定义) 
预设排列方式    (所有项目通用)这个对齐方式真的迷
"top_left"    "top_center"    "top_right""left_center" center" "right_center"
"bottom_left" "bottom_center" "bottom_right"
"左上"、"中上"、"右上"、
"左中"、"中心"、"右中"、
"左下"、"中下"、"右下"
像这样使用:   "alignment" : "对齐方式"
变量
| 占位符 | 变量名 | 可能的输出 | 
| #date# | 当地日期 | Dec 22, 2019 | 
| #time# | 当地时间 (HH:mm) | 14:09 | 
| #mcversion# | 我的世界版本 | 1.12.2 | 
| #fmlversion# | FML版本 | 8.0.99.99 | 
| #mcpversion# | 我的世界 Coder Pack 版本 | 9.42 | 
| #modsloaded# | 加载的mod数量 | 231 | 
| #modsactive# | 活跃的mod数量 | 224 | 
| #forgeversion# | Forge版本 | 14.23.5.2847 | 
| #username# | 玩家名称 | dimaxiton5 | 
 占位符不仅可以在 "文本 "字段中使用例如:
- {
 
-   ...
 
-   "text": "web:https://example.com/logPlayer.php?playerName=#username#",
 
-   "action": {
 
-     "type": "openLink",
 
-     "link": "https://example.com/viewProfile?username=#username#"
 
-   }
 
- }
按钮
按钮在被按下时执行动作。它们可以打开gui(也可以是自定义的gui),例如连接到一个服务器,打开一个链接或加载一个特定的世界。 
举个栗子:
- "singleplayer":{
 
-       "text":"menu.singleplayer",
 
-       "texture":"mainmenu:shortbutton.png",
 
-       "posX":-100,
 
-       "posY":-8,
 
-       "width":98,
 
-       "height":20,
 
-       "imageWidth":98,
 
-       "imageHeight":20,
 
-       "alignment":"center",
 
-       "action":{
 
-            "type":"openGui",
 
-            "gui":"singleplayer"
 
-            }
 
- },
可选属性
posX:按钮的X坐标
posY:按钮的Y坐标 
width:按钮的宽度
height:按钮的高度。
imageWidth:按钮在图像中的宽度(默认为高度)。 
imageHeight:按钮在图像中的高度(默认为宽度)。
texture : (可选)一个资源位置,它将被用作这个按钮的自定义纹理。该图像必须包含一个正常的和一个悬停版本的按钮。这是一个200x20按钮的例子。
texture : (可选)一个资源位置,它将被用作这个按钮的自定义纹理。该图像必须包含一个正常的和一个悬停版本的按钮。这是一个200x20按钮的例子。
text : 按钮上显示的文本(一个语言键(即lang中的条目)或只是普通文本)
hoverText : 当用户悬停在按钮上时显示的文本(一个语言键或只是普通文本)。
normalTextColor : (可选)一个rgb颜色的整数,用于显示按钮的正常文本颜色。 
hoverTextColor : (可选)一个rgb颜色的整数,用于显示鼠标在按钮上方时的文本颜色。 
pressSound : (可选)一个资源位置,指向该按钮在被按下时发出的声音
hoverSound : (可选) 指向该按钮在悬停时发出的声音的资源位置
tooltip : (可选)当用户悬停在此按钮上时,将显示的工具提示文本。
action : (可选) 当按钮被点击时将做什么,更多信息见Actions。 
wrappedButton :(可选) 按钮ID,更多信息请参考Wrapped Buttons。
alignment : (可选) 参见对齐方式的信息
alignment : (可选) 参见对齐方式的信息
textOffsetX/Y(可选)。按钮的文字将被偏移这个数量。
按钮动作
当用户点击一个按钮或一个文本时,就会执行动作。有各种不同的,可以简单地打开GUI,连接到服务器,或加载一个世界。它的格式如下
- "action": {
 
-    "type": "类型",
 
-    "属性": "值"
 
- }
属性
type:动作的类型,有效值是:openLink, openGui, quit, refresh, connectToServer, loadWorld, openFolder
其余的动作属性由动作的类型决定。(灰色的是类型)
openLink:
-link:要打开的链接
- "action":{
 
-       "type":"openLink",
 
-       "link":"https://www.feed-the-beast.com"
 
- }
openGui:
-gui:应该打开的GUI(界面)。这可以是一个自定义的GUI例如(custom.CUSTOM_GUI_NAME),
也可以是一个原版的gui如(每个是什么自己试吧)
(mainmenu, mods, singleplayer, singleplayer.createworld, multiplayer, credits, languages, realms, options, options.ressourcepacks, options.skinsettings, options.snooper, options.sounds, options.video, options.controls, options.manyplayer)
- "action":{
 
-         "type":"openGui",
 
-         "gui":"languages"
 
- }
connectToServer:
-ip:要连接的服务器的IP
- "action":{
 
-       "type":"connectToServer",
 
-       "ip":"127.0.0.1"
 
- }
loadWorld:
-dirName: 保存的目录名称(在saves文件夹中)。
-saveName: 并非真正必要,在加载世界时可能会在某些对话框中出现保存的名称。
- "action":{
 
-       "type":"loadWorld",
 
-       "dirName":"新的世界"
 
- }
openFolder:
-folderName:然后是应该被打开的文件夹的名字。(使用.minecraft文件夹作为根文件夹)
- "action":{
 
-       "type":"openFolder",
 
-       "folderName":"config"
 
- }
quit和refresh不需要任何额外的属性。
其他mod按钮
自定义主菜单默认删除了所有由其他mods(Open Eye、Version Checker、Tabula)添加的按钮,因为无法像原版按钮那样控制它们。
使用包裹的按钮,你可以创建模仿其功能的按钮。为了让它们发挥作用,你需要找出你想重新添加的按钮的ID,
使用包裹的按钮,你可以创建模仿其功能的按钮。为了让它们发挥作用,你需要找出你想重新添加的按钮的ID,
查看你最新的fml客户端日志并搜索 "wrapped button",所有被移除的mod按钮都被记录了它们各自的按钮ID。
注意:如果你要做一个200*100的按钮,那么你在ps里面就要创建一个200*200的画布,在配置文件的width调为200,height调为100,
因为它类似于会将你的按钮等分成上下两部分,上一半是没有鼠标悬浮的状态,下一半是鼠标悬浮的状态
文本
一般来说,所有在gui上可见的文本(标签、按钮、文本)都可以用3种不同的方式定义。
 1.从一个资源中加载
- "splash-text": { "posX": 90, "posY": 70, "color": -256, "alignment": "top_center", "text": "file:minecraft:text/splashes.txt" }
file: 后面是文本应该被加载的文件的资源位置。 
2.从一个URL中加载(web: 后面是文本应该被加载的URL)
- "changelog": { "text": "web:http://pastebin.com/raw.php?i=MmSCr6zV", "posX": 2, "posY": 0, "color": -1, "alignment": "left_center" }
3.静态文本
- "mojang": { "text": "Copyright Mojang AB. 请勿分发!", "posX": -197, "posY": -10, "color": -1, "alignment": "bottom_right" }
4.如果你想为你所使用的文本类型指**外的属性(比如网络文本的刷新时间间隔文本的刷新间隔是以刻度为单位的,必须>=60(3秒)。
- "label": { "text": { "type": "web", "url": "URL", "refreshInterval": 60 }, "posX": 0, "posY": 80, ... }
属性:
posX:标签的X坐标
posY:标签的Y坐标
color:文本颜色的rgb整数(颜色代码覆盖这个)。
hoverColor:(可选)一个rgb整数,当用户将鼠标悬停在文本上时,该文本的颜色(颜色代码覆盖此)。
text: 应该显示的文本(可以包含颜色代码)。
hoverText:用户在其上悬停时的文本(可以包含颜色代码
anchor:(可选)可以是 "开始"(默认)、"中间 "或 "结束"。使得文本向左、向中或向右对齐。
action: (可选)当用户点击标签时,将执行什么动作?
alignment(对齐):(可选)参见对齐方式的信息
fontSize(字体大小):(可选)文本的大小,1是默认的,2是2倍的大小。
pressSound: (可选)一个资源位置,指向该文本在按下时发出的声音
hoverSound: (可选)指向该文本在悬停时发出的声音的资源位置
图片
它们可以是来自本地文件夹或来自网络。 
图片只能用png格式。
属性
posX : 图像的X坐标 
posY:图像的Y坐标 
width:图像的宽度 
height:图像的高度 
image:实际图像的资源位置 
hoverImage : 当用户悬停在图像上时,该图像的资源位置 
alignment : (可选)参见对齐方式的信息 
slideshow:(可选),见Slideshow 
如果要使用网络图片像这样写
- "image":{
 
-      "image": "web:https://example.com/xxx.png",
 
-      "posX":40,
 
-      "posY":20,
 
-      "width":64,
 
-      "height":64,
 
-      "alignment":"top_left"
 
- }
背景
背景分为动态背景和静态背景。
背景属于"other"分区
静态背景:
- {
 
- "other":{
 
-         "background":{
 
-             "image":"mainmenu:001.png",
 
-             "mode":"fill"
 
-         }
 
-     }
 
- }
image:【可选】标定着背景图片的地址,注意这个地址写法比较特殊。图片只支持png格式。
mode:【可选】图片的填充模式,有fill, stretch, center, tile四个选项可选。
-fill:适应,保证图片长宽比前提下,尽可能铺满屏幕。会适当裁剪图片。
-stretch:拉伸,尽可能铺满屏幕,如果不合适会强制拉伸图片。
-center:居中,不改变图片大小和比例,依据屏幕大小裁剪图片。
-tile:平铺,重复图片铺满屏幕。
动态背景:
- {
 
- "other":{
 
-     "background":{
 
-             "image" : "",
 
-             "slideshow":{
 
-                 "images" : ["mainmenu:001.png","mainmenu:002.png","mainmenu:003.png"],
 
-                 "displayDuration" : 100,
 
-                 "fadeDuration" : 40
 
-             }
 
-         }
 
-     }
 
- }
slideshow:添加循环的图片背景。
-images:添加循环的图片地址。
-displayDuration:图片停留时间,单位为tick。
-fadeDuration:转换图片时间,单位为tick。
重要提示
要使用本地图片,你需要使用Resource Loader mod!
ps:其实使用压缩包打开modassets\custommainmenu\textures\gui\放这里,可以,然后像这样"image" : "custommainmenu:textures/gui/xxx.png"要使用本地图片,你需要使用Resource Loader mod!
ps:如果你要修改字为中文或者使用§,你必须要将编码转为ANSI,否则会乱码
ps:使用Ctrl+R快捷键刷新配置
ps:还有一个特别迷的posX和posY的移动量只能自己试?这里可以提醒正的值是向右下偏移
注:mcmod也为本人发布