前情提要

由于早期我作为一位纯萌新想要搞整合包时,看到了这个mod但是那时只有大轩的一个教程,让人看完十分的迷茫,看完之后根本不知道我该怎么办(这里并没有贬低大轩的意思)而两年后的现在,我终于玩懂了这个mod,为了前人栽树,后人乘凉,这一次我将会教会各位如何使用这个mod,并且一起制作一份属于自己的 加载画面

参考文献官方wiki

自定义加载画面全解[连纯小白都看得懂!]-第1张图片大轩的教程

自定义加载画面全解[连纯小白都看得懂!]-第2张图片

正文部分


前期准备

  1. 额外添加Resource Loader 模组

  2. 一张背景图片

  3. 一些显示用的素材(这里的素材可以不用我的你也可以自己画)

  4. 一个好用的文本编辑器

  5. 一个愿意动脑有耐心看完本篇教程的人

开始

初始阶段

首先下载好我刚才说的东西,把Custom Loading Screen mod和Resource Loader mod放入mod文件夹跑一遍

自定义加载画面全解[连纯小白都看得懂!]-第3张图片

在mc目录下就会出现这两个文件夹,现在我们先打开config文件夹

自定义加载画面全解[连纯小白都看得懂!]-第4张图片

你可以看到这个文件自定义加载画面全解[连纯小白都看得懂!]-第5张图片

打开他你能看到下面的界面自定义加载画面全解[连纯小白都看得懂!]-第6张图片

上图圈红的地方,请将其修改为:随意名称/custom

我将其改为chengming/custom 如图:

自定义加载画面全解[连纯小白都看得懂!]-第7张图片

改好后返回mc目录

创建文件阶段

打开resources文件自定义加载画面全解[连纯小白都看得懂!]-第8张图片

新建一个文件夹

自定义加载画面全解[连纯小白都看得懂!]-第9张图片

命名为customloadingscreen!如图:

自定义加载画面全解[连纯小白都看得懂!]-第10张图片打开这个文件夹,再分别创建config(配置),font(字体),image(图片),如图:

自定义加载画面全解[连纯小白都看得懂!]-第11张图片

创建好后打开config文件,创建一个名字为你刚才写的随意名称

自定义加载画面全解[连纯小白都看得懂!]-第12张图片

因为我写的是chengming/custom

所以我创建的文件叫做chengming如图:

自定义加载画面全解[连纯小白都看得懂!]-第13张图片

然后继续打开你刚创建的文件,在里面创建名为custom的json文件如图:

自定义加载画面全解[连纯小白都看得懂!]-第14张图片然后打开他

将这一大串复制粘贴进去

{
    "renders": [
    ],
    "variables": {
    },
    "functions": [
    ],
    "factories": [
    ],
    "actions": [
    ]
}

如图:自定义加载画面全解[连纯小白都看得懂!]-第15张图片

回到customloadingscreen目录下打开image文件:

自定义加载画面全解[连纯小白都看得懂!]-第16张图片

然后创建一个名为前面的随意名称的文件夹

因为我写的是chengming/custom

所以我创建一个名为chengming的文件夹,如图:

自定义加载画面全解[连纯小白都看得懂!]-第17张图片

进入这个文件

这样创建文件阶段就结束了

概念阶段

我们使用自定义加载画面这个mod要了解一些概念

自定义加载画面这个mod是用放在image文件里的json来写画面配置让后用config里的custom.json文件来标记image里的json文件来实现展示画面的

虽然有点绕但是你只要理解成我在image文件里丢了个配置,让后让custom.json来读取配置就行

不再多说,继续跟着我写吧!

实操阶段

背景

正文

回到刚才先将我们先将准备好的背景景文件放入:

因为我要先创建背景,所以我将背景文件命名为bj,如图:

自定义加载画面全解[连纯小白都看得懂!]-第18张图片

记住!文件名称为bj,后缀名为png

然后创建一个任意名字的json文件这里不用与前面的任意名字同名

因为我要先创建背景,所以我就创建一个名为bj(背景)的json吧

如图:

自定义加载画面全解[连纯小白都看得懂!]-第19张图片先打开他将这一大串复制进去

{
    "parent": "builtin/image",
    "image": "customloadingscreen:image/随意名称/背景名称.后缀名",
    "position_type": "CENTER",
    "offset_pos": "CENTER",
    "position": {
        "x": "0",
        "y": "0",
        "width": "screen_width + 1",
        "height": "screen_height + 1"
    },
    "texture": {
        "x": "0",
        "y": "0",
        "width": "1",
        "height": "1"
    }
}

如图:

