最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)遵守國家法律
论坛| 阳东县| 伊金霍洛旗| 三明市| 静乐县| 巩义市| 轮台县| 遂昌县| 阿图什市| 枞阳县| 依安县| 鹤庆县| 凯里市| 博湖县| 红桥区| 碌曲县| 大丰市| 安乡县| 山阴县| 始兴县| 临清市| 大洼县| 长沙市| 青海省| 衡南县| 濉溪县| 玛沁县| 盐亭县| 怀宁县| 北川| 汨罗市| 东乌珠穆沁旗| 宁河县| 三原县| 井陉县| 吉安县| 鹤山市| 彩票| 云阳县| 赣榆县| 亳州市|