在這一節中,我們先不涉及編碼,而是先了解資源包和數據包。資源包可以改變客戶端的數據,例如材質、音樂、語言文本翻譯等,但不會改變遊戲邏輯。數據包則是用來改變服務器數據的,比如掉落物列表、合成表、函數標籤等,會修改遊戲邏輯。這些都是原版支持的修改遊戲資源的方式,同時也會在我們的mod中使用到這些技術,因此我們需要對其有所瞭解。
關於具體的寫法,我們可以參考wiki上的相關內容,其中詳細介紹了每個章節的內容,有些章節還有額外的文章以避免篇幅過長。可以深入閱讀其他文章,這裡面的內容非常豐富。
一個關鍵的部分是文件格式,比如我已經提取出來的原版格式中的block states。例如,我們找到門,裡面描述了門的朝向、是否打開、鉸鏈位置等,以及模型的指定。這些都是JSON文件的格式,讓我們瞭解文件的結構並不難,很容易學習。
JSON文件並不複雜,只是一種文件編寫格式,不是什麼高深的東西,只是讓我們瞭解如何編寫這種格式的文件。
接下來我們再談一下數據包。我們也提取了一個原版數據包例子,比如說我們想看掉落列表,例如烈焰人,我們可以看到其格式。在數據類型中有許多章節,描述文件的格式以及PC格式是怎樣的,還有相關小文章。
其中一個重要部分是進度,如果你想為遊戲編寫進度,可以查看相應章節,瞭解文件格式以及各種細節都有詳細說明。但你不需要照著這些寫,最好的方法是直接複製粘貼,找到原版文件,複製過去,然後修改成類似的內容。
舉個例子,如果你的方塊需要精準採集才能掉落特殊物品,你可以找到原版中需要精準採集的方塊,比如像動物石頭,我們知道只有精準採集才會掉落石頭,否則是原石。在這裡我們可以看到需要"sc touch"精準採集才會掉落石頭,這些都是有關聯的。
直接對著這些內容看,就可以理解,非常簡單。直接複製黏貼修改即可。這樣我們對資源包和數據包有了一些瞭解。
當然,有些人可能不清楚如何提取原版數據。首先,我們可以找到1.20版本的原始數據包。首先,需要自行下載遊戲,並使用壓縮軟件打開遊戲文件夾,其中 data 文件夾就是原版數據包,直接拷貝出來即可。
另外,在 assets 文件夾中包含了一半的資源包,因為並非所有內容都在這裡,有些資源需要通過查找 assets indexes 文件夾下的 JSON 文件來獲取信息。打開該 JSON 文件(以1.20.1為例),格式化後可以看到 hash 值,代表著哪個文件。我們可以根據這個 hash 值創建一個類似的文件夾,例如 icons,並在內部創建一個對應的文件,這個文件名就是該 hash 值,可以在 objects 找到相應的文件。
如果覺得這個提取過程太繁瑣,也可以編寫程序自動化完成這個過程。相信如果之前有基礎知識的話,能夠輕鬆搞定這個自動化提取文件的方法。我也寫了一個簡陋的程序,使用 NWJS 編寫,可以用於提取文件,導出到指定目錄。
這期先講到這裡,主要理解這些內容是什麼,因為之後的 mod 製作會用到它們。即使你不懂得編寫,也沒關係,只需要瞭解一下,按照 wiki 上的指引稍作修改即可。