FallingTree

FallingTree

28M Downloads

Compatibility issue with Croptopia

BrekiTomasson opened this issue ยท 7 comments

commented

Mod Versions:

  • Croptopia: FABRIC-1.3.3
  • FallingTree: 2.11.2

After updating FallingTree to the most recently released version, a compatibility issue between it and Croptopia appeared, causing the client to crash on load. Disabling either mod will make the client work again, but considering it worked in previous versions of FallingTree with the current version of Croptopia, I suspect the problem is related to something introduced between FallingTree v2.11.0 and FallingTree v2.11.2.

The errors in the log include:

[19:32:15] [main/WARN]: Mixin apply failed Croptopia.mixins.json:VillagerMixin -> net.minecraft.class_1646: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException Critical injection failure: @ModifyArg annotation on addSeedToPlant could not find any targets matching 'hasSeedToPlant' in net.minecraft.class_1646. Using refmap fabric-refmap.json [ -> modify$cjo000$addSeedToPlant(Ljava/util/Set;)Ljava/util/Set; -> Parse]
org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: Critical injection failure: @ModifyArg annotation on addSeedToPlant could not find any targets matching 'hasSeedToPlant' in net.minecraft.class_1646. Using refmap fabric-refmap.json [ -> modify$cjo000$addSeedToPlant(Ljava/util/Set;)Ljava/util/Set; -> Parse]

[...]

[19:32:15] [main/WARN]: Mixin apply failed Croptopia.mixins.json:VillagerAccess -> net.minecraft.class_1646: org.spongepowered.asm.mixin.gen.throwables.InvalidAccessorException No candidates were found matching GATHERABLE_ITEMS:Ljava/util/Set; in net/minecraft/class_1646 for Croptopia.mixins.json:VillagerAccess->@Accessor[FIELD_GETTER]::getGatherableItems()Ljava/util/Set; [ -> Locate -> Croptopia.mixins.json:VillagerAccess->@Accessor[FIELD_GETTER]::getGatherableItems()Ljava/util/Set;]
org.spongepowered.asm.mixin.gen.throwables.InvalidAccessorException: No candidates were found matching GATHERABLE_ITEMS:Ljava/util/Set; in net/minecraft/class_1646 for Croptopia.mixins.json:VillagerAccess->@Accessor[FIELD_GETTER]::getGatherableItems()Ljava/util/Set; [ -> Locate -> Croptopia.mixins.json:VillagerAccess->@Accessor[FIELD_GETTER]::getGatherableItems()Ljava/util/Set;]

[...]

[19:32:18] [main/WARN]: Mixin apply failed Croptopia.mixins.json:AxeMixin -> net.minecraft.class_1743: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException Critical injection failure: @Inject annotation on blockUse could not find any targets matching 'useOnBlock' in net.minecraft.class_1743. Using refmap fabric-refmap.json [ -> handler$cjm000$blockUse(Lnet/minecraft/class_1838;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;)V -> Parse]
org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: Critical injection failure: @Inject annotation on blockUse could not find any targets matching 'useOnBlock' in net.minecraft.class_1743. Using refmap fabric-refmap.json [ -> handler$cjm000$blockUse(Lnet/minecraft/class_1838;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;)V -> Parse]

[...]

[19:32:18] [main/WARN]: Mixin apply failed Croptopia.mixins.json:AxeAccess -> net.minecraft.class_1743: org.spongepowered.asm.mixin.gen.throwables.InvalidAccessorException No candidates were found matching STRIPPED_BLOCKS:Ljava/util/Map; in net/minecraft/class_1743 for Croptopia.mixins.json:AxeAccess->@Accessor[FIELD_GETTER]::getStrippedBlocks()Ljava/util/Map; [ -> Locate -> Croptopia.mixins.json:AxeAccess->@Accessor[FIELD_GETTER]::getStrippedBlocks()Ljava/util/Map;]
org.spongepowered.asm.mixin.gen.throwables.InvalidAccessorException: No candidates were found matching STRIPPED_BLOCKS:Ljava/util/Map; in net/minecraft/class_1743 for Croptopia.mixins.json:AxeAccess->@Accessor[FIELD_GETTER]::getStrippedBlocks()Ljava/util/Map; [ -> Locate -> Croptopia.mixins.json:AxeAccess->@Accessor[FIELD_GETTER]::getStrippedBlocks()Ljava/util/Map;]

The final error, which crashes the client on load is this:

