Minecraft的疑難雜癥#10-實(shí)體、方塊出錯(cuò)啦,存檔就不讓進(jìn)了?
Rendering Block Entity |?Rendering entity in world
Colliding entity with block
Ticking Block Entity |?Ticking Tile Entity |?Ticking Entity
Tesselating block in world |?Tesselating block model
以上為崩潰日志中的一些關(guān)鍵詞,同時(shí)也是為本篇文章適用的范圍~
因?yàn)楸容^多的崩潰種類擠在這一篇文章里而且標(biāo)題寫不下所以開頭先提幾個(gè)Description后的句子或者是下方的具體原因來湊字?jǐn)?shù)檢查你需不需要看這篇文章。當(dāng)然凡事都有例外,如果你自己的崩潰類型沒有出現(xiàn)在這篇文章里但你自己又覺得很像這種類型的就接著看下去吧,說不定就解決了呢。沒錯(cuò)我是故意不分逗號(hào)的嘎嘎嘎嘎嘎嘎......

首先,讓我先給這種由于特定的實(shí)體或方塊出錯(cuò)導(dǎo)致的存檔無法進(jìn)入的崩潰起個(gè)名字,為了下文方便總稱w,就叫作奶奶的為什么不讓我進(jìn)存檔,進(jìn)啊,不進(jìn),不進(jìn)我就炸檔 “物件崩潰”吧。
這個(gè)問題也是比較容易發(fā)生的(原版也會(huì),但更多的是存在模組的情況下),特別是模組裝得超多了之后,一些模組的不兼容性或者是一些方塊實(shí)體就會(huì)跑出來手舞足蹈地對(duì)你的存檔進(jìn)行搞搞震毀滅性打擊嘎嘎嘎
所以,這里先放一個(gè)~
---- Minecraft Crash Report ----
// Hey, that tickles! Hehehe!
Time: 2023-06-11 14:28:08
Description: Rendering Block Entity
java.lang.NullPointerException: Cannot invoke "net.fabricmc.fabric.api.renderer.v1.Renderer.meshBuilder()" because the return value of "net.fabricmc.fabric.api.renderer.v1.RendererAccess.getRenderer()" is null
at me.pepperbell.continuity.impl.client.ProcessingContextImpl.<init>(ProcessingContextImpl.java:19)
at me.pepperbell.continuity.client.model.CTMBakedModel$CTMQuadTransform.<init>(CTMBakedModel.java:70)
at me.pepperbell.continuity.client.model.ModelObjectsContainer.<init>(ModelObjectsContainer.java:10)
at java.base/java.lang.ThreadLocal$SuppliedThreadLocal.initialValue(ThreadLocal.java:305)
at java.base/java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:195)
...[省略]...
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Thread: Render thread
Stacktrace:
...[省略]...
-- 方塊實(shí)體詳情 --
詳情:
名稱: minecraft:piston // net.minecraft.class_2669
方塊: 方塊{minecraft:moving_piston}(我的世界:移動(dòng)中的活塞)[facing=north,type=normal]
方塊所在位置: 坐標(biāo): (139,28,89), 地段: (在 11,12,9 in 8,1,5; 區(qū)塊包含的方塊?128,-64,80 to 143,319,95), 區(qū)域: (0,0; 包含區(qū)塊 0,0 to 31,31, 方塊 0,-64,0 to 511,319,511)
方塊: 方塊{minecraft:moving_piston}(我的世界:移動(dòng)中的活塞)[facing=north,type=normal]
方塊所在位置:?坐標(biāo):?(139,28,89), 地段: (在?11,12,9 in 8,1,5;?區(qū)塊包含的方塊?128,-64,80 to 143,319,95),?區(qū)域: (0,0; 包含區(qū)塊?0,0 to 31,31,?方塊?0,-64,0 to 511,319,511)
堆棧跟蹤:
at net.minecraft.class_824.method_3554(class_824.java:104)
...[省略]...
-- Affected level --
Details:
All players: 1 total; [class_746['wj_lxax'/12, l='ClientLevel', x=139.93, y=29.13, z=91.99]]
...[省略]...
at oolloo.jlw.Wrapper.main(Wrapper.java:53)
-- Last reload --
...[省略]...
-- System Details --
Details:
...[省略]...
為節(jié)約空間刪減了部分內(nèi)容

