Horseman

Horseman

171k Downloads

TFCChestedHorse incompatibility

rhino1998 opened this issue ยท 1 comments

commented

Ticking entity errors occur when trying to load the nbt of a TerraFirmaCraft donkey/mule with both a lead and chest equipped. I think this is caused by TFC loading the relevant state such that hasChested()==true before calling super.readAdditionalSaveData(...) in TFCChestedHorse. Unclear if this should be handled here or in TFC.

[11Dec2024 22:39:43.764] [Server thread/WARN] [net.minecraft.world.entity.EntityType/]: Exception loading entity: 
net.minecraft.ReportedException: Loading entity NBT
	at net.minecraft.world.entity.Entity.m_20258_(Entity.java:1765) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.entity.EntityType.m_185988_(EntityType.java:532) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.Util.m_137521_(Util.java:419) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.entity.EntityType.m_20642_(EntityType.java:529) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.entity.EntityType.m_20669_(EntityType.java:607) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.entity.EntityType.m_20645_(EntityType.java:563) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.entity.EntityType$1.m_147056_(EntityType.java:584) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1950) ~[?:?]
	at net.minecraft.world.entity.EntityType$1.tryAdvance(EntityType.java:583) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at java.util.Spliterator.forEachRemaining(Spliterator.java:332) ~[?:?]
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?]
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[?:?]
	at net.minecraft.world.level.chunk.storage.EntityStorage.m_223456_(EntityStorage.java:62) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646) ~[?:?]
	at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?]
	at net.minecraft.util.thread.ProcessorMailbox.m_18759_(ProcessorMailbox.java:91) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.util.thread.ProcessorMailbox.m_18747_(ProcessorMailbox.java:146) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.util.thread.ProcessorMailbox.run(ProcessorMailbox.java:102) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.server.TickTask.run(TickTask.java:18) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.util.thread.BlockableEventLoop.m_6367_(BlockableEventLoop.java:156) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.util.thread.ReentrantBlockableEventLoop.m_6367_(ReentrantBlockableEventLoop.java:23) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.server.MinecraftServer.m_6367_(MinecraftServer.java:770) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.server.MinecraftServer.m_6367_(MinecraftServer.java:161) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.util.thread.BlockableEventLoop.m_7245_(BlockableEventLoop.java:130) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.server.MinecraftServer.m_129961_(MinecraftServer.java:753) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.server.MinecraftServer.m_7245_(MinecraftServer.java:747) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.util.thread.BlockableEventLoop.m_18701_(BlockableEventLoop.java:139) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.server.MinecraftServer.m_130012_(MinecraftServer.java:733) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:665) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 17 out of bounds for length 3
	at java.util.Arrays$ArrayList.set(Arrays.java:4271) ~[?:?]
	at net.minecraft.core.NonNullList.set(NonNullList.java:54) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.SimpleContainer.m_6836_(SimpleContainer.java:140) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.entity.LivingEntity.handler$zzh000$horseman$onReadAdditionalSaveData(LivingEntity.java:4580) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.entity.LivingEntity.m_7378_(LivingEntity.java) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.entity.Mob.m_7378_(Mob.java:442) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.entity.AgeableMob.m_7378_(AgeableMob.java:113) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.entity.animal.Animal.m_7378_(Animal.java:98) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.entity.animal.horse.AbstractHorse.m_7378_(AbstractHorse.java:820) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.minecraft.world.entity.animal.horse.AbstractChestedHorse.m_7378_(AbstractChestedHorse.java:109) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	at net.dries007.tfc.common.entities.livestock.horse.TFCChestedHorse.m_7378_(TFCChestedHorse.java:427) ~[TerraFirmaCraft-Forge-1.20.1-3.2.11.jar%23542!/:3.2.11]
	at net.minecraft.world.entity.Entity.m_20258_(Entity.java:1750) ~[server-1.20.1-20230612.114412-srg.jar%23589!/:?]
	... 33 more
commented

Since it's hard to add compatibility for all such cases, in 1.2.0 I've added an option to disable the Lead slot without removing the need for Lead to be attached. Lead can be applied by Sneak+Using the Lead item if slot is disabled.
I have not tested it with TFC, but it should solve this issue. If the crash still happening - feel free to reopen.