最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Ticking Block Entity以及其他

2021-04-18 11:16 作者:道家深湖  | 我要投稿


看到有玩家問這個報錯

這類在Ticking Tile Entity或者Ticking Block Entity時候發(fā)生的報錯,一般有一個簡單的解決方案。

操作方式

簡單來說,就是找到forge.cfg,把里面removeErroringTileEntities(刪除報錯的方塊實體)設(shè)為true即可。這樣,每當(dāng)有TileEntity/BlockEntity報錯的時候,它們就會直接被刪掉。如果你解決不了問題,你至少可以解決掉那個方塊實體。

(嗯對,“方塊實體”,簡稱TE,它不是“實體”的一種,而是一類完全不同的存在,一般伴隨著特定方塊升成與銷毀。作為MC代碼層面的概念,沒親自寫過mod或者插件的老玩家可能玩了幾年都沒聽說過這么個東西。)

同理,如果是實體報錯,你可以把上面那個removeErroringEntities設(shè)為true。

這類報錯見到的最常見的是植物魔法的魔力池報錯,在為空氣的格子上發(fā)現(xiàn)魔力池的TE,然后tick一下就炸了。一般認(rèn)為這種爆炸來自小地圖,可以靠刪小地圖mod或者打開上面的選項來解決。

就今早我看到的那封不是植物魔法的崩潰日志來說,它的情況有點不同。

Description: Ticking block entity


java.lang.ClassCastException: micdoodle8.mods.galacticraft.core.entities.player.GCEntityPlayerMP cannot be cast to net.minecraft.inventory.IInventory

? ? at net.minecraft.tileentity.TileEntityHopper.getInventoryAtPosition(TileEntityHopper.java:552)

這個報錯如果你懂代碼的話,會發(fā)現(xiàn)有點反常。它說,星系mod的玩家對象不能被類型轉(zhuǎn)化為MC的背包接口IInventory。

1,但凡拜讀過含星系mod日志的人都會知道,星系mod給玩家引入了不同于原版的類,GCEntityPlayer。

2,玩家有背包。

難道是星系mod搞事情寫出bug了?

我們看看堆棧。

?at net.minecraft.tileentity.TileEntityHopper.getInventoryAtPosition(TileEntityHopper.java:552)

? ? at net.minecraft.tileentity.TileEntityHopper.getSourceInventory(TileEntityHopper.java:513)

? ? at net.minecraft.tileentity.TileEntityHopper.pullItems(TileEntityHopper.java:303)

? ? at net.minecraft.tileentity.TileEntityHopper.updateHopper(TileEntityHopper.java:142)

Hopper,這不是漏斗嗎,我們看看TileEntityHopper的代碼不就知道了。


TileEntityHopper(1.12.2)

List<Entity> list = worldIn.getEntitiesInAABBexcluding((Entity)null, new AxisAlignedBB(x - 0.5D, y - 0.5D, z - 0.5D, x + 0.5D, y + 0.5D, z + 0.5D), EntitySelectors.HAS_INVENTORY);

這就是報錯的那一行,因為太長而在一張圖里放不下了。簡單來說,就是獲取了漏斗上面格子里的所有、有背包的生物。HAS_INVENTORY是什么標(biāo)準(zhǔn)呢?

EntitySelectors.HAS_INVENTORY

標(biāo)準(zhǔn)是實現(xiàn)IInventory接口,并且處于存活狀態(tài)。好家伙。那么因此被選中的GCEntityPlayer怎么可能會不能被轉(zhuǎn)化為IInventory呢?我們看看后面。

報錯的方塊實體

它是原版的漏斗方塊,而TE卻是泡沫修復(fù)的魔改后的快速漏斗。好,我血壓已經(jīng)上來了??吹竭@種關(guān)于優(yōu)化、修復(fù)類報錯的日志我就想打人。切記:看不懂崩潰日志就不要裝這種mod。

那么是不是泡沫修復(fù)把這個HAS_INVENTORY的判斷去掉導(dǎo)致的呢?

我看了下泡沫修復(fù)的源碼里的TileEntityFasterHopper,它并沒有改getInventoryAtPosition方法。事實上你也可以看到,堆棧里全都是原版的漏斗TE,沒有出現(xiàn)泡沫修復(fù)的TE。

日志里的星系mod

于是我轉(zhuǎn)而去看星系mod。日志里的版本是281,于是我去官網(wǎng)找那個版本的星系……

官網(wǎng)

星系的官網(wǎng)最新才是280!我原地問號。算了,拿著280湊合吧。

GCEntityPlayerMP,出自GalacticCraftCore

這不就繼承EntityPlayerMP嗎?看起來什么問題也沒有啊。如果你看原版MP的話,你會發(fā)現(xiàn)原版的MP并不實現(xiàn)IInventory,玩家類都不直接實現(xiàn)。InventoryPlayer類才是實現(xiàn)接口的那個,并且它只是MP的成員,并不是MP的基類。所以,GCEntityPlayerMP不應(yīng)該被那個實體選擇器選中才是。

老天爺,就先到這吧。鬼知道為什么。那么多coremod,我可沒時間一個個去查誰改了原版的方法。

Ticking Block Entity以及其他的評論 (共 條)

分享到微博請遵守國家法律
咸宁市| 通河县| 弥渡县| 宣恩县| 尼木县| 恭城| 阳原县| 思茅市| 东光县| 元阳县| 内黄县| 凤凰县| 琼中| 滦南县| 东至县| 巴楚县| 和硕县| 元朗区| 三台县| 安溪县| 重庆市| 大余县| 永吉县| 新巴尔虎左旗| 五常市| 安泽县| 福贡县| 昌图县| 基隆市| 唐山市| 蕲春县| 舞钢市| 佳木斯市| 临邑县| 凤庆县| 白山市| 海城市| 牡丹江市| 富顺县| 陕西省| 云和县|