Treasure2!

Treasure2!

6M Downloads

[1.12.2-1.13.1][Morph 7.2.1] Bound Soul morph transition causes NoSuchMethodError on server

TigerWalts opened this issue ยท 1 comments

commented

Treasure2 Version: 1.12.2-1.13.1 (1.13.2 will be affected too)
Other Mods:

  • Morph 1.12.2-7.2.1

Transitioning to or from a Bound Soul Morph will cause the following error on the Server:

java.lang.NoSuchMethodError: com.someguyssoftware.treasure2.entity.monster.BoundSoulEntity.spawnMist()V
	at com.someguyssoftware.treasure2.entity.monster.BoundSoulEntity.func_70636_d(BoundSoulEntity.java:103)
	at net.minecraft.entity.EntityLivingBase.func_70071_h_(EntityLivingBase.java:2179)
	at net.minecraft.entity.EntityLiving.func_70071_h_(EntityLiving.java:295)
	at net.minecraft.entity.monster.EntityMob.func_70071_h_(EntityMob.java:50)
	at me.ichun.mods.morph.common.morph.MorphInfo.tick(MorphInfo.java:113)
	at me.ichun.mods.morph.common.core.EventHandlerServer.onServerTick(EventHandlerServer.java:177)
	at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_1095_EventHandlerServer_onServerTick_ServerTickEvent.invoke(.dynamic)
	at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
	at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182)
	at net.minecraftforge.fml.common.FMLCommonHandler.onPostServerTick(FMLCommonHandler.java:266)
	at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:712)
	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526)
	at java.lang.Thread.run(Thread.java:748)

What appears to be happening:

  • BoundSoulEntity.spawnMist() is a Client only method
  • During a Morph transtion onUpdate() is called per tick for the 2 entities that are being transitioned between
  • Treasure2 checks it's not server side using the entity before calling spawnMist()
		if (!this.isServerWorld()) {
			spawnMist();
		}
  • This check fails and spawnMist() is called on the server

Current Workaround:

  • Add treasure2:bound_soul to Morph's Mob blacklist.

To fix a player who is causing this you need to amend the player data with an NBT editor. Either:

  • Remove all the Morph data in the player data file: Delete the ForgeData.PlayerPersisted.MorphSave tag

or if you want to keep the Morph data:

  • Remove the current Morph state: Delete the ForgeData.PlayerPersisted.MorphSave.currentMorph tag
  • Remove the morph variant for treasure2.bound_soul:
    • Delete the ForgeData.PlayerPersisted.MorphSave.variant_X tag (where variant_X is the one with the entId treasure2:bound_soul)
    • Rename all the remaining ForgeData.PlayerPersisted.MorphSave.variant_X tags so there are no gaps in the numbering
    • Decrease the ForgeData.PlayerPersisted.MorphSave.variantCount by 1
commented

This is fixed in v1.14.0 - soon to be released.