由Description可以得知,Ticking?Block?Entity,某個(gè)方塊實(shí)體在游戲的某一刻處理時(shí)出錯(cuò)了。
如果你對(duì)自己的模組列表比較熟悉,也可以在at語(yǔ)句中發(fā)現(xiàn)自己加過的一個(gè)模組continuity,一個(gè)提供方塊之間連接紋理材質(zhì)的模組,唔!它參與了這次崩潰~
(猜猜我為什么要先發(fā)這篇進(jìn)階版本的解決模組崩潰的文章?~)

先別急著理解啥叫方塊實(shí)體,我們的目標(biāo)是要解決這個(gè)崩潰的...先來看日志下面!

有一處在別的日志沒出現(xiàn)過的東西...... 哇塞,這個(gè)日志居然這么好心,標(biāo)注出來了出錯(cuò)的方塊!

捏,不同的物件崩潰有不同的崩潰日志,下面列舉一些:
為方便說明,以這句話以下的一部分內(nèi)容叫做“詳細(xì)清單”

如果你遇到的是Tesselating block in world(鑲嵌世界中的實(shí)體)或者是Tesselating block model(鑲嵌方塊模型),“詳細(xì)清單”下方應(yīng)該會(huì)有
-- Block being tesselated(被鑲嵌的方塊) --
或者和-- Block model being tesselated(被鑲嵌的方塊模型)?--一起
(不要問我鑲嵌是什么,問我我只能告訴你我了解到的是曲面細(xì)分的鑲嵌技術(shù))
如果你遇到的是Rendering entity in world(渲染世界中的實(shí)體)或者是Rendering Block Entity(渲染世界中的方塊),“詳細(xì)清單”下方應(yīng)該會(huì)有
-- Entity being rendered (被渲染的實(shí)體)-- /?-- Block being rendered (被渲染的方塊)--
如果你遇到的是Colliding entity with block(與方塊碰撞的實(shí)體),“詳細(xì)清單”下方應(yīng)該會(huì)有
-- Block being collided with(被碰撞的方塊) --
-- Entity being checked for collision(被檢測(cè)碰撞的實(shí)體) --
如果你遇到的是Ticking XXX(滴答作響的XXX游戲在處理XXX的某刻出錯(cuò)),“詳細(xì)清單”下方應(yīng)該會(huì)有
-- XXX being ticked (XXX在某一刻被處理)--
知道了以上信息,那現(xiàn)在就讓我們來處理處理它吧!
解決方案
注意!在進(jìn)行下列操作中,都非常建議你先備份一份存檔!
(第一條就不用了嘎嘎嘎()

1.如果你游玩的整合包包含了備份模組,找回上一次備份。
如果你上一次備份沒有出現(xiàn)問題,那你依然可以接著玩w

2.自行取舍,有的時(shí)候?刪掉模組 (或者更新模組)是最能無傷通關(guān)這個(gè)問題的辦法。
在這一篇崩潰日志中,Continuity是一個(gè)輔助模組,它只是在視覺上影響你的游戲體驗(yàn),沒有在你的世界里添加物品方塊,這種模組刪除掉,對(duì)你的存檔影響幾乎沒有,因此你大可直接刪掉這個(gè)模組!
(所以能猜到我為什么要先發(fā)這篇進(jìn)階版本的解決模組崩潰的文章了吧~因?yàn)槿绻阌龅降谋罎⑹且粋€(gè)類似于這種不對(duì)游戲?qū)嵸|(zhì)產(chǎn)生影響的模組,例如納sodium模組或者是Iris模組,又或者是你可能不太需要的模組讓你的游戲崩潰的話,你完全可以先刪掉它們。但如果你發(fā)現(xiàn)不了,那你要做的事情可會(huì)變得多起來了。)
切記!如果你并不知道這個(gè)模組有沒有在你的存檔新增什么特性或者方塊物品,在刪除這個(gè)模組之前一定要先備份一份存檔!
(這類觸發(fā)物件崩潰的模組通常來說,刪掉,進(jìn)去一遍存檔,再回來安裝,一般很少會(huì)觸發(fā)同樣的崩潰)
如果你成功找到(無論是從at語(yǔ)句發(fā)現(xiàn)的還是從出問題的實(shí)體或方塊的模組)引起崩潰的模組,你可以檢查一下它們的版本是否是最新的,如果不是,更新。有可能作者已經(jīng)解決了這個(gè)崩潰。

