學習方法
首先,資料包是JAVA版Minecraft且是1.13版本之后才有的,如果是基巖版或者版本過老,可能不會支持資料包,
主要通過Minecraft Wiki學習(文章內容很多地方都會參考Wiki的原文,我就不一一注明了),借助一些教學視頻進行輔助,
當然,最重要的還是應該應用于游戲中,多實踐才是關鍵,
大概看了一下,在開始學習之前應該學會JSON的相關知識,很簡單,有面向物件編程基礎的話一看就會,
先從框架來說
資料包下的根目錄有一個檔案夾data,兩個檔案pack.mcmeta,pack.png,這里詳細說一下兩個檔案,data檔案夾將會作為重點單獨介紹,
pack.mcmeta
這個檔案相當于資料包的標識,有了這個檔案,這個檔案包才能被Minecraft識別為資料包,
其中的內容為JSON格式,
例如1.16.4原版的資料包中,pack.mcmeta檔案的內容如下:
注意,根據JSON規范(http://www.json.org, RFC 4627, RFC 7159),JSON是不支持注釋的,但是為了學習做筆記方便,仍然按照C/C++中的注釋方法做一些注釋,如果想要直接用我的代碼,請將所有注釋洗掉后再使用,
{
"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
}
]
}
]
}
至于更加詳細的內容修改,比如物品掉落的概率什么的,之后慢慢細談,現在就是直觀的感受一下資料包對原版內容的修改,
當然,資料包的制作肯定要考慮游戲的平衡性,打僵尸掉鉆石什么的太不合理了,這樣很容易讓游戲失去樂趣,在制作資料包的時候一定要注意這一點,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/234710.html
標籤:其他
