ETH官方钱包

切換
舊版
前往
大廳
主題

【Forge】一個正確編寫GUI的正確姿勢。Part 01

格子@懷念光牧的社畜 | 2015-03-11 13:24:30 | 巴幣 24 | 人氣 541

前言:
        前略,各位日安。
        鑒於本工作室(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地圖。
        
        有甚麼問題,請留言在下面嘴我,
        也歡迎參觀實況、管子頻道。

創作回應

我照著寫,結果都在載入的時候閃退,crash-report上寫Caused by: cpw.mods.fml.common.LoaderException: Attempted to load a proxy type com.morning.mineskill.gui.ProxyClient into com.morning.mineskill.Main.proxyServer, but the types don't match,這哪裡有問題嗎?
2015-08-31 19:15:52
格子@懷念光牧的社畜
對不起,我沒有看到你的留言[e28][e28][e28][e28][e28][e28][e28][e28]
如果你還有想要做,一樣是1.7.10的專案的話,不妨可以站內信給我,
要是我還是很久沒有回應的話,歡迎用小屋留言打我。[e30][e30][e30]
2016-04-19 21:21:32
小知
我覺得標題也可以改成,編寫GUI的正確打開方法www
2016-07-16 11:39:43
格子@懷念光牧的社畜
抓錯字文法達人。(蓋章
2016-07-16 11:42:52

更多創作