Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement
這是文件頁面,它應該被放置到Module:Sandbox/AllConversion2。查看Template:Documentation以取得更多資訊。

本模組用於方塊和物品在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表中填入相應的轉換
  • 如果一個物品或方塊的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表。
  • 如果新加入的方塊或物品的本地化鍵名不是標準格式(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;透過記憶體修改器或存檔編輯器修改物品欄逐個數字進行測試。)

用法[]

此模組為元資料模組,不建議在條目中直接使用。應在其他模組中調用,或根據所需功能封裝成模板後使用。

子模組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判斷是否為方塊的直接物品形式。



Advertisement