今天完成了新道具「便利儲存箱」, 採用Capability System, 我以後就不用考慮對其他模組的支援性問題了.
此箱子加入以前我所使用的排序功能, 也解決了長久以來我對Minecraft內建箱子的不滿意(東西太多很雜亂, 排列很費時間), 在合成道具方面更方便了.
完成這新道具後, 我也順便把「隨身背包」道具的程式碼修改一下, 也採用Capability System, 修改後我發現"怎麼這麼簡單, 以前寫得要死要活的", 而且也不用考慮伺服端與客端的問題, 在 ItemStack 裡儲存數據時, 因為是在container裡調試的, 所以它會自動更新客端的資料, 我也不用再去傷腦筋兩端之間的同步問題.
以前要寫儲存道具的方式, 是要自建一個class, 然後implements 一個 IIventory, 接著就要寫一大堆IInventory的相關函式, 才能令他正確的動作. 現在不用了, 只要事先宣告一個 ItemStackHandler, 指定好想要的 size , 然後在玩家開啟道具時, 反序列化NBT即可, 在玩家關閉道具時, 序列化NBT再存回 ItemStack 的NBT裡即可, 相較於以前的寫法, 現在只要寫三行程式碼就能解決以前想做的事了.
雖然Forge每次在版本大改時, 總是讓我很幹譙, 但是一路看他發展到現在, 真心覺得Forge真的有在成長, 有倒吃甘蔗的感覺, 這只有持續在寫程式的玩家才能體會的, 一般玩家沒去接觸這塊領域是無法了解的.