本模組用於方塊和物品在id與英文名、本地化鍵名之間的轉換。
功能[]
已支持的功能[]
- Java版
- 取得方塊的直接物品形式
- 取得方塊的間接物品形式(滑鼠中鍵取得的物品形式)
- 方塊或物品id -> 本地化鍵名
- 方塊或物品id -> 英文名
- 方塊或物品的本地化鍵名 -> id
- 本地化鍵名 -> 英文名
- 方塊或物品id -> 適用於sprite模組和autolink模組的英文名
- 基岩版
- 判斷物品是否為方塊的直接物品形式(id小於256的物品),並取得對應的方塊id
- 取得方塊的直接物品形式
- 方塊id -> 數字id
- 物品id -> 舊版數字id
- 方塊或物品id -> 本地化鍵名
- 方塊或物品id -> 英文名
- 方塊或物品的本地化鍵名 -> id
- 本地化鍵名 -> 英文名
- 方塊或物品id -> 適用於sprite模組和autolink模組的英文名
- 合理處置物品別名id(be.fromLegacy函數)
- 物品id -> 物品的別名id
子模組的功能[]
- /Data_Table
- 生成java版方塊列表
- 生成java版物品列表
- 生成基岩版方塊列表(附帶方塊與其直接物品形式的id對照表)
- 生成基岩版物品列表(附帶舊版數字id)
- 生成附帶非開發者非教育版的執行時數字id的基岩版物品列表
- 生成附帶教育版執行時數字id的基岩版物品列表
- 生成附帶開發者版執行時數字id的基岩版物品列表
- 生成基岩版物品別名id列表
潛在的功能[]
為以下功能提供了足夠的資料或接口,但未直接實現這些功能。
- 根據是否為開發者版、教育版取得物品的執行時id
- 其他
維護[]
日常維護[]
- 如果加入了新的方塊或物品
- 對於java版
- 直接把id加入進模組:Sandbox/AllConversion2/doc/JE IDs。
- 對於基岩版
- 下載附加包文件,取得addon.html中Items章節的表格。也可以在bedrock.dev/docs/beta/Addons#Items線上查看。
- 從小到大進行排序,小於256的是方塊,大於256的是物品。
- 物品id應該按順序放入模組:Sandbox/AllConversion2/doc/BE Items的「all」表和「new」表中。
- 方塊id應該按順序放入模組:Sandbox/AllConversion2/doc/BE Blocks的「all」表格中。數字id為255減去文件中的數字id。
- 檢查setblock等指令的自動補全
- 如果指令自動補全顯示的方塊id和文件Items章節小於255的方塊id有所不同,在模組:Sandbox/AllConversion2/doc/data的beItemToBlock表中填入相應的轉換。
- 對於java版
- 如果一個物品或方塊的id發生改變
- 更新各個頁面的id。
- 如果教育版更新
- 把模組:Sandbox/AllConversion2/doc/BE Items的「new」表中已加入教育版的物品刪去(glow_stick除外)。
- 如果語言檔案改變
- 請及時更新模組:Sandbox/AllConversion2/doc/JE lang和模組:Sandbox/AllConversion2/doc/BE lang
其他維護[]
- 如果Java版加入新方塊,模組:Sandbox/AllConversion2/doc/data中的jeBlockToItem、jeBlockToItem2、jeBlockIndirectItem三個表根據實際情況更新。
- jeBlockToItem和jeBlockToItem2可以透過自訂超平坦,輸入方塊id,觀察顯示的圖示和名稱是哪個方塊或物品的。如果是空氣,則意味著該方塊沒有物品形式。
- jeBlockToItem表是方塊id->物品id
- jeBlockToItem2表是方塊id->方塊id
- jeBlockIndirectItem則透過創造模式對方塊按滑鼠中鍵取得物品,如果取得的物品和上一條不同,則填入jeBlockIndirectItem表。
- jeBlockToItem和jeBlockToItem2可以透過自訂超平坦,輸入方塊id,觀察顯示的圖示和名稱是哪個方塊或物品的。如果是空氣,則意味著該方塊沒有物品形式。
- 如果新加入的方塊或物品的本地化鍵名不是標準格式(java版:block/item.minecraft.id,基岩版:tile/item.id.name)
- 根據實際需求填寫模組:Sandbox/AllConversion2/doc/data中的jeItemIdToTrkey、jeBlockIdToTrkey、beItemIdToTrkey、beBlockIdToTrkey、beItemTrkeyToId、beBlockTrkeyToId
- 如果遊戲內名稱不能很好地描述一個方塊或物品,根據實際需求填寫jeItemIdToEnname、jeBlockIdToEnname、beItemIdToEnname、beBlockIdToEnname。
- 如果資料值頁面的sprite不能正常顯示,更據實際需求更新beItemSprite、beBlockSprite
基岩版的向下相容[]
- 如果基岩版加入了新的生物桶、生怪蛋、旗幟圖案類物品
- 更新模組:Sandbox/AllConversion2/doc/BE Items的complexAlias表
- 格式為{附加值, id}
- 附加值可以透過
/give @s (bucket/spawn_egg/banner_pattern) 1 <附加值>指令測試得到。
- 附加值可以透過
- 如果基岩版物品的命名空間id改變
- 更新各個頁面的id。
- 透過
/give @s 舊id測試舊id是否依舊被支持。- 如果是,在模組:Sandbox/AllConversion2/doc/BE Items的alias表中加入一項「舊id=新id」
- (通常實驗性玩法中的物品的舊id不被支持,非實驗性玩法的舊id保持支持。)
- 如果基岩版加入了新的物品
- 向了解這方面的人詢問該新增物品是否有舊版數字id
- 如果有,在模組:Sandbox/AllConversion2/doc/BE Items的legacyId表加入一項{舊版數字id, id}
- (新物品的舊版數字id的兩個取得方法:反彙編BDS;透過記憶體修改器或存檔編輯器修改物品欄逐個數字進行測試。)
- 向了解這方面的人詢問該新增物品是否有舊版數字id
用法[]
此模組為元資料模組,不建議在條目中直接使用。應在其他模組中調用,或根據所需功能封裝成模板後使用。
子模組Data Table應在條目中直接透過#invoke調用。
convert[]
透過{{#invoke:Sandbox/AllConversion2/doc|convert|...}}調用已封裝的convert函數,需要傳入多個參數。
- type: block/item
- from: 'enname','id','trkey'
- to: 'enname','id','trkey'
- 1: 要處理的對象
- ver: 版本。je或be
- aux: 可選。基岩版方塊或物品的附加值
- legacy: 可選。基岩版處理物品的別名id的方式
- no: 預設。已知不會傳入普通別名id,且傳入的複雜別名id一定屬於新版。
- unknown-give: 不清楚傳入的複雜別名id是否是屬於舊版,但要求輸出的是具體的物品種類。效果類似於戰利品表中的id。
- unknown-all: 不清楚傳入的複雜別名id是否是屬於舊版,輸出該id可以表示的所有情況。效果類似於配方表中的id。可能會返回'err',如傳入coal,無法判斷是否應該包含木炭,因此輸出'err'。
- yes: 已知傳入的複雜別名id一定屬於舊版。
註:複雜別名id是指,因在新版中已被拆分而對應了多個物品ID的別名ID。如coal、spawn_egg、bucket等。
BE與JE[]
可以透過{{#invoke:Sandbox/AllConversion2/doc|BE|...}}或{{#invoke:Sandbox/AllConversion2/doc|JE|...}}調用內部函數。
其他[]
在其他模組中調用該模組時,對於基岩版,建議先用p.be.fromLegacy(id, aux, legacy)以處理別名id,返回兩個值,把第一個作為id,第二個作為spec,傳入要調用的函數。對於傳入的參數既可能是方塊的直接物品形式(數字id小於256的物品)又可能是普通物品(數字id大於256的剝皮)的情況,建議先調用p.be.getIfBlock判斷是否為方塊的直接物品形式。