Minecraft-1.16.2-數據包開發學習#1

學習方法編程

首先,數據包是JAVA版Minecraft且是1.13版本以後纔有的,若是是基岩版或者版本過老,可能不會支持數據包。json

主要經過Minecraft Wiki學習(文章內容不少地方都會引用Wiki的原文,我就不一一註明了),藉助一些教學視頻進行輔助。框架

固然,最重要的仍是應該應用於遊戲中,多實踐纔是關鍵。dom

大概看了一下,在開始學習以前應該學會JSON的相關知識,很簡單,有面向對象編程基礎的話一看就會。編輯器


先從框架來講

數據包下的根目錄有一個文件夾data,兩個文件pack.mcmetapack.png,這裏詳細說一下兩個文件,data文件夾將會做爲重點單獨介紹。學習

pack.mcmeta

這個文件至關於數據包的標識,有了這個文件,這個文件包才能被Minecraft識別爲數據包。測試

其中的內容爲JSON格式。插件

例如1.16.4原版的數據包中,pack.mcmeta文件的內容以下:code

注意,根據JSON規範(http://www.json.org, RFC 4627, RFC 7159),JSON是不支持註釋的,可是爲了學習作筆記方便,仍然按照C/C++中的註釋方法作一些註釋。若是想要直接用個人代碼,請將全部註釋刪除後再使用。orm

{
    "pack"/*存放數據包信息*/:
    {
        "pack_format":6,
        //數據包版本,能夠是任何數字,可是其實有標準,後面會說明。
        "description":"The default data for Minecraft"
        //一段原始JSON文本。在數據包列表下,光標移動到對應的數據包時會顯示此處填寫的描述。
    }
}

pack_format的標準

若是數據包用於1.17快照,則 pack_format應該爲7。若是數據包用於1.16.2版本,則 pack_format應該設爲6。若是數據包用於1.15~1.16.1,則 pack_format應該爲5。若是數據包用於1.13~1.14,則 pack_format應該爲4。

pack.png

是一個png格式的圖片,儘可能是正方形的圖片,用於給你的數據包一個好看的圖標。

數據包的測試

數據包的安裝

在存檔的datapacks文件夾下放入數據包,將修改以後的數據包保存後,在遊戲中輸入/reload,便可從新加載數據包(有的數據包須要啓動遊戲才能從新加載完成)。

建議使用VScode,這樣能夠加載文件夾的文本編輯器,方便管理和修改各類文件。特別是安裝「Datapack Helper Plus」,「datapack-helper」,「mcfunction」等等插件以後,編輯起來十分方便。

在遊戲中輸入/datapack list查看遊戲加載好的數據包。

data文件夾

以上內容都是很基本的東西,包括建立一個空的數據包,還有如何給數據包添加描述信息。

固然,僅僅依靠上面的東西是絕對不夠的。重頭戲就是data,這是纔是數據包實現功能的核心。

data文件夾下能夠建立文件夾,在這裏建立的文件夾的名稱將會做爲命名空間的名稱。

原版Minecraft使用的命名空間爲Minecraft,這意味着只有當數據包須要覆蓋現有的Minecraft數據或將內容添加到原版標籤時才應使用此命名空間。

實現打殭屍掉鑽石

小測試,我但願打殭屍掉落的鑽石而不是腐肉。具體操做以下:

data文件夾下建立新的文件夾,並命名爲Minecraft,進入這個新建立的文件夾。

打怪掉落屬於戰利品表的內容,因此在Minecraft文件夾下建立新的文件夾,並命名爲loot_tables,進入這個新建立的文件夾。

注意:中文Wiki上的內容須要更新,按照上面的說法,直接在loot_tables文件夾下建立json文件就能夠了,可是在1.16.2版本上並不能實現。
使用解壓軟件打開minecraft客戶端核心的jar包,進入\data\minecraft\loot_tables\發現下面還有文件夾,分別爲blocks,chests,entities,gameplay。先無論其餘的內容,咱們能夠在entities下找到殭屍的文件zombie.json
這說明咱們數據包的loot_tables文件夾下也應該建立命名相同的文件夾。

loot_tables文件夾下建立新的文件夾,並命名爲entities進入這個新建立的文件夾。

建立json文件,文件全稱爲zombie.json,這樣就能夠覆蓋原版的內容了。

稍微修改原版zombie.json的內容,並保存便可。

{
  "type": "minecraft:entity",
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:item",
          "functions": [
            {
              "function": "minecraft:set_count",
              "count": {
                "min": 0.0,
                "max": 2.0,
                "type": "minecraft:uniform"
              }
            },
            {
              "function": "minecraft:looting_enchant",
              "count": {
                "min": 0.0,
                "max": 1.0
              }
            }
          ],
          "name": "minecraft:rotten_flesh"//將這一行修改成 "name": "minecraft:diamond" 就可讓殭屍掉鑽石啦。
        }
      ]
    },
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "minecraft:iron_ingot"
        },
        {
          "type": "minecraft:item",
          "name": "minecraft:carrot"
        },
        {
          "type": "minecraft:item",
          "name": "minecraft:potato"
        }
      ],
      "conditions": [
        {
          "condition": "minecraft:killed_by_player"
        },
        {
          "condition": "minecraft:random_chance_with_looting",
          "chance": 0.025,
          "looting_multiplier": 0.01
        }
      ]
    }
  ]
}

至於更加詳細的內容修改,好比物品掉落的機率什麼的,以後慢慢細談。如今就是直觀的感覺一下數據包對原版內容的修改。

固然,數據包的製做確定要考慮遊戲的平衡性,打殭屍掉鑽石什麼的太不合理了,這樣很容易讓遊戲失去樂趣,在製做數據包的時候必定要注意這一點。

相關文章
相關標籤/搜索