自定义加载画面全解[连纯小白都看得懂!]-第20张图片

让后按照我的提示来修改

因为我写的是chengming/custom

所以随意名称就是chengming前面放背景图片的时候名字为bj.png

所以改成customloadingscreen:image/chengming/bj.png,如图:自定义加载画面全解[连纯小白都看得懂!]-第21张图片

背景显示的json写好了,但是需要标记一下我们回到刚才的custom.json文件中,听了劝下载了vsc的可以直接跳转:

自定义加载画面全解[连纯小白都看得懂!]-第22张图片

renders这一栏里写上随意名称/任意名字的json文件

因为我刚才写的是bj,所以是"chengming/bj"如图:

自定义加载画面全解[连纯小白都看得懂!]-第23张图片完成!我们上游戏看看!

自定义加载画面全解[连纯小白都看得懂!]-第24张图片

恭喜你,做到这里你就已经成功了百分之80了!万事开头难!

好像差点意思,没有显示内存和游戏进度,那么我们就继续吧!

代码解析(背景)

{
    "parent": "builtin/image",
    "image": "customloadingscreen:image/随意名称/背景名称.后缀名",
    "position_type": "CENTER",
    "offset_pos": "CENTER",
    "position": {
        "x": "0",
        "y": "0",
        "width": "screen_width + 1",
        "height": "screen_height + 1"
    },
    "texture": {
        "x": "0",
        "y": "0",
        "width": "1",
        "height": "1"
    }
}

就是将一张图片贴在你的游戏窗口上,高度与宽度为你的窗口大小+1,

因为是全屏的,别的也没什么好说的了

进度条

正文

回到image\chengming里(下文统称为image目录下)

自定义加载画面全解[连纯小白都看得懂!]-第25张图片

将素材中的进度条文件放进来,如图:自定义加载画面全解[连纯小白都看得懂!]-第26张图片

像刚才一样创建一个任意名字的json文件

因为我要创建进度条所以我将json文件命名为jdt(进度条),如图:

自定义加载画面全解[连纯小白都看得懂!]-第27张图片

先打开他将这一大串复制进去

{
    "parent": "builtin/image",
    "image": "customloadingscreen:image/随意名称/背景名称.后缀名",
    "position_type": "CENTER",
    "offset_pos": "CENTER",
    "position": {
        "x": "forge_progress_bar_count() > 0 ? -screen_width * 0.35 + percentage * screen_width * 0.35 : 0",
        "y": "forge_progress_bar_count() > 0 ? screen_height * 0.15 : 0",
        "width": "forge_progress_bar_count() > 0 ? percentage * screen_width * 0.7 : 0",
        "height": "forge_progress_bar_count() > 0 ? 21 : 0"
    },
    "texture": {
        "x": "0",
        "y": "0",
        "width": "percentage",
        "height": "1"
    }
}

让后按照我的提示来修改

因为我写的是chengming/custom

所以随意名称就是chengming前面放背景图片的时候名字为jdt.png

所以改成customloadingscreen:image/chengming/jdt.png,如图:

自定义加载画面全解[连纯小白都看得懂!]-第28张图片

进度条显示的json写好了,但是需要标记一下我们回到刚才的custom.json文件中

自定义加载画面全解[连纯小白都看得懂!]-第29张图片

renders这一栏里写上随意名称/任意名字的json文件两个配置之间记得用英文逗号隔开

因为我刚才写的是jdt,所以是"chengming/jdt"如图:自定义加载画面全解[连纯小白都看得懂!]-第30张图片

完成!我们上游戏看看!

自定义加载画面全解[连纯小白都看得懂!]-第31张图片

哇,这个进度条好大啊!!!太粗了!不行!那我们应该怎么配置呢?

代码解析(进度条)

把刚才的代码拿下来

{
    "parent": "builtin/image",
    "image": "customloadingscreen:image/chengming/jdt.png",
    "position_type": "CENTER",
    "offset_pos": "CENTER",
    "position": {
        "x": "forge_progress_bar_count() > 0 ? -screen_width * 0.35 + percentage * screen_width * 0.35 : 0",
        "y": "forge_progress_bar_count() > 0 ? screen_height * 0.15 : 0",
        "width": "forge_progress_bar_count() > 0 ? percentage * screen_width * 0.7 : 0",
        "height": "forge_progress_bar_count() > 0 ? 21 : 0"
    },
    "texture": {
        "x": "0",
        "y": "0",
        "width": "percentage",
        "height": "1"
    }
}

学过英文的小伙伴应该认识width(宽)和height(高)吧

正对应的代码里面也有

