前言:
晚上好(哈欠),今天去漆油漆超累(攤)。
上篇講說要完成BlockFirst.class的內容才來做TileEntity。
覺得麻煩(各種反悔),所以咱們還是讓這個方塊繼續Error光溜溜吧!
第2章:不可以性騷擾方塊!
這裡要注意強制轉型的問題。
最後:
晚上好(哈欠),今天去漆油漆超累(攤)。
上篇講說要完成BlockFirst.class的內容才來做TileEntity。
覺得麻煩(各種反悔),所以咱們還是讓這個方塊繼續Error光溜溜吧!
第1章:
簡單來講我們上次並沒有很確切的讓大家理解TileEntity到底有甚麼作用。
所以這次我們著重在配合TileEntity的部分。
首先請打開各位的BlockFirst.class,我們來加入TileEntity。
在createNewTileEntity()的函數裏頭,我們回傳給它的是一個null。
這個代表說方塊並不會被正確的使用TileEntity。
所以我們建立一個這個Block專屬的TileEntity。
姑且就先命名為TileBlockFirst.class,並且新增Package資料夾TileEntity在org.mocstudio底
下。
接著就要在createNewTileEntity()回傳它。
那麼接下來我們就要思考這個方塊的作用是要幹嘛。
這邊姑且我就先亂做吧。XD"
假設這個方塊(準熔爐)的GUI會順便顯示它的世界位置。
基於該方塊可能在千千萬萬種世界,
所以我們來使用TileEntity來存儲它的座標資訊。
十分湊巧的,我們的createNewTileEntity()就會給予一個world參數,
那麼就直接拿來用吧!(我絕對不會說這是故意的XD")
系統會給我們一個錯誤,原因是剛剛自動建立的TileBlockFirst.class並沒有要求World參
數。
所以請打開你的TileBlockFirst.class,幫她加入一個要求World參數的建構子吧!
寫到這邊,可能很多人還是不太懂這樣到底可以幹嘛XD"
沒關係,我理解。
我來做個小小的、小小的,效果呈現。
第2章:不可以性騷擾方塊!
這邊我就做個功能。方便各位觀察效果。
如果這個方塊放下去之後,對著它點右鍵。
方塊會進行全伺服器廣播你正在戳她,還會說出你在哪個世界戳她。(有點害羞的感覺)
請打開你的BlockFirst.class檔案。
讓我們覆寫方塊被戳到的函數吧。
老樣子要確認開頭的Override跟綠色三角形噢!
那麼這邊return true的意思是,代表這個方塊可以被右鍵戳戳。
如果return false的話,會戳失敗XD"
伺服端會在方塊被戳下去的時候,系統會去抓取該位置的方塊,是否有註冊TileEntity,
然後調用TileEntity裏頭的資料出來大喊它在哪裡被性騷擾。
我們首先要檢查的是,處理的部分是不是伺服端。
這邊有一個簡單的東西可以讓我們來檢查。
if判斷式裡面的意思是。如果世界沒有被"遙控"(?)。
我知道這個說法還蠻奇妙的。我們來看看Java Doc裡面寫了甚麼。
"This is set to true for client worlds, and false for server worlds."
如果這個參數被設定為真則為客戶端世界,否則為伺服端世界。
意思就是,嗯... 就是那個意思。(燦笑)
那麼檢查完伺服端之後,接下來就要檢查,這個XYZ座標被戳到的方塊有沒有TileEntity。
還有,當檢查到有TileEntity的話,那麼這個TileEntity是否是這個方塊專屬的TileEntity?
(饒舌,眼神死。)
那麼這樣就檢查完囉!(歡呼)
不過我們還要讓進行資料的調用ˊ口ˋ。
在此之前,我們先加入伺服器廣播的函數吧。
其中""的位置,就是給我們放訊息的String。
但是我們還得處理一個小小的東西。
回到你的TileBlockFirst.class吧!
我在第8行宣告了一個靜態的World變數。
然後在剛剛的建構子裡面,把這個World變數進行初始化。
簡單來講就是把剛剛拿到的參數,放到自己身上。
由於為了保護world參數不會被外面的奇怪東西肛肛好。
所以我是宣告成private的私有欄位。
但是礙於之後我們還需要存取world參數,所以就再度寫了一個getWorldName()函數,
來安全的回傳world的名字。
很複雜聽不懂沒關係,照著打就對了。(大燦笑)
搞定之後呢,再度回去BlockFirst.class檔,我們來把訊息加上去。
因為你直接從world裏頭獲得的TileEntity它是TileEntity(?),
所以裡面並沒有定義我們剛剛寫的getWorldName(),
這個時候要把它強制轉型成正確的TileBlockFirst(),才能夠正確的調用正確的函數噢!
那麼我們做了這麼多。
終於可以稍微的小小測試一下了。(終於,謝天謝地。ˊ口ˋ)
打開你的遊戲並且拿起你的Error方塊先生吧!
接著小心翼翼的把它放到地板。以免它突然亂叫(?)。
勇敢地用你的右(手)鍵性騷擾它吧!
lolllllllllllllllllllllllllllllllllllllllllllllllll(大笑)。
PS:這是單人世界,然後世界命名是ModTest。
同場加映:
為什麼會這樣呢?我們下回分曉。
原來如此簡單的寫法,卻有一個致命的細節沒有注意到!
最後:
這次的教學,恩,對,就是那樣。(#)
最近過得超充實的,其實。每天固定發一篇心得教學綜合文真的還蠻刺激的。
本來只是玩票性質的,想說PO點教學,賺一下存在感。
不然老實說巴哈版潛水潛了快兩年(其實三年)吧。
感覺起來都沒有歸屬感。又不能在場歪留言。
因為我一定會留一些一定會被警察杯杯抓走的東西ˊ口ˋ。
好啦言歸正傳。
Saber大好,麥姊各種我可以! (巴
我是格子,
我們下次再見XD"