但如果你的模組對(duì)你的存檔改動(dòng)已經(jīng)非常大了,又或者出于某些原因你并不想刪掉這個(gè)模組,你可以接著往下看~
3.使用像 MCEdit 或 NBT 資源管理器(NBT Explorer)等外部修改的存檔編輯器

就以本次崩潰日志為例子,從所在位置(location)我們可以找到方塊的所在區(qū)塊,坐標(biāo),以及亂七八糟的別的。都不重要,好吧,如果你想理解Region是什么個(gè)東西要怎么看,你可以看Minecraft Wiki的解釋*[3]。為了直接通關(guān)崩潰修復(fù),就直說了。
軟件的下載地址我已經(jīng)放在文章下面的相關(guān)鏈接了。(*[序號(hào)] 是相關(guān)鏈接的序號(hào))
如果你要清除的是一個(gè)實(shí)體,用NBT Explorer*[8]會(huì)更方便
NBT Explorer 的用法:

以上的意思是,在存放實(shí)體的文件夾中(entities),在r. -1.0.mca文件幾記錄的區(qū)塊[13,29](Chunk [13, 29])中有7個(gè)目標(biāo)(Entities: 7 entries),在這7個(gè) entries(說成目標(biāo)好理解一點(diǎn))下中的其中一個(gè)目標(biāo)是一個(gè)id為minecraft:glow_squid(發(fā)光魷魚)的實(shí)體。
如果我們要把這只發(fā)光魷魚給刪掉,我們要點(diǎn)擊圖片中倒數(shù)第二個(gè)被選中的那個(gè)東西然后按Delete鍵就好了,記得保存。(那個(gè)東西在圖中叫28 entries,但不同的游戲不同,只要知道它是屬于Entities: 7 entries下面的一個(gè)目標(biāo)就是游戲中的一個(gè)實(shí)體就好)

那我們要怎么從崩潰日志知道這個(gè)錯(cuò)誤實(shí)體在區(qū)域文件里的位置呢?只要知道它的坐標(biāo)就能找到啦!這里舉另一個(gè)例子:
-- Entity being checked for collision --
Details:
Entity Type: lmmx.LittleMaidX (littleMaidMobX.LMM_EntityLittleMaid)
Entity ID: 474
Entity Name: 女仆醬
Entity's Exact location(實(shí)體的準(zhǔn)確坐標(biāo)): -203.61, 71.94, 671.31
Entity's Block location: World(你用這個(gè)也可以): (-204,71,671), Chunk: (at 4,4,15 in -13,41; contains blocks -208,0,656 to -193,255,671), Region: (-1,1; contains chunks -32,32 to -1,63, blocks -512,0,512 to -1,255,1023)
Entity's Momentum: -0.02, 0.00, 0.05

如果你要清除的是一個(gè)方塊,用MCedit*[9][10]或者Amulet*[6]會(huì)更方便
Mcedit已經(jīng)有不少人做過使用說明了,我就不再贅述咯(主要是懶嘎嘎嘎)w
4.注意是不是Optifine在搗亂。(Tesselating block in world/Tesselating block model等等)
有人反饋在某些版本的Optiifne會(huì)導(dǎo)致某些模組的渲染問題*[12](我當(dāng)然找到了更多的例子,但是不寫那么多在相關(guān)鏈接了),如果你的游戲包含Optifine,你可以先嘗試禁用Optifine重進(jìn)存檔。
5.啟用Forge自帶的移除錯(cuò)誤實(shí)體/移除錯(cuò)誤方塊操作。(Ticking?Entity/Ticking Block Entity/Ticking Tile Entity)
注意,這個(gè)方法只對(duì)以上提到的一些崩潰有效,也就是Ticking Block Entity、Ticking Tile Entity,在一些案例中是有效的。
并不建議你長(zhǎng)期開啟,同時(shí)這項(xiàng)操作也可能會(huì)將你世界的其他東西刪除,注意備份。
(小心點(diǎn),如果你看到整個(gè)結(jié)構(gòu)或建筑物消失了,這正是Forge的杰作。)
在你的游戲目錄下的Config文件夾中,找到并打開Forge的配置文件,里面應(yīng)該有一個(gè)名為Forge.cfg的文件。
視情況,找到?removeErrorEntities (如果遇到的是Ticking Entity崩潰)
或者?removeErroringTileEntities(如果遇到的是Ticking?Tile Entity/Ticking?Block Entity崩潰)
將它們后面的False改為True
保存文件,啟動(dòng)游戲。如果成功進(jìn)入存檔了,立刻關(guān)掉存檔,記得把True改回去False并保存,F(xiàn)orge有權(quán)刪掉它看不順眼的方塊和實(shí)體,不要給它這個(gè)機(jī)會(huì)......
詳細(xì)的修改圖文可以看深湖的一篇文章~Ticking Block Entity以及其他 - 嗶哩嗶哩 (bilibili.com)

