Jump to content

[41.66] [Multiplayer] Passive Skills Fix Lua error (No implementation found at MultiLuaJavaInvoker.call line:112)


CSSFerret

Recommended Posts

I understand TIS is not responsible for mods, but since Passive Skills Fix has been working without updates since 2017 I wanted to post to be sure there wasn't an unintended change in 41.66 that would cause it to break.

 

While gaining experience (e.g. via walking with high inventory weight), errors like this are observed from Passive Skills Fix:

 

ERROR: General     , 1645645174902> 6,563,104,291> ExceptionLogger.logException> Exception thrown java.lang.RuntimeException: No implementation found at MultiLuaJavaInvoker.call line:112.
ERROR: General     , 1645645174902> 6,563,104,292> DebugLogStream.printException> Stack trace:
java.lang.RuntimeException: No implementation found
	at se.krka.kahlua.integration.expose.MultiLuaJavaInvoker.call(MultiLuaJavaInvoker.java:112)
	at se.krka.kahlua.vm.KahluaThread.callJava(KahluaThread.java:182)
	at se.krka.kahlua.vm.KahluaThread.luaMainloop(KahluaThread.java:1007)
	at se.krka.kahlua.vm.KahluaThread.call(KahluaThread.java:163)
	at se.krka.kahlua.vm.KahluaThread.pcall(KahluaThread.java:1980)
	at se.krka.kahlua.vm.KahluaThread.pcallvoid(KahluaThread.java:1812)
	at se.krka.kahlua.integration.LuaCaller.pcallvoid(LuaCaller.java:66)
	at se.krka.kahlua.integration.LuaCaller.protectedCallVoid(LuaCaller.java:139)
	at zombie.Lua.Event.trigger(Event.java:64)
	at zombie.Lua.LuaEventManager.triggerEvent(LuaEventManager.java:169)
	at zombie.Lua.LuaEventManager.triggerEventGarbage(LuaEventManager.java:182)
	at zombie.characters.IsoGameCharacter$XP.AddXP(IsoGameCharacter.java:14859)
	at zombie.characters.IsoGameCharacter$XP.AddXP(IsoGameCharacter.java:14676)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at se.krka.kahlua.integration.expose.caller.MethodCaller.call(MethodCaller.java:62)
	at se.krka.kahlua.integration.expose.LuaJavaInvoker.call(LuaJavaInvoker.java:198)
	at se.krka.kahlua.integration.expose.MultiLuaJavaInvoker.call(MultiLuaJavaInvoker.java:79)
	at se.krka.kahlua.vm.KahluaThread.callJava(KahluaThread.java:182)
	at se.krka.kahlua.vm.KahluaThread.luaMainloop(KahluaThread.java:1007)
	at se.krka.kahlua.vm.KahluaThread.call(KahluaThread.java:163)
	at se.krka.kahlua.vm.KahluaThread.pcall(KahluaThread.java:1980)
	at se.krka.kahlua.vm.KahluaThread.pcallvoid(KahluaThread.java:1812)
	at se.krka.kahlua.integration.LuaCaller.pcallvoid(LuaCaller.java:66)
	at se.krka.kahlua.integration.LuaCaller.protectedCallVoid(LuaCaller.java:139)
	at zombie.Lua.Event.trigger(Event.java:64)
	at zombie.Lua.LuaEventManager.triggerEvent(LuaEventManager.java:88)
	at zombie.characters.IsoPlayer.updateInternal2(IsoPlayer.java:2369)
	at zombie.characters.IsoPlayer.updateInternal1(IsoPlayer.java:1871)
	at zombie.util.lambda.Invokers$Params1$CallbackStackItem.run(Invokers.java:37)
	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
	at zombie.core.profiling.AbstractPerformanceProfileProbe.lambda$invokeAndMeasure$0(AbstractPerformanceProfileProbe.java:83)
	at zombie.util.lambda.Stacks$Params3$CallbackStackItem.invoke(Stacks.java:230)
	at zombie.util.lambda.Stacks$GenericStack.invokeAndRelease(Stacks.java:26)
	at zombie.util.Lambda.capture(Lambda.java:130)
	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:81)
	at zombie.characters.IsoPlayer.update(IsoPlayer.java:1863)
	at zombie.MovingObjectUpdateSchedulerUpdateBucket.update(MovingObjectUpdateSchedulerUpdateBucket.java:79)
	at zombie.MovingObjectUpdateScheduler.update(MovingObjectUpdateScheduler.java:145)
	at zombie.iso.IsoCell.ProcessObjects(IsoCell.java:2927)
	at zombie.iso.IsoCell.updateInternal(IsoCell.java:5716)
	at zombie.util.lambda.Invokers$Params1$CallbackStackItem.run(Invokers.java:37)
	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
	at zombie.core.profiling.AbstractPerformanceProfileProbe.lambda$invokeAndMeasure$0(AbstractPerformanceProfileProbe.java:83)
	at zombie.util.lambda.Stacks$Params3$CallbackStackItem.invoke(Stacks.java:230)
	at zombie.util.lambda.Stacks$GenericStack.invokeAndRelease(Stacks.java:26)
	at zombie.util.Lambda.capture(Lambda.java:130)
	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:81)
	at zombie.iso.IsoCell.update(IsoCell.java:5662)
	at zombie.iso.IsoWorld.updateInternal(IsoWorld.java:3337)
	at zombie.util.lambda.Invokers$Params1$CallbackStackItem.run(Invokers.java:37)
	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
	at zombie.core.profiling.AbstractPerformanceProfileProbe.lambda$invokeAndMeasure$0(AbstractPerformanceProfileProbe.java:83)
	at zombie.util.lambda.Stacks$Params3$CallbackStackItem.invoke(Stacks.java:230)
	at zombie.util.lambda.Stacks$GenericStack.invokeAndRelease(Stacks.java:26)
	at zombie.util.Lambda.capture(Lambda.java:130)
	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:81)
	at zombie.iso.IsoWorld.update(IsoWorld.java:3265)
	at zombie.gameStates.IngameState.updateInternal(IngameState.java:1643)
	at zombie.gameStates.IngameState.update(IngameState.java:1359)
	at zombie.gameStates.GameStateMachine.update(GameStateMachine.java:101)
	at zombie.GameWindow.logic(GameWindow.java:289)
	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
	at zombie.GameWindow.frameStep(GameWindow.java:744)
	at zombie.GameWindow.run_ez(GameWindow.java:660)
	at zombie.GameWindow.mainThread(GameWindow.java:474)
	at java.base/java.lang.Thread.run(Unknown Source)