自定义加载画面全解[连纯小白都看得懂!]-第32张图片我们之需要改代码里面的 ":"前的数值即可自定义加载画面全解[连纯小白都看得懂!]-第33张图片

比如我上文的进度条太宽就可以将自定义加载画面全解[连纯小白都看得懂!]-第34张图片

height(高)的21改成5就可以了!

让我们上游戏试试!自定义加载画面全解[连纯小白都看得懂!]-第35张图片

变短了!好耶!那么进度条的代码解析部分结束

代码解析知识拓展(进度条)

但是有人会说辰林 辰林,你说的我知道了

但是前面这一大段的这些是什么意思我好好奇!

"y": "forge_progress_bar_count() > 0?screen_height * 0.15 : 0"

里的forge_progress_bar_count() > 0 ?

和screen_height * 0.15 : 0 的一大串是什么意思啊?

这些东西说来也简单只是一个判断而已,

forge_progress_bar_count() > 0 ? 的意思是

判断 游戏加载进度条是否大于0,如果当其大于时0运行  :“ 的前面一段

"y":screen_height * 0.15

反之如果小于零便运行 ” :“ 的后面一段

"y":0

别的也是同理


到了这里还是差点意思就不能显示一下跑到百分之几了吗?如果你有这样的想法,那么我们就继续吧!

进度百分比显示

概念部分

先回到customloadingscreen文件夹中

自定义加载画面全解[连纯小白都看得懂!]-第36张图片

因为我们要显示进度百分比,但是百分比并不是一张图片而是一个会变的字符串所以我们需要字体的图片,哪里能搞到计算机能直接读取的字体材质呢?去看看我发的素材吧!找到我发出来的ascii.png文件

将其放到font文件中自定义加载画面全解[连纯小白都看得懂!]-第37张图片


自定义加载画面全解[连纯小白都看得懂!]-第38张图片

放好即可

正文

回到image目录下自定义加载画面全解[连纯小白都看得懂!]-第39张图片

像刚才一样创建一个任意名字的json文件

因为我要创建进度百分比显示所以我将json文件命名为jdtbfb(进度条百分比),如图:

自定义加载画面全解[连纯小白都看得懂!]-第40张图片

先打开他将这一大串复制进去

{
    "parent": "builtin/text",
    "image": "customloadingscreen:font/ascii.png",
    "position_type": "CENTER",
    "offset_pos": "CENTER",
    "text": "forge_progress_bar_count() > 0 ? (floor(percentage * 100)) + '.' + (floor(percentage * 1000) % 10) + '%' : ''",
    "position": {
        "x": "0",
        "y": "forge_progress_bar_count() > 0 ? screen_height * 0.15 + 1 : 0",
        "width": "0",
        "height": "0"
    },
    "colour": "0xFFFFFFFF"
}

如图:自定义加载画面全解[连纯小白都看得懂!]-第41张图片

进度条显示的json写好了,但是别忘了标记一下我们回到刚才的custom.json文件中

自定义加载画面全解[连纯小白都看得懂!]-第42张图片

renders这一栏里写上随意名称/任意名字的json文件两个配置之间记得用英文逗号隔开

因为我刚才写的是jdtbfb,所以是"chengming/jdtbfb"如图:

自定义加载画面全解[连纯小白都看得懂!]-第43张图片

大功告成!我们上游戏看看

自定义加载画面全解[连纯小白都看得懂!]-第44张图片

欸?又遇到问题了?他们两个怎么在一起了,真是太让人伤心了,没关系,让我们直接进入代码解析部分

代码解析(进度条百分比显示)

话不多说先把代码拿下来

{
    "parent": "builtin/text",
    "image": "customloadingscreen:font/ascii.png",
    "position_type": "CENTER",
    "offset_pos": "CENTER",
    "text": "forge_progress_bar_count() > 0 ? (floor(percentage * 100)) + '.' + (floor(percentage * 1000) % 10) + '%' : ''",
    "position": {
        "x": "0",
        "y": "forge_progress_bar_count() > 0 ? screen_height * 0.15 + 1 : 0",
        "width": "0",
        "height": "0"
    },
    "colour": "0xFFFFFFFF"
}

可以看到他们两个交在在一起应该是y轴太接近了,我们只需要将进度条百分比显示的y轴变大一点就行了比如

把screen_height * 0.15 + 1的加1改成+5

自定义加载画面全解[连纯小白都看得懂!]-第45张图片

自定义加载画面全解[连纯小白都看得懂!]-第46张图片

它居然向下跑了而且还是和进度条在一起,我们由此知道了他的y轴数值与y的大小成反比

那么将他改成一个负数呢?比如-10?自定义加载画面全解[连纯小白都看得懂!]-第47张图片

