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

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

“死亡不掉落”附魔

2022-04-04 20:36 作者:道家深湖  | 我要投稿

湖神有沒有做過類似于“靈魂綁定”之類的附魔?就是死了復(fù)活,擁有該附魔的東西還會在,相當(dāng)于擁有這個附魔的物品死亡不掉落。

今天一位群友問到這個,以后可能還會有人問,那么我就寫個隨筆記錄一下吧。

有人會建議參考暮色的保管符咒,對此我持否定態(tài)度。

暮色的保管符咒實現(xiàn)原理是寫一個專門的類,用列表記錄保管的物品,在玩家復(fù)活時發(fā)進玩家的包里。然而,一旦玩家下線,所有這樣記錄的物品就會立刻被扔出來,灑的滿地都是,極易遺失。因為,他沒有做持久化,沒有寫入存檔,為了不徹底丟失,他只好把物品扔地上。

暮色寫的不好,那么有沒有寫的好的呢?我們看一下植物魔法的堅毅之藤的代碼。

它的思路很簡單:玩家死的時候,把物品刪了,轉(zhuǎn)化為數(shù)據(jù)存在nbt里,復(fù)活時再根據(jù)創(chuàng)造一份完全一致的物品。


首先,需要一個判斷某stack是否應(yīng)該死亡不掉落的接口。在上述的例子中,是hasIvy。植物魔法使用NBT標(biāo)記判斷一個道具是否有“堅毅之藤”附著。如果是附魔的話,改寫成對應(yīng)的判斷就好??傊?,

接著,監(jiān)聽LivingDropsEvent。為什么不是死亡事件LivingDeathEvent呢?因為死亡可以被中斷,你監(jiān)聽之后,可能有其他mod執(zhí)行免死。

在這個事件中,檢查掉落物的列表。每個需要不掉落的道具被扔進臨時列表,并從掉落列表里去掉。

接下來就是關(guān)鍵了,他把每一個道具都調(diào)用了stack.write(new?CompoundNBT()),轉(zhuǎn)化為一條nbt數(shù)據(jù),然后按照

  • XXX_1 = {掉落物數(shù)據(jù)}

  • XXX_2 = {掉落物數(shù)據(jù)}

  • XXX_3 = {掉落物數(shù)據(jù)}

的格式依次存進玩家的持久化NBT里。之所以要存進持久化的部分,是為了防止這數(shù)據(jù)在玩家死亡或者下線的時候清掉。

最后,他又存了一個int,表示到底有幾條這樣的數(shù)據(jù)。

之后,監(jiān)聽復(fù)活事件PlayerRespawnEvent?在復(fù)活的時候,根據(jù)個數(shù),逐個恢復(fù)這些數(shù)據(jù)發(fā)到包里。包如果滿了,就調(diào)用entityDropItem把道具扔地上。執(zhí)行完畢之后,清除掉這些數(shù)據(jù),以免下次死亡時又刷出一份。

https://www.mcmod.cn/item/407171.html

我之前制作過這樣一件道具,它的一個效果是死亡不掉落。相比之下,我寫的就爛多了。

我監(jiān)聽的是死亡事件,如果玩家在我事件監(jiān)聽后復(fù)活,他就有可能把這個道具卡沒。不過,我沒法像他那樣監(jiān)聽掉落事件,因為我需要知道他死亡時這個道具在哪,是否穿在身上。


“死亡不掉落”附魔的評論 (共 條)

分享到微博請遵守國家法律
特克斯县| 寿阳县| 云龙县| 阿拉善右旗| 常州市| 邮箱| 舒城县| 惠水县| 东方市| 河池市| 卓尼县| 兴化市| 泸溪县| 太白县| 清流县| 平武县| 阳城县| 吴江市| 浦城县| 会东县| 西林县| 克拉玛依市| 育儿| 白水县| 永春县| 称多县| 区。| 镇原县| 哈密市| 天祝| 治县。| 荥经县| 衡山县| 桦甸市| 多伦县| 中宁县| 西城区| 工布江达县| 揭阳市| 平阳县| 石河子市|