BuildCraft|Core

BuildCraft|Core

7M Downloads

Filler menu open error.

fujicar opened this issue · 7 comments

commented

BuildCraft version: 7.99.14
Forge version: 1.12.2-14.23.1.2555
Singleplayer or multiplayer: multiplayer
Additional information: SpongeForge 7.1.0-BETA-2831

( I am Japanese. I am using Google Translate.)

I am using SpongeForge in multiplayer.

Although you can set Filler, right clicking after setting it will result in an error.

Once you remove SpongeMOD ​​and do the same thing, it will work normally.
(Of course, it is multiplayer, it works in both survival mode and creative mode.)

I think that the compatibility between BuilCraft and SpongeMOD ​​is bad.

Please correct it.

Error log : https://pastebin.com/aKUgMa3e
Screen shot : https://imgur.com/a/Aazar

commented

P.S.

The server does not crash.
Right clicking on the filler will cause an error but you can continue the game as it is.

commented

If the filler interface doesn't work on the server then it's still a bug, even if it doesn't crash.

commented

I'm sorry. It sounds like I mistook the push button. (Close button, Comment button)

commented

Ok. Thanks for clarifying.

And thanks for the extra info. I'll probably need to look into what sponge does that could cause this.

commented

turned out to be a naming conflic (https://github.com/BuildCraft/BuildCraft/blob/8.0.x/common/buildcraft/builders/container/ContainerFiller.java#L45) causing the JVM to not call our init method but one added by sponge to container

a fix from sponge should be out shortly

commented

To put a finer point on why this happened:

Because under normal circumstances, when a superclass defines a private method of a same name as an interface, and the sub class (in this case ContainerFiller) extends said interface and leaves the method default implemented, the search for the proper method to call usually invokes the superclass, in normal cases, the interface method. HOWEVER, because the superclass method is being appended by sponge's mixing, the JVM appears to discover the true superclass method being the "right one to call", this is similar to method access changes from AT's on precompiled code when the transformer is not told to transform a field. I believe this also ends up being somewhat similar to issues that cause linkage exceptions as mentioned in section 3 on extension methods introduced in Java 8 (default methods on interfaces).

The offending mixin method was this one which was indirectly being called by the ContainerFiller.

Now, I've changed the method name in Sponge's mixin, but I'm curious if @Mumfrey could weigh in on the interesting interaction.

commented

I upgraded SpongeForge to [7.1.0-BETA-2863] and checked the operation.

It works without problems!
There is no error and it works!

Thank you for fixing quickly!

Screenshot1 : https://imgur.com/cGBANhW
Screenshot2 : https://imgur.com/NDurZct
SpongeForge link : http://files.minecraftforge.net/maven/org/spongepowered/spongeforge/index_1.12.2.html