(相關(guān)資料圖)
另一個(gè)常用的生成器就是LootTable生成了,這個(gè)生成器可以很方便的產(chǎn)生掉落自身的掉落表,并且也可以產(chǎn)生諸如樹(shù)葉或者受到時(shí)運(yùn)、精準(zhǔn)采集等附魔影響的掉落表,總歸是比復(fù)制了原版掉落表改成自己的物品方便的,并且也可以支持使用物品對(duì)象,降低了遷移、重命名和拼寫(xiě)錯(cuò)誤的風(fēng)險(xiǎn)。
首先,LootTableProvider它并不需要直接編寫(xiě)生成LootTable的方法,它是通過(guò)支持SubProvider,也就是它的子生成器來(lái)產(chǎn)生LootTable,因此我們不需要繼承它并復(fù)寫(xiě)它,只需要構(gòu)建它的實(shí)例即可:
其中LootContextParamSets決定了LootTable的類(lèi)型,為了實(shí)現(xiàn)掉落表,我們需要實(shí)現(xiàn)LootTableSubProvider接口并在上述方法中提交給LootTableProvider。LootTableSubProvider非常簡(jiǎn)單,就是一個(gè)在generate方法中提供id和的對(duì)象。至于對(duì)象,它過(guò)于復(fù)雜,普通開(kāi)發(fā)者往往不需要使用該對(duì)象,而只需要使用原版提供的方法,因此這里暫時(shí)不講述。
其中最重要的SubProvider就是BlockLootSubProvider,它可以用于生成方塊的掉落表,這也是大多數(shù)人需要使用生成器自動(dòng)化的掉落表,但是這個(gè)provider有個(gè)比較討厭的檢查,它會(huì)檢查是否每一個(gè)方塊都恰當(dāng)?shù)奶峁┝说袈浔恚ǘ娌恍枰覀兩傻袈浔恚菚?huì)被認(rèn)為沒(méi)有提供掉落表),這里提供一種繞過(guò)限制的思路:
這樣只需在generate方法里面寫(xiě)生成LootTable的方法即可,常用的有dropSelf(方塊掉落自身),dropOther(掉落其它物品)等,可以查閱BlockLootSubProvider,官方和mcp提供的方法名稱(chēng)都十分具有自述性,可以很方便的使用。
最后,別忘了注冊(cè)!