如何在MinecraftFORGE做出時停功能
2023-07-31 18:01 作者:MegaDarkness | 我要投稿
時停程度可以分為3個階段:
1.僅實體的暫停。
2.isGamePaused級別(有顫動,有/無發(fā)包)。
4.事件級別時停(有發(fā)包)。
第一階段
最最初始的,你可以去嘗試固定住實體的坐標(biāo)。 對于Mob實體,你可以去嘗試設(shè)置NoAi。
注意
要保存時停前后的實體信息以便恢復(fù)。
第二階段
來到Mineceaft類里,找到isGamePaused字段。通過反射或AT去掉private修飾后修改字段值為true即可。
你可以監(jiān)聽ClientTickEvent事件手動更新玩家實體。
(你可能會發(fā)現(xiàn)一些粒子,實體動畫不停打顫,我們應(yīng)該修改渲染粒子,實體時的局部變量partialTicks為0解決問題)
第三階段
使用mixin,coremod或其他方法修改Util#millis(有的版本是getMillis)方法的返回值。 定義一個long型的名叫millis的靜態(tài)變量,在模組主類構(gòu)造方法里啟動一個線程池里使millis+1,同時強制更新客戶端玩家,更新鍵盤,current screen。 如果玩家屏幕,揮手之類的動畫出現(xiàn)卡頓,請自己使用mc的timer通過自己的millis獲取到正確的partialTicks,并響應(yīng)的更新渲染。 (如Camera類里的setup方法,GameRenderer類里的renderHand方法等)
筆者實力有限,更加完美的請自行摸索
標(biāo)簽: