Minecraft编辑源码方式修改partical数量限制
修改partical数量限制
今天是大年初一。昨天晚上用replay这个mod在1.12.2的服务器里录制了一段烟花表演,但是烟花生成的粒子数量实在是过于庞大,以至于烟花刚爆炸,生成的粒子就因为达到了数量上限而小时,只剩下爆炸产生的黑色球状粒子,巨丑hhh
于是就需要解除mc的粒子数量限制。想要实现这个目标,有两种方法,一种是直接修改客户端,修改数量限制,另一种是使用mod重写原版的粒子系统。显而易见,第一种方法更合适。
反编译minecraft
关于mcp
Minecraft是闭源的,但是为了编写模组,有了人力反编译的项目,比如即将使用的mcp
,很幸运他们更新到了1.12版本,正好就是服务器使用的。再后来mojang官方提供了对照表,也就不再需要那么麻烦了。不过应该注意传播修改过的客户端是违反mojang的用户协议的。
mcp的下载和使用
至于使用方法,文件里面有docs
文件夹,里面是文档。需要注意java版本,比如mc的1.12.2需要使用java8,最开始因为是17的环境所以失败。
修改partical数量限制代码
反编译完成后,客户端代码位于src\minecraft\net\minecraft\
。需要修改的文件是此目录下的client\particle\ParticleManager.java
。这段代码在第190行:
1 | if (!this.queue.isEmpty()) |
这里我已经把上限值改为了2147483647
,应该够了吧,乐,要是渲染这些粒子能有0.1Fps就不错了hhh
重新编译
创建项目目录
这里需要IntelliJ IDEA
来编译。其实修改也可以在这里,只不过我要改的不多直接用vscode
改完了。
首先新建项目:
然后将mcp目录下的jars
文件夹复制到新建的项目目录。
由于idea不会读取全部子目录内的库,所以使用搜索找出libraries
内的全部.jar
文件,剪切出来,项目目录新建一个lib
文件夹,粘贴进去,然后libraries
文件夹就可以删掉了。
项目路径新建一个资源目录resources
,将原客户端包内的log4j.xml
,pack.png
以及assets
目录复制进去。
最后,将mcp反编译得到的代码src\minecraft\
内的文件复制到项目目录src
文件夹即可。
编译配置
打开idea
的Project Structure
项目结构。
在子目录libraries
,新建选择java
然后选择刚才创建的lib
目录。
再修改子目录Modules
,选中刚才新建的resources
,选择上面的Resources
将其设置为资源目录。
确认上述修改后,继续修改启动项。
创建一个启动项,选择Application
,将Main Class
主类设置为Start
。
然后将工作目录Working directory
设置为之前复制来的jars
目录。
在modify options
中选择add VM options
,在其中填写natives
目录路径,在这里就是-Djava.library.path=versions\1.12.2\1.12.2-natives
。
此时按下Start
按钮就可以看到mc客户端启动啦
打包客户端
打开Project Structure
项目结构,选择Artifacts
,新建选择Jar
内的Empty
,修改Output Directory
导出路径,当然不改也可以。
然后将右侧的双击移到左侧:
最后在build
菜单中选择build Artifacts
,选择buld
,等待编译完成即可
此时就可以替换掉原来的客户端文件开始渲染啦!