前言:
最後:
寫在最後工商時間:
前略,各位日安。
鑒於本工作室(MOCraft Studio墨客工作室)嚴重缺乏技術方面人才,
特開此篇釣魚,願者上吊,吊者不來。尋短者,請跳樓,二樓者,請撞牆。
歡迎各路豪傑切磋、起蒸液、指教,更歡迎加入工作室,惟其希望具熱忱者應徵,
詳情請洽RC 25779269 並找群名片非常奇怪的綠頭格子,敝人在下。
或者是群管 奇貓子。
順帶一提,請自備簡易履歷、格式不限。
前言之戰前準備:
讀者請自行正確的
(1)安裝Java環境、
(2)Java JDK、
(3)Eclipse、
(4)Forge Source(Forge 10.13.2.1230)、
(5)毫無畏懼的心、
(6)一朵耐操的菊花。
本篇一概不進行以上超初階講解。(除非哪天頭撞到又另開一篇教學,瞇眼。)
緒論:
對於如何正確地完成一個GUI,想必這是許多勇者們在這條模組編寫的不歸路上,經常碰
到的難題,一個好的GUI需要一個好的繪師(眼神死)、好的網路溝通、還要簡單用。
接下來我們就先簡單地談談一個Minecraft封包的傳輸吧。
這是一個簡易(陋)的編寫,可以看見我簡單的註冊的Instance還有SideProxy,當然還有
最重要的channel。
其中channel是我們往後要使用到的封包系統,負責傳輸提醒客戶端開啟GUI用的封包還有
客戶端要丟給伺服端處理的GUI資料等等等。
那麼請各位先建立一個GuiHandler,往後會負責處理開啟GUI的部分。
可能有一些碰友們覺得這個傢伙很熟悉,其實你所要做的只有建立一個class檔,
然後把它implements IGuiHandler,接下來讓IDE去幫你新增未實作的方法就好了。
你就會得到這一個漂釀的... 欸... 孩紙?
簡單說明一下就是:
getServerGuiElement是處理伺服器的(廢話)反之,Client的那個就是客戶端。
int ID是GUI的唯一編號、
EntitiyPlayer player是開啟的玩家、
World world 是開啟的世界、int x, int y, int z、分別是開啟地點的X座標、Y座標、Z座標。
不過這邊要稍微注意一下XYZ座標在Minecraft跟現實世界其實是有一點點不一樣的,
但是這部份我們之後再提。
接下來要做點小改造,請各位打開你們的Tutorial.class(如果你們跟我的命名一樣)
我們先把剛剛宣告出來的Channel、Instance、GuiHandler、PacketHandler處理一下。
該註冊的註冊、該給值的給值。如下。
那麼恭喜你,你獲得了一個已經註冊完的GUIHandler、沒有處理能力的兩個
PacketHandler,
現在你沒辦法開啟任何GUI(眼神死),目前它還是個空殼。
這邊需要注意的是,我們有兩個PacketHandler分別處理Server跟Client所收到的Packet,
所以要把這兩個PacketHandler分開來註冊,不能夠在Client端註冊Server端用的Handler,
反之Server端亦然。
當下你需要做的是,畫一張256 * 256像素大小的GUI,然後把它藏在你的硬碟深處,
靜靜的等下一部分釋出XD"
最後:
把程式碼整理整理,按下測試按鈕
你會得到:
恩,很空虛,甚麼鬼都沒有(燦笑)。
寫在最後工商時間:
跟前言還有個人介紹一樣,
目前工作室招收對於
(1)Minecraft模組開發、
(2)登入器設計、
(3)網頁美工、
(4)繪師、
(5)以及建模師
誠摯歡迎,意者請準備簡易履歷,格式不定,
當然更歡迎建築團常駐,或者是長期合作打造RPG地圖。
有甚麼問題,請留言在下面嘴我,
也歡迎參觀實況、管子頻道。