Verclene / LittleMaidReengaged

Again, on the new stage.
http://6docvc.net/
Other
36 stars 26 forks source link

メイドさんがチェストにアイテムを入れた直後にクラッシュ #62

Closed TalesTail closed 8 years ago

TalesTail commented 8 years ago

以前のバージョンで報告されていたものかも知れません ---- Minecraft Crash Report ---- // Hi. I'm Minecraft, and I'm a crashaholic.

Time: 16/07/04 23:44 Description: Ticking entity

java.lang.NullPointerException: Ticking entity at net.blacklab.lmr.entity.ai.EntityAILMFindBlock.func_75251_c(EntityAILMFindBlock.java:162) at net.minecraft.entity.ai.EntityAITasks.func_85156_a(SourceFile:68) at net.blacklab.lmr.entity.EntityLittleMaid.setMaidModeAITasks(EntityLittleMaid.java:794) at net.blacklab.lmr.entity.EntityLittleMaid.setMaidMode(EntityLittleMaid.java:750) at net.blacklab.lmr.entity.EntityLittleMaid.setMaidMode(EntityLittleMaid.java:658) at net.blacklab.lmr.entity.EntityLittleMaid.setMaidMode(EntityLittleMaid.java:651) at net.blacklab.lmr.entity.mode.EntityMode_Farmer.changeMode(EntityMode_Farmer.java:73) at net.blacklab.lmr.entity.EntityLittleMaid.setMaidModeAuto(EntityLittleMaid.java:3106) at net.blacklab.lmr.entity.EntityLittleMaid.onInventoryChanged(EntityLittleMaid.java:2535) at net.blacklab.lmr.entity.EntityLittleMaid.func_70071h(EntityLittleMaid.java:2325) at net.minecraft.world.World.func_72866_a(World.java:1955) at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:837) at net.minecraft.world.World.func_72870_g(World.java:1925) at net.minecraft.world.World.func_72939_s(World.java:1748) at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:618) at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:709) at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:613) at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:149) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:471) at java.lang.Thread.run(Thread.java:745)

A detailed walkthrough of the error, its code path and all known details is as follows:

-- Head -- Thread: Server thread Stacktrace: at net.blacklab.lmr.entity.ai.EntityAILMFindBlock.func_75251_c(EntityAILMFindBlock.java:162) at net.minecraft.entity.ai.EntityAITasks.func_85156_a(SourceFile:68) at net.blacklab.lmr.entity.EntityLittleMaid.setMaidModeAITasks(EntityLittleMaid.java:794) at net.blacklab.lmr.entity.EntityLittleMaid.setMaidMode(EntityLittleMaid.java:750) at net.blacklab.lmr.entity.EntityLittleMaid.setMaidMode(EntityLittleMaid.java:658) at net.blacklab.lmr.entity.EntityLittleMaid.setMaidMode(EntityLittleMaid.java:651) at net.blacklab.lmr.entity.mode.EntityMode_Farmer.changeMode(EntityMode_Farmer.java:73) at net.blacklab.lmr.entity.EntityLittleMaid.setMaidModeAuto(EntityLittleMaid.java:3106) at net.blacklab.lmr.entity.EntityLittleMaid.onInventoryChanged(EntityLittleMaid.java:2535) at net.blacklab.lmr.entity.EntityLittleMaid.func_70071h(EntityLittleMaid.java:2325) at net.minecraft.world.World.func_72866_a(World.java:1955) at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:837) at net.minecraft.world.World.func_72870_g(World.java:1925)

-- Entity being ticked -- Details: Entity Type: lmreengaged.LittleMaid (net.blacklab.lmr.entity.EntityLittleMaid) Entity ID: 130469 Entity Name: ノーラ Entity's Exact location: -5.31, 70.00, 32.75 Entity's Block location: World: (-6,70,32), Chunk: (at 10,4,0 in -1,2; contains blocks -16,0,32 to -1,255,47), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511) Entity's Momentum: 0.04, -0.08, 0.04 Entity's Passengers: [] Entity's Vehicle: ERROR NullPointerException: null Stacktrace: at net.minecraft.world.World.func_72939_s(World.java:1748) at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:618)

Verclene commented 8 years ago

大体の予想はつきますが,イマイチ原因がはっきりしないのと,明確な対策方針が立てられないので,直前に行ったことを詳細に記載してください.

TalesTail commented 8 years ago

自分からは何の操作もしていません。 再起動後に確認したところ、自作農家モードのメイドが自分のインベントリからチェストにアイテムを移したことが引き金ではないかと考えました。

その後何度か検証しましたがチェストにアイテムを入れるだけでは確実な再現はしませんでした。

その検証中にモードに関する幾つかの別の問題も発見しました。

・アイテムをチェストに入れると、穀物運びから自由行動に移行する。この状態になると、メイドインベントリを開く、砂糖で右クリックする、アイテムを拾わせる、ログアウトログインを行う、などの外的要因があるまで農家モードに戻らない。 ・アイテムを拾って穀物運びモードになった瞬間に落ちることもある。

再現性の低さから見るに、AIの切り替えの何処かでパケットやDataWatcherに起因する別スレッドからのアクセスが有り、スレッドセーフの問題で不定のタイミングでNullPointerが起こっているのではないかと思います。

上記を鑑みて、「モードの自動切替時にクラッシュすることがある」と件名を変えたほうが良いのかもしれません。

Verclene commented 8 years ago

原因っぽいところを試しに修正してみました.1.9.4用Pre-releaseのみ後ほど更新しますのでお待ちください.