欢迎光临散文网 会员登陆 & 注册

如何在MinecraftFORGE做出时停功能

2023-07-31 18:01 作者:MegaDarkness  | 我要投稿

时停程度可以分为3个阶段:

1.仅实体的暂停。

2.isGamePaused级别(有颤动,有/无发包)。

4.事件级别时停(有发包)。

第一阶段

最最初始的,你可以去尝试固定住实体的坐标。 对于Mob实体,你可以去尝试设置NoAi。

注意

要保存时停前后的实体信息以便恢复。

第二阶段

来到Mineceaft类里,找到isGamePaused字段。通过反射或AT去掉private修饰后修改字段值为true即可。

你可以监听ClientTickEvent事件手动更新玩家实体。

(你可能会发现一些粒子,实体动画不停打颤,我们应该修改渲染粒子,实体时的局部变量partialTicks为0解决问题)

第三阶段

使用mixin,coremod或其他方法修改Util#millis(有的版本是getMillis)方法的返回值。 定义一个long型的名叫millis的静态变量,在模组主类构造方法里启动一个线程池里使millis+1,同时强制更新客户端玩家,更新键盘,current screen。 如果玩家屏幕,挥手之类的动画出现卡顿,请自己使用mc的timer通过自己的millis获取到正确的partialTicks,并响应的更新渲染。 (如Camera类里的setup方法,GameRenderer类里的renderHand方法等)

笔者实力有限,更加完美的请自行摸索

如何在MinecraftFORGE做出时停功能的评论 (共 条)

分享到微博请遵守国家法律