學習方法編程
首先,數據包是JAVA版Minecraft且是1.13版本以後纔有的,若是是基岩版或者版本過老,可能不會支持數據包。json
主要經過Minecraft Wiki學習(文章內容不少地方都會引用Wiki的原文,我就不一一註明了),藉助一些教學視頻進行輔助。框架
固然,最重要的仍是應該應用於遊戲中,多實踐纔是關鍵。dom
大概看了一下,在開始學習以前應該學會JSON的相關知識,很簡單,有面向對象編程基礎的話一看就會。編輯器
數據包下的根目錄有一個文件夾data
,兩個文件pack.mcmeta
,pack.png
,這裏詳細說一下兩個文件,data
文件夾將會做爲重點單獨介紹。學習
這個文件至關於數據包的標識,有了這個文件,這個文件包才能被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。
是一個png格式的圖片,儘可能是正方形的圖片,用於給你的數據包一個好看的圖標。
在存檔的datapacks
文件夾下放入數據包,將修改以後的數據包保存後,在遊戲中輸入/reload
,便可從新加載數據包(有的數據包須要啓動遊戲才能從新加載完成)。
建議使用VScode,這樣能夠加載文件夾的文本編輯器,方便管理和修改各類文件。特別是安裝「Datapack Helper Plus」,「datapack-helper」,「mcfunction」等等插件以後,編輯起來十分方便。
在遊戲中輸入/datapack list
查看遊戲加載好的數據包。
以上內容都是很基本的東西,包括建立一個空的數據包,還有如何給數據包添加描述信息。
固然,僅僅依靠上面的東西是絕對不夠的。重頭戲就是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 } ] } ] }
至於更加詳細的內容修改,好比物品掉落的機率什麼的,以後慢慢細談。如今就是直觀的感覺一下數據包對原版內容的修改。
固然,數據包的製做確定要考慮遊戲的平衡性,打殭屍掉鑽石什麼的太不合理了,這樣很容易讓遊戲失去樂趣,在製做數據包的時候必定要注意這一點。