五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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)遵守國家法律
繁峙县| 咸阳市| 苍山县| 温州市| 灵山县| 中山市| 蕲春县| 化隆| 礼泉县| 乐安县| 乌拉特前旗| 鱼台县| 依安县| 庆城县| 达孜县| 浦城县| 荃湾区| 威宁| 嘉峪关市| 都兰县| 类乌齐县| 南靖县| 岚皋县| 辽源市| 新津县| 鲜城| 湘潭市| 惠州市| 社会| 寿宁县| 上犹县| 日喀则市| 延安市| 武强县| 漳浦县| 连云港市| 阆中市| 太白县| 凌云县| 察雅县| 镇坪县|