Sinytra / Connector

A compatibility layer that allows running Fabric mods on NeoForge
https://sinytra.org/docs/connector
MIT License
507 stars 20 forks source link

The connector failed to transform the mixins for mojang's brigadier classes. #1439

Open sakurawald opened 3 days ago

sakurawald commented 3 days ago

Minecraft version

1.21

Describe the bug

The connector failed to transform the mixins for mojang's brigadier classes.

Steps to reproduce

  1. Write a mixin like this:

    
    @Mixin(value = CommandNode.class, remap = false)
    public interface CommandNodeAccessor<S> {
    
    @Accessor
    @Mutable
    void setRequirement(Predicate<S> predicate);

}

2. Launch the server, and you will get the error:

[13:19:12] [Server thread/ERROR] [minecraft/MinecraftServer]: Encountered an unexpected exception java.lang.ClassCastException: class com.mojang.brigadier.tree.ArgumentCommandNode cannot be cast to class io.github.sakurawald.module.mixin.command_permission.CommandNodeAccessor (com.mojang.brigadier.tree.ArgumentCommandNode is in module brigadier@1.2.9 of loader 'MC-BOOTSTRAP' @25bbf683; io.github.sakurawald.module.mixin.command_permission.CommandNodeAccessor is in module fuji@1.6.3-dev-b4276b7e0b of loader 'TRANSFORMER' @5b48f0f4)


### Logs

see above

### Additional context

That's all.
The environment is

Minecraft 1.21 NeoForge Loader: 21.0.167

Mods: [✔] connector-2.0.0-beta.1+1.21-full [✔] forgified-fabric-api-0.101.2+2.0.10+1.21 [✔] example-mod

kakashi1464 commented 3 days ago

Minecraft version

1.20.1

pls change mc version to 1.21.1

Su5eD commented 2 days ago

Which mc version is this for?

sakurawald commented 2 days ago

Which mc version is this for?

The environment is 1.21, and i and using the connector for minecraft 1.21

DrexHD commented 1 day ago

This exact issue is also causing one of my mods to fail on connector: DrexHD/VanillaPermissions#17

sakurawald commented 1 day ago

This exact issue is also causing one of my mods to fail on connector: DrexHD/VanillaPermissions#17

Yes, it is about the loading mechanism of jvm. Currently i am using a workaround: put the related method inside the mixin itself, and mark these methods with @Unique annotation.