自定义加载画面全解[连纯小白都看得懂!]-第48张图片

完美!

代码解析知识拓展(进度条百分比显示)

有爱找事的小伙伴又会问辰林 辰林这个判断我懂了但是

"text": "forge_progress_bar_count() > 0 ? (floor(percentage * 100)) + '.' + (floor(percentage * 1000) % 10) + '%' : ''",

上面的这一大串我没看懂啊不是,你怎么那么多事?能用就行

遇到了最有耐心的我你算问对人了来,上代码!

"text": "forge_progress_bar_count() > 0 ?(floor(percentage * 100)) + '.' + (floor(percentage * 1000) % 10) + '%': ''",

首先是forge_progress_bar_count() > 0 ?

这个?是用于判断,详细请看代码解析知识拓展(进度条)

(floor(percentage * 100))和(floor(percentage * 1000) % 10)

首先最外面的括号是用于分割的让后是floor()的用法,就让度娘告诉你吧

emmmmm.....度娘今天有事tmd我搜到的是c语言的用法,让必应来告诉你吧

自定义加载画面全解[连纯小白都看得懂!]-第49张图片

至于什么是percentage?

自定义加载画面全解[连纯小白都看得懂!]-第50张图片

一个进度值,但是因为他只会显示0.00001~1所以我们要手动处理一下

这么说你们可能还听不懂给你们打个比方,就是当加载进度为35%的时候percentage它的值为0.35要手动转换成百分比的化就要将其乘以100再在后面加百分号

0.35x100=35  35%

所以 percentage * 100 就是这样来的

(percentage * 1000) % 10又是什么呢?

众所周知%是取余数的意思然后你自己猜猜他是什么意思

提示,和上面同理


写到这里好像还是差点意思,没有显示内存欸,那么我们就继续吧!

内存显示

内存显示的原理和进度百分比显示差不多,都是显示会变的字符串

正文

回到image目录下

自定义加载画面全解[连纯小白都看得懂!]-第51张图片

像刚才一样创建一个任意名字的json文件

因为我要创建内存显示所以我将json文件命名为ncxs(内存显示),如图:

自定义加载画面全解[连纯小白都看得懂!]-第52张图片先打开他将这一大串复制进去

{
    "parent": "builtin/text",
    "image": "customloadingscreen:font/ascii.png",
    "position_type": "TOP_LEFT",
    "offset_pos": "TOP_LEFT",
    "text": "' Memory Usage: ' + memory_used() + 'MB / ' + memory_max() + 'MB'",
    "position": {
        "x": 7,
        "y": 15,
        "width": 0,
        "height": 0
    },
    "colour": "0xffffffff"
}

如图:自定义加载画面全解[连纯小白都看得懂!]-第53张图片

内存显示的json就好了!非常的爽!就这么一点点过程

对了别忘了去custom.json文件标记哦~

怎么标你们应该已经轻车熟路了我就不重复了

直接上图吧自定义加载画面全解[连纯小白都看得懂!]-第54张图片

好的,直接上游戏看看

自定义加载画面全解[连纯小白都看得懂!]-第55张图片

非常的顺利!一点问题都没有所以就没有代码解析了但是还是要上知识拓展代码解析

代码解析(内存示显)

把刚才的代码拿下来

{
    "parent": "builtin/text",
    "image": "customloadingscreen:font/ascii.png",
    "position_type": "TOP_LEFT",
    "offset_pos": "TOP_LEFT",
    "text": "' Memory Usage: ' + memory_used() + 'MB / ' + memory_max() + 'MB'",
    "position": {
        "x": 7,
        "y": 15,
        "width": 0,
        "height": 0
    },
    "colour": "0xffffffff"
}

又有闲的发慌的人来问

memory_used()和memory_max()是什么?自定义加载画面全解[连纯小白都看得懂!]-第56张图片

在这里机翻看看,确实很简单没什么东西自定义加载画面全解[连纯小白都看得懂!]-第57张图片

好了,但是到了这一步了真的不搞个内存使用进度条吗?

内存使用进度条

原理和进度条一样,也没有很复杂

正文

回到image目录下自定义加载画面全解[连纯小白都看得懂!]-第58张图片

俗话说得好事不过三,所以我们这一次要有点变化了直接把素材里的memory_bar.png和memory_base.png都拿过来

并且创建两个任意名字的json

我打算这让两个图片和json名字相同所以,如图:

自定义加载画面全解[连纯小白都看得懂!]-第59张图片

自定义加载画面全解[连纯小白都看得懂!]-第60张图片

并把这两坨代码放上去

