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

歡迎光臨散文網(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)聽掉落事件,因為我需要知道他死亡時這個道具在哪,是否穿在身上。


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

分享到微博請遵守國家法律
姜堰市| 九江县| 远安县| 凤山县| 竹山县| 建昌县| 忻城县| 湘乡市| 凤凰县| 凤翔县| 祁连县| 乌恰县| 石家庄市| 卓尼县| 兴化市| 金秀| 黔西县| 上林县| 苗栗市| 黔南| 丰城市| 平塘县| 侯马市| 十堰市| 江陵县| 金沙县| 南投县| 安福县| 丰宁| 财经| 扶风县| 读书| 庆阳市| 兴文县| 连平县| 依安县| 佛山市| 平遥县| 扬州市| 龙胜| 阿拉善左旗|