這里我還搜集了一些有用的建議和解決方法,但并不常用或者適用范圍很小或者比較麻煩或者我覺得沒什么用但確實(shí)有人成了,我都放在下面了。
CoFH Core模組刪除實(shí)體。
把你的存檔放進(jìn)一個(gè)服務(wù)器并啟動(dòng)(這樣可以避免玩家去碰到錯(cuò)誤的實(shí)體),輸入cofh killall
,這會(huì)殺死所有實(shí)體,即使它在未加載的區(qū)塊當(dāng)中。你還可以在這個(gè)命令末尾添加一個(gè)參數(shù),以僅針對(duì)崩潰報(bào)告中提到的特定生物類型(Entity type)。例如殺死所有骷髏:cofh killall skeleton
為什么不用傳統(tǒng)用的kill?如果你是在處理Ticking Entity的實(shí)體,它會(huì)在給予這個(gè)實(shí)體巨大傷害之前把游戲崩掉。
調(diào)和平并調(diào)整視野,讓游戲刪實(shí)體。*[2]
題外話:
如果你是因?yàn)閠icking player進(jìn)來這篇文章的,可以優(yōu)先清空玩家的背包試試(我建議你還是先去刪導(dǎo)致崩潰的模組),用NBT explorer也是可以的,記得備份。但由于這崩潰不常見,具體做法我就不提了,有人需要我在幫忙吧w
這里我放出的相關(guān)鏈接是我搜集的資料來源和一些推薦看的文章。
相關(guān)鏈接
[1]https://help.ggservers.com/en-us/article/how-to-fix-a-ticking-entity-error-1yjzxl7/?- How to Fix a Ticking Entity Error | GGServers Knowledge Base
[2]https://nodecraft.com/support/games/minecraft/fixing-ticking-entities-errors-in-minecraft#h-2-reduce-view-distance-and-set-minecraft-to-peaceful-f5932d21 - Fixing Ticking Entity / TileEntity Errors | Minecraft | Knowledgebase Article - Nodecraft
[3]區(qū)域文件格式 - Minecraft Wiki_BWIKI_嗶哩嗶哩 (biligame.com)
[4]https://www.jianshu.com/p/91661ddcaf50 -?「Minecraft」自動(dòng)修復(fù)部分由異常實(shí)體或異常方塊實(shí)體導(dǎo)致的崩潰 - 簡(jiǎn)書 (jianshu.com)
[5]Ticking Block Entity以及其他 - 嗶哩嗶哩 (bilibili.com)
[6]https://www.amuletmc.com/ -Amulet Editor (amuletmc.com)
[7]【崩潰101】第二期:Ticking block entity - 嗶哩嗶哩 (bilibili.com)
[8]https://github.com/jaquadro/NBTExplorer/releases - Releases · jaquadro/NBTExplorer (github.com)
[9]https://search.mcbbs.net/thread-930879-1-1.html -?[持續(xù)更新]MCEdit —— 可視化地圖編輯器 | 最新版1.6.0.0 | PC 1.8-1.12.2 BE 1.6 - 軟件資源 - Minecraft(我的世界)中文論壇 - (mcbbs.net)
備注:注意這是MCedit 1
[10]http://www.mcedit.net/ -?MCEdit - World Editor for Minecraft
備注:注意這是MCedit 2,兩個(gè)版本操作界面不同的。
[11]https://hypixel.net/threads/how-to-fix-tesselating-block-model-crash.3560198/ -?Guide - How to fix Tesselating Block Model crash | Hypixel Forums
[12]https://www.minecraftforum.net/forums/support/java-edition-support/2612356-help-tesselating-block-model-crash -?HELP: Tesselating Block Model Crash? - Java Edition Support - Support - Minecraft Forum - Minecraft Forum
猜猜我打這篇文章用了幾天?(