{
    "parent": "builtin/image",
    "image": "customloadingscreen:image/随意名称/图片名称.后缀名",
    "position_type": "TOP_LEFT",
    "offset_pos": "TOP_LEFT",
    "position": {
        "x": 10,
        "y": 3,
        "width": "(screen_width - 20) * mem_percent",
        "height": 8
    },
    "texture": {
        "x": 0,
        "y": 0,
        "width": "mem_percent",
        "height": 1
    }
}
{
    "parent": "builtin/image",
    "image": "customloadingscreen:image/随意名称/图片名称.后缀名",
    "position_type": "TOP_LEFT",
    "offset_pos": "TOP_LEFT",
    "position": {
        "x": 10,
        "y": 3,
        "width": "screen_width - 20",
        "height": 8
    },
    "texture": {
        "x": 0,
        "y": 0,
        "width": 1,
        "height": 1
    }
}

自定义加载画面全解[连纯小白都看得懂!]-第61张图片自定义加载画面全解[连纯小白都看得懂!]-第62张图片最后别忘了去custom.json标记!

自定义加载画面全解[连纯小白都看得懂!]-第63张图片

好了!快去开游戏看看吧!

代码解析(内存使用进度条)

bong!

自定义加载画面全解[连纯小白都看得懂!]-第64张图片

这是什么?为什么会这样?

这个时候有人会说,wcnm这是怎么回事这个sb教程制作者!nmlgsb的是不是黑了我的游戏,快帮帮我!

其实我是故意的 诶嘿~

这都多久没出新意了都是复制粘贴一点意思都没有所以继续拓展一下知识自定义加载画面全解[连纯小白都看得懂!]-第65张图片

这个白屏就是自定义加载画面mod的错误界面,当你写的代码有问题将会变成这样

但是不用担心,这不还有我吗?

你往custom.json文件里的variables

自定义加载画面全解[连纯小白都看得懂!]-第66张图片

加入这一大串

"mem_percent": "((floor(memory_used() * 100) + 0.0) / (floor(memory_max() * 100) + 0.0))",

如图:自定义加载画面全解[连纯小白都看得懂!]-第67张图片

再跑一下试试

自定义加载画面全解[连纯小白都看得懂!]-第68张图片

是不是就行了?对,就是现在!进入解析拓展时间!

代码解析拓展(内存使用进度条)

再不拿出点新东西都要睡着了

这一次的代码解析就是变量的应用

自定义加载画面全解[连纯小白都看得懂!]-第69张图片

这段话的意思就是将后面的这一段话赋给了mem_percent这个单词

不行的话你可以将mem_percent替换成"mem_percent": "((floor(memory_used() * 100) + 0.0) / (floor(memory_max() * 100) + 0.0))",

依旧是可以跑的

自定义加载画面全解[连纯小白都看得懂!]-第70张图片


都搞到这了不顺便把时间显示也写了?

进入游戏时间显示

这个和显示内存使用很像,都是显示一个会变的字符串

正文

像之前一样创建一个任意名字的json文件

因为我要创建进入游戏时间显示所以我将json文件命名为go_time_xs(进入游戏时间显示),如图:自定义加载画面全解[连纯小白都看得懂!]-第71张图片

将这一大串复制上去

{
    "parent": "builtin/text",
    "image": "customloadingscreen:font/ascii.png",
    "position_type": "TOP_LEFT",
    "offset_pos": "TOP_LEFT",
    "text": "' Loading Time: ' + floor(time / 60) + 'm ' + floor((time % 60) / 10) + floor(time % 60 % 10) + 's'",
    "position": {
        "x": 7,
        "y": 25,
        "width": "0",
        "height": "0"
    },
    "colour": "0xFFFFFFFF"
}

如图:自定义加载画面全解[连纯小白都看得懂!]-第72张图片

别忘了去custom.json文件标记自定义加载画面全解[连纯小白都看得懂!]-第73张图片

进入游戏看看自定义加载画面全解[连纯小白都看得懂!]-第74张图片

完美效果!好了!恭喜你学会了自定义加载画面的使用方法了!

本篇自定义加载画面全解到此结束,下课!


嗯?你问我进入游戏时间显示代码解析呢?

哦,被我吃了

一个60进制算时间的分钟,然后求余数就能写的东西不跟上面的代码解析知识拓展(进度条百分比显示)一样吗?

看上面去

后记

其实离自定义加载画面的极限远的很呢,缺少的是奇思妙想而已

对了,这些素材来源与辰林的世界!没错!快去玩我的包!看我个人主页!

上完了课,布置一下家庭作业,这里是本教程所有的配置文件,但是我修改了其中6处,请找出错误