LOG  : General     , 1645645174905> 6,563,104,295> -----------------------------------------
STACK TRACE
-----------------------------------------
Callframe at: se.krka.kahlua.integration.expose.MultiLuaJavaInvoker@cc0ec98e
function: Fix -- file: passiveSkills.lua line # 22
Callframe at: se.krka.kahlua.integration.expose.MultiLuaJavaInvoker@cc0ec98e
function: onPlayerMove -- file: XpUpdate.lua line # 32

Tested server (Linux, dedicated) build ID 8247929 with client (Windows) build ID 8247924

Link to comment
Share on other sites

After some investigating, it looks like the AddXP function in IsoGameCharacter.XP was changed between 41.65 and 41.66

 

41.65 has these functions defined:

public void AddXP(Perk var1, float var2)
Public void AddXP(Perk var1, float var2, boolean var3)
public void AddXP(Perk var1, float var2, boolean var3, boolean var4) 
public void AddXP(Perk var1, float var2, boolean var3, boolean var4, boolean var5, boolean var6)

41.66 has some functions curiously removed, as now only these are defined:

public void AddXP(Perk var1, float var2) 
public void AddXP(Perk var1, float var2, boolean var3, boolean var4, boolean var5)

So if I'm understanding this correctly, it looks like any mod which uses the previous two

 > Public void AddXP(Perk var1, float var2, boolean var3)
 > public void AddXP(Perk var1, float var2, boolean var3, boolean var4) 

Functions will result in an undefined error.

In my case, I've been using "public void AddXP(Perk var1, float var2, boolean var3, boolean var4)" , so it looks like the solution is to migrate those calls to "public void AddXP(Perk var1, float var2, boolean var3, boolean var4, boolean var5, boolean var6)" instead?

 

I could be wrong, so let me know if this is something else?

Edited by HypnoToadTrance
Awkward spacing
Link to comment
Share on other sites

2 minutes ago, Pandorea said:

Have you contacted mods creators with these issues? 

 

I am the mod creator of More Traits, and after making the change in code from 

player:getXp():AddXP(perk, amount, false, false);

to

player:getXp():AddXP(perk, amount, false, false, false);

The error no longer occurs.

I could still just be dumb and it might've been something else, but this resolved it for me.

 

Still, it would be good practice to leave some sort of method that accepts the previously working functions to prevent this incompatibility.

 

I wish I knew exactly what the new boolean parameter was doing, but at least the game is happy to accept the code now.

 

Link to comment
Share on other sites

1 hour ago, HypnoToadTrance said:

 

I am the mod creator of More Traits, and after making the change in code from 

player:getXp():AddXP(perk, amount, false, false);

to

player:getXp():AddXP(perk, amount, false, false, false);

The error no longer occurs.

I could still just be dumb and it might've been something else, but this resolved it for me.

 

Still, it would be good practice to leave some sort of method that accepts the previously working functions to prevent this incompatibility.

 

I wish I knew exactly what the new boolean parameter was doing, but at least the game is happy to accept the code now.

 


The last bool is to mark it as a remote player or not.  A remote player is one that's simulated on your client, if I understand it right. So, you'd likely want to leave it false.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...