Client side crash ticking Entity stopping player on server
AechtRob opened this issue ยท 4 comments
General Information
Describe the bug:
One of our players on our server is receiving a server-side crash repeatedly:
-- Head --
Thread: Client thread
Stacktrace:
at epicsquid.roots.entity.EntityLifetimeBase.func_70071h(EntityLifetimeBase.java:112)
at epicsquid.roots.entity.ritual.EntityRitualBase.func_70071h(EntityRitualBase.java:14)
at epicsquid.roots.entity.ritual.EntityRitualOvergrowth.func_70071h(EntityRitualOvergrowth.java:28)
at net.minecraft.world.World.func_72866_a(World.java:1996)
at net.minecraft.world.World.func_72870_g(World.java:1958)
-- Entity being ticked --
Details:
Entity Type: roots:entity_ritual_overgrowth (epicsquid.roots.entity.ritual.EntityRitualOvergrowth)
Entity ID: 31939
Entity Name: entity.entity_ritual_overgrowth.name
Entity's Exact location: -508.51, 55.00, 1044.90
Entity's Block location: World: (-509,55,1044), Chunk: (at 3,3,4 in -32,65; contains blocks -512,0,1040 to -497,255,1055), Region: (-1,2; contains chunks -32,64 to -1,95, blocks -512,0,1024 to -1,255,1535)
Entity's Momentum: -0.01, -0.08, 0.00
There is no conflict showing as such, just this ticking error which causes the client to terminate. The modpack is here, but I don't think it's related to other mods: https://www.curseforge.com/minecraft/modpacks/chronos
(Is it related to UUID handling on a server in some way?)
Further issue which may or may not be related:
java.lang.ClassCastException: java.lang.Byte cannot be cast to java.lang.Integer
at epicsquid.roots.entity.EntityLifetimeBase.func_70071_h_(EntityLifetimeBase.java:112)
at epicsquid.roots.entity.ritual.EntityRitualBase.func_70071_h_(EntityRitualBase.java:14)
at epicsquid.roots.entity.ritual.EntityRitualOvergrowth.func_70071_h_(EntityRitualOvergrowth.java:28)
at net.minecraft.world.World.func_72866_a(World.java:1996)
at net.minecraft.world.World.func_72870_g(World.java:1958)
at net.minecraft.world.World.func_72939_s(World.java:1762)
at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1847)
at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398)
at net.minecraft.client.main.Main.main(SourceFile:123)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
This is a bit of an odd one. The line in question:
getDataManager().set(lifetime, getDataManager().get(lifetime) - 1);
The implication here is that getDataManger().get(lifetime)
is returning a Byte
rather than an Integer
. I'm not sure if @ByThePowerOfScience has changed anything with regards to this code recently, but this shouldn't be happening, unless I misunderstand how the VARINT
data serializer works.
You said "server side", but I assume you meant client-side?
Unfortunately I don't have access to the most Roots codebase. One thing I would double check is that the player is running the correct version of Roots, the same as the server?
My only guess is that some other mod is manually setting the lifetime
NBT data to be a byte instead of an integer, which is causing the error. I don't know of any way to prevent this, but I can make it forcibly convert the value to an integer when it's updated.
If this happens again, let me know.