我的世界崩伺服器教學java版
[WARNING] 本篇適用於Minecraft服務端/客戶端報錯的診斷分析,其他游戲除外,比如網易
[WARNING] 本篇適用於Minecraft服務端/客戶端報錯的診斷分析,其他游戲除外,比如網易
[WARNING] 本篇適用於Minecraft服務端/客戶端報錯的診斷分析,其他游戲除外,比如網易
我所說的報錯,指的是一款名為《Minecraft》的游戲中的報錯。並不是《我的世界》的報錯
在大家遊玩Minecraft時,有時需要裝一些Forge模組以此來提高可玩度,但自己配置模組包的時候,總會造成游戲崩潰,並且大多數人還看不懂崩潰報告更有甚者連崩潰報告輸出目錄都不知道在哪,於是本篇教程應運而生。
一些俏皮話
Minecraft這個游戲,各種BUG和解決方案如果寫成一堆不重復的書,摞起來的厚度可以比姚明還高。
所以這個游戲不是一般的神奇,尤其是當你在看崩潰報告的時,你更會體驗到這一點。
你不加模組,MC也會崩潰,加了還是崩潰。這是一個比較罕見的情況。
大多數情況是你一股腦加了一堆模組,然後突然蹦了,就不知道怎麼辦了。
幸運的是,這時候,你有60%的概率可以找到問題所在並解決這個問題。
尋找崩潰日誌
首先,你得知道你的客戶端/服務端目錄
客戶端的CrashReport文件夾目錄:(.minecraft\crash-reports)
如果你啟用了版本隔離,那就在(.minecraft\versions\xxxx\crash-reports)
服務端的CrashReport在你的服務端根目錄下。
這個條件的前提是你的服務端是人類已知的服務端,而不是外星人製造的服務端。
打開崩潰日誌
接下來我們對報錯的分析,均以一個Minecraft 1.12.2 Forge服務端為例
嗯,我們可以看到,crashreport目錄下的所有文件都是以
crash-日期_具體時間-server.txt命名的
如果是客戶端的崩潰報告日誌,後面的server則是client。
然後我們找到一個最新的日誌打開並分析。
告訴你怎麼瞬間找到最新崩潰日誌,
直接點擊這個按鈕就完事了。然後會按照報告的生成時間進行排列。
重要的事說三遍
接下來我們對報錯的分析,均以一個Minecraft 1.12.2 Forge服務端為例
接下來我們對報錯的分析,均以一個Minecraft 1.12.2 Forge服務端為例
接下來我們對報錯的分析,均以一個Minecraft 1.12.2 Forge服務端為例
下載文本編輯器
首先你需要一個文本編輯器來查看崩潰報告,
這里我推薦微軟官方的Visaul Code: 點我下載.
然後我們就可以愉快地打開報告進行查看了。
開始分析
好了,我們說了這么多廢話,是時候開始正式的分析了。
我估計前面的事大多數人已經做完了,就等著我講這個。
廢話不多說,開始。
打開後我們首先看到的是這個
其中,WARNING coremods are present:xxxxx 是廢話,你根本不用管。
產生這種警告是因為有的作者動了Minecraft底層的代碼,然後Forge為了方便,給你整出來了。
在99.9999999%的情況下,coremods在理論上不會造成崩潰。所以你可以忽略這些。
再往下看。
我們先引出幾個重要概念,當然你不用理解。
你會發現這些報錯里都會有一大堆的文字:
at net.xxxxx
at org.xxxxxxxx
at com.xxxxxx
at java.lang.xxxx
這些有專門的術語,叫做棧幀(stacktrace)。
CPU寄存器的空間是極其有限的,因此方法的調用需要在棧上開辟空間,每調用一個方法就會生成一個棧幀,因此崩潰報告里的一堆at at
at所代表的一系列棧幀,某種意義上是一條調用鏈,最後被調用的方法(也就是爆出異常的方法)會被崩潰報告放在最上面
我們可以看見,頂上有
這3行東西,
第一行是廢話,你可以不用管。
第二行這個報告中最後一個棧幀拋出異常的時間。
第三行是這個報錯的描述,也就是人類可讀的大白話形式。
從這開始,下面的句子都不是人類可讀形式,當然。相比原版的報錯來說,Forge的報錯非常非常人性化了。
我們可以從第三行看到,這個崩潰報告的描述是 Ticking player。
player代表球員 玩家,也就是說這個報錯跟玩家有關系。
Tciking指的是刻,這個以後再說。
然後我們再來看下面的報錯
這個報錯片段中。
第一行是錯誤類型
我們可以看到,這個報錯的錯誤類型是
java.lang.IndexOutOfBoundsException
如果你開過Minecraft群組伺服器,或者學過java。你可以知道
這個叫做數組下標越界異常,是一個在Minecraft中非常常見的異常。
我們不用去管這個具體是什麼,直接往下看。
下面那些一大堆棧幀的排列,並非沒有順序。
這些棧幀的排列方式,是由它們拋出異常的順序決定的。
聽不懂?我們看圖
紅色箭頭指的棧幀,是第一個拋出異常的棧幀。
然後黃色箭頭的棧幀,是最後一個拋出異常的棧幀。
現在你懂了棧幀的排列順序了吧。
最前面的棧幀就是最後一個拋出錯誤的位置,也就是說大多數情況我們是從這里下手。
或者從第一個棧幀的後面幾個棧幀下手。
好,我們繼續看。
現在我們遇到的是指數組下標越界異常。
例如:一個ArrayList數組中沒有元素,而你想獲取第一個元素,運行是就會報此類型的錯誤。
聽不懂?我們看報錯!
看看,最後棧幀拋出的異常,就是ArrayList在獲取元素的時候沒找到。
當然你不用在意這個,繼續往下看。
這里已經出現了產生這個崩潰的模組名字。
這個模組叫做:slashblade,也就是大家經常玩的拔刀劍。
然後你發現,這些棧幀的形式都是
at xxx.xxxxxxx.xxxxxx.xxxxxxxx.xxxxxxx.xxxxxx(xxxx.java:xxxx)
如果你以壓縮包形式打開拔刀劍模組JAR文件,
你會發現一件事。
那就是這些棧幀其實就是這個JAR壓縮包的內部目錄結構!!!!!
就比如這條棧幀
at mods.flammpfeil.slashblade.item.ItemSlashBlade$ComboSequence.get(ItemSlashBlade.java:310)
我們可以把所有的" . 「去掉,改成」 / 或者 \ "
這樣就是一個文件目錄了!!
at mods.flammpfeil.slashblade.item.ItemSlashBlade$ComboSequence.get(ItemSlashBlade.java:310)
相當於
at mods\flammpfeil\slashblade\item\itemSlashBlade
而這段藍色的,ComboSequence.get,指的是這個棧幀中拋出異常的方法。並不是文件目錄。
括弧里的ItemSlashBlade.java:310指的是,
這個異常發生在
ItemSlashBlade.java這個文件夾中的第310行。
是不是突然明白一大堆東西!!!!!!!!!
下面的圖就是我用壓縮包形式打開拔刀劍模組文件後,
把棧幀轉換成目錄,就找到了拋出異常的文件路徑。
深度分析
好了,那麼我們接下來進行硬核(Hardcore)分析吧
上面我們已經找到了這個崩潰中有拔刀劍的信息
那麼我們就進一步分析。
我們知道,拔刀劍有幾個棧幀拋出了異常,那麼我們以最後一個拋出異常的棧幀進行分析。
amods.flammpfeil.slashblade.item.ItemSlashBlade$ComboSequence.get
從這段信息中我們得知,這個拋出異常的方法在ComboSequence.Get中
ComboSequence翻譯過來就是組合技,然後我們進一步分析
既然這個崩潰出在了拔刀劍的組合技上,那也就是說。
我的伺服器崩潰是因為,有某個人用了拔刀的組合技,然後不知道觸發了什麼BUG。伺服器就因此崩潰了。
很好,如果你能分析到這一步,那就快接近真相了!
上 代 碼
我們首先登陸Github(世界上最大的代碼託管站)
然後找到拔刀劍的開源代碼倉庫,並依次進入目錄
src/main/java/mods/flammpfeil/slashblade/item/ItemSlashBlade.java
然後這個就是拋出異常的原代碼了。
然後搜索方法 ComboSequence.get
//報錯產生的位置
public static ComboSequence getComboSequence(NBTTagCompound tag){
return ComboSequence.get(tag.getInt(comboSeqStr));
}
很好,你可能看見一個熟悉的詞彙,叫做NBT
我們引用一段網路上的話
二進制命名標簽(Name Binary Tag),NBT格式為Minecraft中用於向文件中存儲數據的一種存儲格式。NBT格式以樹形結構並配以許多標簽的形式存儲數據
既然如此,我們就可以知道
這個報錯的產生和NBT標簽有關系,然後我們只需要看見tag這個詞即可。
這就代表,這個異常的產生是因為在獲取組合技的NBT數據時產生異常,在結合最後一個拋出的異常
也就是數組下標越界異常
我們就可以推導出這個異常的產生了。
一個玩家在使用拔刀的組合技時,然後這個組合技因為某種原因無法使用,也就是ArrayList數組元素為空,導致拋出數組下標越界異常,引發Minecraft伺服器保護機制然後自動關服。並產生這個報錯。
好了,我們繼續看下面的棧幀。
對於下面的棧幀來說,上面的棧幀全是主要原因。也就是說下面的棧幀都是廢話
不過我還是貼出來讓你了解一下。
很好,接下來我們看紅圈內的棧幀。
其中所有 net.minecraftforge.fml.xxxx的棧幀,基本上沒什麼有價值的信息。
我們繼續看下面 net.minecraft.xxxx的棧幀,我們可以看到關鍵詞彙那就是entity。
得出結論
Entity就是實體的意思,也就是說這個東西出現在玩家使用組合技與實體進行交互時才發生的數組下標躍境異常
我們繼續看
這2段代表了有關玩家的信息,意義不大。
我們在這些棧幀中可以看到有network和server單詞。
這代表這些棧幀與網路和服務端關西了。
這段也是意義不大,而且與拔刀劍產生的報錯無關,我們繼續看。
這段才是好戲,我們可以看到一個片語叫playerLoggedOut,這個代表玩家登出伺服器。
也就是玩家掉線
然後我們結合這些堆棧拋出異常的順序。
我們就可以得知一個大概順序。
玩家使用組合技後,首先從掉線
然後服務端發現異常
然後服務端整理崩潰後就關閉伺服器了。
很好,我們對錯誤的分析已經結束了。
接下來我們繼續往下看!
完成看崩潰報告的棧幀並得出結論~
修復報錯
這是下面的內容。
我們可以看到大大的Head (頭部)字樣
然後Thread(線程): Server thread(主線程)
我們可以得到一個信息
那就是說,這些棧幀拋出錯誤是在伺服器主線程上拋出的,所以才會導致伺服器自我保護機制開啟並關閉伺服器。
我們繼續往下看。
我們可以看見大大的 Player being ticked
這段代表有關出錯實體的名字。
然後既然出現了Player,代表這個實體是玩家。
也就代表,這個是出錯的實體是玩家。因為那個錯誤拔刀劍在玩家手上。所以出錯實體是玩家。
然後
Entity Type是實體類型,Entity ID是實體的ID,Name就不用解釋了,是實體名。
因為這個實體是玩家,所以實體名就是玩家名。
⑵ 我的世界java版1.12怎麼進入其他伺服器大全
1、打開我的世界Java版。
2、點擊開始游戲。
3、選擇加入伺服器。
4、選擇想加入的伺服器就可以了。
⑶ 我的世界伺服器java問題 伺服器崩潰
把埠改了試試在server.properties文件server-port:
25565 把25565改成其他的如:25567
再開如果可行加入伺服器時在ip後面要加上:25567 (冒號也要打)
⑷ 用java8運行我的世界是崩潰了,求大神
這個錯誤發生在JAVA 開始工作之前,所以是個配置錯誤,比如目錄帶空格漢字或不存在
⑸ 我的世界 java安裝正版啟動游戲詳細視頻教程_這樣你還能學不會
這次要和大家分享的是《我的世界》一段非常高端又基礎的教學視頻,說它基礎是因為這是你在玩游戲前必備的操作,而說高端則是因為無數的人都被這些復雜的操作給難倒了。你問我在說什麼?當然是啟動游戲啊!
我的世界正版想要進入游戲必須安裝JAVA,但是很多玩家不會,即使自己弄了啟動游戲也會出現沒反應之類的問題。所以下面將要教會大家的是1、如何啟動游戲
2、如何安裝JAVA
3、正版登陸。
《我的世界》如何啟動游戲
安裝JAVA
正版登錄
現在關於我的世界正版安裝JAVA、啟動游戲相信你已經沒有什麼疑問了?那下面就該設置游戲畫面了,一起進入
《我的世界》提高幀數、視角詳細設置視頻教程
更多相關內容請關註:我的世界專題
⑹ 我的世界一進伺服器,客戶端崩潰 求解決方法
有可能是伺服器安裝了防作弊模組,你可能是有下載TMI或者NEI或者一些可以作弊的模組,這樣可能會導致客戶端崩潰;也有可能是你裝的客戶端的版本的伺服器要求的版本不一樣,也會導致客戶端閃退甚至崩潰;還有可能是客戶端的java版本過低或過高,與伺服器的java不一致,更是會導致客戶端崩潰
求採納~
⑺ 我的世界java版怎麼開伺服器
Java版需要下載伺服器核心(原版就官方,模組Sponge),然後配置伺服器,最後把IP映射,一個伺服器就好了^0^~
詳細教程
以官方核心為例
第一步,新建記事本,輸入圖片的代碼(Xmx是最大內存,Xms是最小內存,按電腦配置設置)
伺服器控制台
第五步,映射網路,網上有教程
這樣遠不如雲伺服器方便,伺服器配置高,自帶公網ip,但是貴,題主有錢可以試試
⑻ 我的世界java版1.12怎麼進入其他伺服器大全
1.打開我的世界Java版。2.點擊開始游戲。3.選擇加入伺服器。4.選擇想加入的伺服器就可以了。
《我的世界》是一款3D第一人稱沙盒游戲。玩家可以在三維空間中自由地創造和破壞不同種類的方塊,用想像力建立並探索一個專屬於玩家的世界。游戲畫風獨特,主打積木馬賽克風。游戲里玩家可以在單人或多人模式中通過摧毀或創造方塊以創造精妙絕倫的建築物和藝術,或者通過收集物品探索地圖來完成游戲的主線任務,通過自己創造的作品來體驗上帝般的感覺。
⑼ 我的世界伺服器怎麼改JAVA
直接把java路徑改為 java+空格+你的我的時間伺服器那個jar文件位置
⑽ 進入玩我的世界出現java(tm)停止運行怎麼辦
在我的電腦搜文件「java」或「javas」然後一個一個路徑嘗試。