国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【我的世界1.19.4mod開發(fā)】解決重生后Capability無法同步到重生玩家實(shí)體的問題

2023-08-15 20:12 作者:尤爾沃克不會(huì)解方程  | 我要投稿

感謝大佬@Flandre芙蘭在Kook頻道里愿意抽出時(shí)間協(xié)助我這個(gè)小萌新解決問題(鞠躬.jpg)

一、背景描述

我在我的MOD中為玩家添加了一個(gè)經(jīng)驗(yàn)等級(jí)系統(tǒng)(Player Level Capability),玩家有階段(Elite Level)、玩家等級(jí)(Player Level)、經(jīng)驗(yàn)(Experience)三種屬性。在1.19.4的Minecraft中,玩家死亡重生后,Capability的數(shù)值會(huì)重置為初始值,然而玩家等級(jí)理論上來講是不能隨著玩家死亡而重置的,因此需要監(jiān)聽玩家死亡相關(guān)的事件,將死亡前的Capability同步到重生后的玩家實(shí)體。



二、問題描述

有問題的代碼部分如下:

我在這里監(jiān)聽了玩家實(shí)體克隆事件,從理論上來講,oldPlayerLevel存儲(chǔ)著玩家死亡前的Capability信息,使用newPlayerLevel存儲(chǔ)著玩家重生后的Capability信息,我使用如下代碼對(duì)死亡前后的Capability進(jìn)行同步:

然而同步失敗了,我用/kill指令殺死玩家后重生,結(jié)果沒有輸出“old: 死亡前的經(jīng)驗(yàn)值 new: 死亡后的經(jīng)驗(yàn)值”的信息,這說明oldPlayerLevel.ifPresent(Lambda表達(dá)式)沒有按住預(yù)期那樣執(zhí)行Lambda表達(dá)式,這也意味著oldPlayerLevel.isPrensent()返回值為false。



三、問題解決

我嘗試了很多辦法,試圖讓oldPlayerLevel.isPrensent()返回值為true,但是都失敗了,于是我換了一種思路解決問題。

我設(shè)置了一個(gè)靜態(tài)全局變量cachePlayerLevel用于緩存玩家的Capability信息,這個(gè)全局變量在玩家進(jìn)入游戲的時(shí)候緩存玩家的Capability(其實(shí)可以用“指向”,因?yàn)槲抑苯影淹婕业腃apability賦值給了這個(gè)全局變量),在玩家死亡重生后將重生后Capability的值更新為全局變量緩存的值,然后讓全局變量緩存重生后玩家的Capability的值。

修改后的代碼如下(也可以不這么寫,僅供參考):

這個(gè)全局變量定義在PlayerLevel(也就是定義這個(gè)Capability的類)中

接著,監(jiān)聽玩家進(jìn)入游戲的事件:

然后把出問題的部分(哪里出問題已經(jīng)寫在上面代碼的注釋中了)修改為:

進(jìn)入游戲后,一切按照計(jì)劃運(yùn)行,大功告成!

如果這篇文章幫到了你,麻煩長按點(diǎn)贊給一個(gè)免費(fèi)的三連吧


【我的世界1.19.4mod開發(fā)】解決重生后Capability無法同步到重生玩家實(shí)體的問題的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
南涧| 深圳市| 额尔古纳市| 和林格尔县| 贞丰县| 衢州市| 石景山区| 诏安县| 梅河口市| 垦利县| 石林| 腾冲县| 赤壁市| 茶陵县| 嵊州市| 横峰县| 隆化县| 图木舒克市| 锦屏县| 和平县| 乌兰浩特市| 和政县| 孝感市| 黑山县| 遂宁市| 扬中市| 澄城县| 沂水县| 大荔县| 湟源县| 台东县| 常宁市| 噶尔县| 友谊县| 宁远县| 北川| 丹阳市| 新巴尔虎右旗| 佛冈县| 吉隆县| 建平县|