Botania (Fabric/Quilt)

Botania (Fabric/Quilt)

5M Downloads

Botania mana burst crash?

REYIZ11 opened this issue ยท 20 comments

commented

Hello i set up a small set up with 4 endoflames, mana spreader and a mana pool. with a refined storage exporter going into a open crate, exporting charcoal. had a pressure plate with redstone leading to the exporter.

been getting this crash now..
D7srnWzr.txt

commented

I have the same issue. 8 floating endoflames, a precision dropper outputting coal. I've tried moving the spreader, but it's difficult because I crash each time it tries to send mana. It didn't help.

Same pack and version as above - dw20 1.10 v1.2.2. The server was updated recently.

crash-2017-01-08_12.17.55-client.txt

commented

Only the client crashes (server is fine), (From SkyFactory 3.0.4)

java.lang.ClassCastException: java.lang.Float cannot be cast to net.minecraft.util.math.BlockPos
at vazkii.botania.common.entity.EntityManaBurst.getBurstSourceBlockPos(EntityManaBurst.java:708)
at vazkii.botania.common.entity.EntityManaBurst.getShooter(EntityManaBurst.java:624)
at vazkii.botania.common.entity.EntityManaBurst.ping(EntityManaBurst.java:776)
at vazkii.botania.common.entity.EntityManaBurst.func_70071_h_(EntityManaBurst.java:311)
at net.minecraft.world.World.func_72866_a(World.java:1964)
at net.minecraft.world.World.func_72870_g(World.java:1934)
at net.minecraft.world.World.func_72939_s(World.java:1750)
at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1789)
at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1055)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:371)
at net.minecraft.client.main.Main.main(SourceFile:124)
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:483)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

commented

this was on the direwolf20 1.10 pack stable version 1.2.2

commented

This is a data watcher bug, there's nothing that can be done about it sadly.

commented

Anyone know what mod is causing this? I don't know what "data watcher bug" means, other than no one can play Botania. :(

commented

./com/brandon3055/draconicevolution/entity/EntityDragonHeart.java: AGE = EntityDataManager.func_187226_a((Class)Entity.class, DataSerializers.field_187192_b);

Could you try removing Draconic Evolution?

commented

I reset my PC for unrelated reasons and I'm no longer crashing due to this issue. That's definitely not a 'stable fix', but deleting the FTB files alone didn't work when I tried it.

commented

@Briancd2 This kind of issue is not particularly reliable.

commented

@asiekierka @Briancd2 it could suggest that it's video driver related. I've noticed the problem is only affecting certain players on our server despite the fact that we all have the same mods with the same configs. Based on that and Briancd2's report that a PC reset fixed the problem and the fact that it's a client-only crash (mana bursts continue to work on the server-side), I'm wondering if it's related to graphics drivers, settings or flags. If I can pinpoint the difference, we may be able to come up with a workaround.
As for Draconic Evolution, it was not a common mod in all the various crash reports. As far as I could tell, the only common core mods were EnderCore and ChiselCore. I haven't compared non-core mods yet, that will take a while.

commented

@dannydjdk It might be another mod as well, but in the pack I checked (Sky Factory 3), Draconic Evolution is the first possible culprit.

I'm wondering if it's related to graphics drivers, settings or flags.

No, it isn't.

commented

@asiekierka Thanks for the quick reply. I won't waste my time chasing the drivers/settings/flags then. I'm a bit perplexed as to why some players are not experiencing the crash under the exact same circumstances, but I'll trust your judgement and focus on eliminating mods.

commented

@dannydjdk Okay, I'll try to give you a layman's explanation of what's going on.

The EntityDataManager synchronizes data from the server to the client for entities. It uses an internal ID mapping for each type of Entity (nested - so if EntityItem extends Entity, it will send the data for Entity and the data for EntityItem). Since the ID mapping is internal and mods are generally not supposed to add EntityDataManager fields to entities they don't own (capabilities are better for that), it is also not synchronized in any way between server and client.

If a mod adds their own field via the EntityDataManager to an entity in the chain, the ordering may in some cases become different on the client and on the server - since they don't agree on it anymore, one of the sides ends up reading garbage and crashing.

Therefore, the culprit is a mod which adds their own field to one of the entities in the chain - in the case of Sky Factory 3, which is the pack I checked, the only mod which appears to do so on first glance is Draconic Evolution and, as such, I want to rule it out first.

commented

Reopening this one since we seem to have the cause somewhat pinned down

commented

One potential cause, but at least it's definitely a bug in DE either way.

commented

Fixed in build 167 of Draconic Evolution.
Draconic-Inc/Draconic-Evolution#545 (comment)

commented

awesome, thanks everyone for the help!

commented

yay my thinger did stuff!

commented

Hey guys. We definitely use EntityDataManager in Animania and two of our animals extend Vanilla entities (cows and chickens, to be specific). This was a recent change to allow for more compats (Hatchery, Cooking for Blockheads). All other entities extend EntityAnimal or EntityTameable.

Does this sound like it could be a problem @asiekierka ? It seems to me it could be. Can definitely move these to Capabilities, but want to make sure.

Example below:

image

commented

The EntityDataManager synchronizes data from the server to the client for entities. It uses an internal ID mapping for each type of Entity (nested - so if EntityItem extends Entity, it will send the data for Entity and the data for EntityItem). Since the ID mapping is internal and mods are generally not supposed to add EntityDataManager fields to entities they don't own (capabilities are better for that), it is also not synchronized in any way between server and client.

You MUST ensure the ordering is the same on client and server. Don't register them in static initializers! Register them in a defined initialization phase. Yes, createKey registers them.

commented

Thanks :)