java.lang.RuntimeException: Could not execute entrypoint stage 'main' due to errors, provided by 'croptopia'!
	at Not Enough Crashes deobfuscated stack trace.(1.16.5+build.6)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:53)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke(EntrypointUtils.java:36)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointClient.start(EntrypointClient.java:32)
	at net.minecraft.client.MinecraftClient.redirect$zla000$catchFabricInit(MinecraftClient:6877)
	at net.minecraft.client.MinecraftClient.<init>(MinecraftClient:437)
	at net.minecraft.client.main.Main.main(Main:177)
	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:498)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:226)
	at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:146)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28)
	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:498)
	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196)
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231)
	at org.multimc.EntryPoint.listen(EntryPoint.java:143)
	at org.multimc.EntryPoint.main(EntryPoint.java:34)
Caused by: java.lang.NoSuchMethodError: net.minecraft.class_1646.getItemFoodValues_$md$ef02da$5()Ljava/util/Map;
	at me.thonk.croptopia.mixin.VillagerAccess.getItemFoodValues(VillagerAccess.java)
	at me.thonk.croptopia.Croptopia.modifyVillagerFoodItems(Croptopia.java:189)
	at me.thonk.croptopia.Croptopia.onInitialize(Croptopia.java:91)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:50)
	... 20 more

All errors point towards Croptopia, but like I said, it worked fine with no changes to Croptopia with a previous version of Falling Tree, and disabling Falling Tree makes everything work again.

commented

Opened ExcessiveAmountsOfZombies/Croptopia#108 as well to get Croptopia's perspective on things.

commented

I'll take a better look a bit later but at first glance:

  • For the mixins error the only ones that could interfere are the AxeAccess/AxeMixin. All others are from things totally unrelated.
  • Regarding the update between FallingTree versions:
    • 2.11.2 is mainly bug fixing regarding cloth-config related issues. Doesn't seem to be involved here.
    • 2.11.1 could have break things. I moved a bit stuff around to make a single jar for both fabric & forge.
      ==> Just to confirm can you try with 2.11.1 (https://www.curseforge.com/minecraft/mc-mods/falling-tree/files/3275003). There hasn't been any real code change between 2.11.0 & 2.11.1 for fabric, so if this breaks it it is probably that the mixing of jar causes an issue.
commented

Also just to make things clearer, when you say :

I suspect the problem is related to something introduced between FallingTree v2.11.0 and FallingTree v2.11.2

does this mean that 2.11.0 works ok, or versions pior to it works ?

commented

Running it with

  • Croptopia-1.16.4-5-FABRIC-1.3.3
  • fabric-api-0.33.0+1.16
  • FallingTree-1.16.5-2.11.2

leads me to

[20:28:43] [main/FATAL]: Mixin apply failed fallingtree.mixins.json:AbstractBlockMixin -> net.minecraft.class_4970: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException Critical injection failure: @Inject annotation on calcBlockBreakingDelta could not find any targets matching 'calcBlockBreakingDelta' in net.minecraft.class_4970. Using refmap fabric-refmap.json [PREINJECT Applicator Phase -> fallingtree.mixins.json:AbstractBlockMixin -> Prepare Injections ->  -> handler$zdl000$calcBlockBreakingDelta(Lnet/minecraft/class_2680;Lnet/minecraft/class_1657;Lnet/minecraft/class_1922;Lnet/minecraft/class_2338;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;)V -> Parse]
org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: Critical injection failure: @Inject annotation on calcBlockBreakingDelta could not find any targets matching 'calcBlockBreakingDelta' in net.minecraft.class_4970. Using refmap fabric-refmap.json [PREINJECT Applicator Phase -> fallingtree.mixins.json:AbstractBlockMixin -> Prepare Injections ->  -> handler$zdl000$calcBlockBreakingDelta(Lnet/minecraft/class_2680;Lnet/minecraft/class_1657;Lnet/minecraft/class_1922;Lnet/minecraft/class_2338;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;)V -> Parse]

even before the errors under the croptopia name.

Though without croptopia it does launch fine.

commented

I think I managed to have something working. Seems like both our mods used a refmap for the mixins that have the same name fabric-refmap.json.

Changing mine to something more specific to falling tree seems to fix the issue. Can you confirm it with that version please:
https://www.dropbox.com/t/izbp4dCuETyhq4Im

commented

apparently that was it, I went ahead and changed mine as well but I won't be able to release any updates for a while. Interesting to know

commented

I never got around to testing it with v2.11.1, but I did test your updated version of v2.11.2, and that worked just fine, so it appears the fabric-refmap.json issue was the problem here. Good work on that analysis and fix!