ago

[RELEASED] Server mod loader + priest + crops + seasons + server packs + bag of holding

Recommended Posts

Loving the launcher ago, keep up the good work. No longer do I come back from killing wolves to find that all my crops withered while I was away. Thank god for that. Also loving the spellmod as I can actually play with a priest for once.

 

On the topic of spells, did you write the BagofHolding mod? I'm assuming it only affects the volume of containers (I can't cast it yet). Not the weight of either the container or the items inside? Some kind of "Feather" spell would be nice to go along with that, reducing the weight of items. Just an idea.

Share this post


Link to post
Share on other sites

The MessageHook is no longer working with the newest beta release. They outsourced the input message variable check into different methodes. So fetching the message variable became complicated in the ProxyServerHook, currently looking to fix this...

Share this post


Link to post
Share on other sites

No changes to 0.13.1. Just a merge of the beta branch.

Edited by ago
  • Like 1

Share this post


Link to post
Share on other sites

The christmas mod should be disabled in case anyone has it active.

 

The code to give out the presents has been changed and the mod needs to be updated in about 11 months

Share this post


Link to post
Share on other sites

Hi Ago,

 

The new version of modlauncher works on the server I run off my laptop but not my dedicated server box.

 

Here's the error I get.

 

Spoiler

C:\Users\Administrator\Desktop\Deso>if exist logging.properties set LOGGING=-Dja
va.util.logging.config.file=logging.properties

C:\Users\Administrator\Desktop\Deso>runtime\bin\java "-Dworkdir=C:\Users\Adminis
trator\Desktop\Deso" "-Djava.library.path=C:\Users\Administrator\Desktop\Deso\na
tivelibs"  -Xmn256M -Xms512m -Xmx2048m -XX:+OptimizeStringConcat -XX:+Aggressive
Opts -jar modlauncher.jar
Jan 20, 2016 5:07:04 PM org.gotti.wurmunlimited.modloader.ModLoader loadModsFrom
ModDir
INFO: ModLoader version v0.14-beta1-5025eb1
java.lang.NoClassDefFoundError: org/gotti/wurmunlimited/modloader/interfaces/Wur
mUIMod
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.gotti.wurmunlimited.modloader.ModLoader.loadModFromInfo(ModLoader
.java:149)
        at org.gotti.wurmunlimited.modloader.ModLoader.loadModsFromModDir(ModLoa
der.java:74)
        at org.gotti.wurmunlimited.serverlauncher.DelegatedLauncher.main(Delegat
edLauncher.java:16)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at javassist.Loader.run(Loader.java:288)
        at org.gotti.wurmunlimited.serverlauncher.ServerLauncher.main(ServerLaun
cher.java:24)
Caused by: java.lang.ClassNotFoundException: org.gotti.wurmunlimited.modloader.i
nterfaces.WurmUIMod
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 20 more

 

Edited by Rudie

Share this post


Link to post
Share on other sites

There is a mod on the dedicated server that uses the GUI loader fork. The WurmUIMod interface is not part of the modloader.

 

I can't find a link to that loader anymore on the forum.

EDIT: found it

 

 

Edited by ago

Share this post


Link to post
Share on other sites
On 20/01/2016 at 11:07 PM, Rudie said:

Hi Ago,

 

The new version of modlauncher works on the server I run off my laptop but not my dedicated server box.

 

Here's the error I get.  *snip*

If you are using the modded server launcher then you need to start it with serverlauncher.bat.  If you don't want to use the launcher and want to just use ago's modloader on it's own then you need to remove the "mods" the server launcher adds (serversettings, players, playercount and gameplaytweaks), or for a less permanent solution, rename the .properties files for those mods to something else (ago uses .disabled).

 

I've just given it a test myself and it seems to work with the latest version.  However it has been a while since I last released an update, so there maybe some part of my configuration I've update and forgotten to release.  Just let me know if you still have problems.

 

Sorry for the confusion.

 

I didn't know a solution that didn't involve adding an extra option to the .properties files, so it uses extra interfaces that won't be there if the modloader.jar is the one that's executed.

Share this post


Link to post
Share on other sites

C:\SteamLibrary\steamapps\common\Wurm unlimited\WurmServerLauncher>patcher.bat

C:\SteamLibrary\steamapps\common\Wurm unlimited\WurmServerLauncher>runtime\bin\j
ava -classpath patcher.jar;javassist.jar org.gotti.wurmunlimited.patcher.PatchSe
rverJar
The system cannot find the path specified.

C:\SteamLibrary\steamapps\common\Wurm unlimited\WurmServerLauncher>pause
Press any key to continue . . .

---------------------------------------------------------------------------------


C:\SteamLibrary\steamapps\common\Wurm unlimited\WurmServerLauncher>modlauncher

C:\SteamLibrary\steamapps\common\Wurm unlimited\WurmServerLauncher>if exist logg
ing.properties set LOGGING=-Djava.util.logging.config.file=logging.properties

C:\SteamLibrary\steamapps\common\Wurm unlimited\WurmServerLauncher>runtime\bin\j
ava "-Dworkdir=C:\SteamLibrary\steamapps\common\Wurm unlimited\WurmServerLaunche
r" "-Djava.library.path=C:\SteamLibrary\steamapps\common\Wurm unlimited\WurmServ
erLauncher\nativelibs"  -Xmn256M -Xms512m -Xmx2048m -XX:+OptimizeStringConcat -X
X:+AggressiveOpts -jar modlauncher.jar
The system cannot find the path specified.

C:\SteamLibrary\steamapps\common\Wurm unlimited\WurmServerLauncher>pause
Press any key to continue . . .


---------------------------------------------------------------------------------

Patcher.bat contains:

runtime\bin\java -classpath patcher.jar;javassist.jar org.gotti.wurmunlimited.patcher.PatchServerJar
pause


Modlauncher.bat contains:

if exist logging.properties set LOGGING=-Djava.util.logging.config.file=logging.properties

runtime\bin\java "-Dworkdir=%CD%" "-Djava.library.path=%CD%\nativelibs" %LOGGING% -Xmn256M -Xms512m -Xmx2048m -XX:+OptimizeStringConcat -XX:+AggressiveOpts -jar modlauncher.jar  %*

pause

---------------------------------------------------------------------------------

I put the pause in both bat files to stop it closing the window so I could see the error.

 

Client modloader works perfectly and I put the livemap mod on my client with absolutely no problems, I just can't get the server modloader to work. Downloaded the server modlauncher from this thread about 12 hours ago, they had the Bag of Holding etc mods included so these are definitely the server modloader files.

 

Share this post


Link to post
Share on other sites

I been trying to change some values in CreationMatrix class. I couldn't figure out why the hashMaps for simpleEntries (below "s{}") and matrix (below "m{}") were always empty. The structure of the code is exactly like ItemTemplateFactory which I can access and change so it shouldn't be my code.

 

 

Then I looked at the debug a little closer and saw that CreationEntries are getting Initialized after onServerStarted() does its thing. Assuming this is the problem is there a solution I can use or does modloader need to be changed?

 

[09:33:48 AM] INFO com.Joedobo27.WUmod.BigContainersBAEAMod: Number of inside or outside only flags removed is 49
[09:33:48 AM] INFO com.Joedobo27.WUmod.ClayNShards4ConcreteMod: s {}
[09:33:48 AM] INFO com.Joedobo27.WUmod.ClayNShards4ConcreteMod: m {}
[09:33:48 AM] INFO org.gotti.wurmunlimited.mods.spellmod.SpellMod: Initializing Spell modifications
[09:33:48 AM] INFO com.wurmonline.server.items.CreationEntryCreator: Initialising the CreationEntries took 11.171758 millis.
[09:33:48 AM] INFO com.wurmonline.server.Items: Current number of eggs is 56 (max eggs is 1000) That took 76.88284 ms.

 

edit***

I found a solution.

Quote

HookManager.getInstance().registerHook("com.wurmonline.server.items.CreationEntryCreator", "createCreationEntries", "()V",
        new InvocationHandlerFactory() {
    @Override
    public InvocationHandler createInvocationHandler() {
        return new InvocationHandler() {

            @Override
            public Object invoke(Object object, Method method, Object[] args) throws Throwable {
                Object toReturn = method.invoke(object, args);
                Map<Integer, List<CreationEntry>> simpleEntries = ReflectionUtil.getPrivateField(CreationMatrix.class,
                        ReflectionUtil.getField(CreationMatrix.class, "simpleEntries"));
                logger.log(Level.INFO, "s " + simpleEntries);
                Map<Integer, List<CreationEntry>> matrix = ReflectionUtil.getPrivateField(CreationMatrix.class,
                        ReflectionUtil.getField(CreationMatrix.class, "matrix"));
                logger.log(Level.INFO,"m " + matrix);
                return toReturn;
            }
        };
    }
});

 

Edited by joedobo

Share this post


Link to post
Share on other sites

This might not be necessary. Server.startRunning() is called directly from ServerLauncher.runServer(boolean) where the CreationEntryCreator is called. I just moved the OnServerStarted hook after ServerLauncher.runServer(boolean)

 

https://github.com/ago1024/WurmServerModLauncher/releases/tag/v0.15

Version 0.15

  • Moved OnServerStarted hook after CreationEntryCreator
  • Added pause to patcher script
  • Like 1

Share this post


Link to post
Share on other sites

ago they patched today.  Im not sure if its related to the server modlauncher but when I upgraded the test server I cannot log into the server.. I get a Protocol error.  

 

FYI

Share this post


Link to post
Share on other sites

I've had an issue when the current stable client tried to connect to the old stable server. The protocol error went away after updating the server. I hadn't had a chance to test stable thoroughly and I did not check the new beta at all though.

Share this post


Link to post
Share on other sites

I patched server today and just repatched using ago's mod loader. All is well.

Share this post


Link to post
Share on other sites

Yea i think the server has caused a conflicting MOD.   Im still trying to figure out why I cant patch.  Ive tried pulling MOD's out..   I hate patches ;(

Our users can still login with no issues..   I would like the patch as it fixes GL cluster communication.     The adventure continues. 

Edited by razoreqx

Share this post


Link to post
Share on other sites

Any idea's Ago? works fine on my PC but as always my dedicated server messes up.

 

Spoiler

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java
.lang.reflect.InvocationTargetException
        at javafx.fxml.FXMLLoader$MethodHandler.invoke(Unknown Source)
        at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(Unknown So
urce)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unkn
own Source)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknow
n Source)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknow
n Source)
        at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(U
nknown Source)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
e)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
rce)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
e)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
rce)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
e)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
rce)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
e)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
rce)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
e)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
rce)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
e)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
rce)
        at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
        at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
        at javafx.event.Event.fireEvent(Unknown Source)
        at javafx.scene.Node.fireEvent(Unknown Source)
        at javafx.scene.control.Button.fire(Unknown Source)
        at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(Un
known Source)
        at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(Unknown S
ource)
        at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(Unknown S
ource)
        at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.h
andleBubblingEvent(Unknown Source)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unkn
own Source)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknow
n Source)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknow
n Source)
        at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(U
nknown Source)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
e)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
rce)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
e)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
rce)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
e)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
rce)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
e)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
rce)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
e)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
rce)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
e)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
rce)
        at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
        at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
        at javafx.event.Event.fireEvent(Unknown Source)
        at javafx.scene.Scene$MouseHandler.process(Unknown Source)
        at javafx.scene.Scene$MouseHandler.access$1500(Unknown Source)
        at javafx.scene.Scene.impl_processMouseEvent(Unknown Source)
        at javafx.scene.Scene$ScenePeerListener.mouseEvent(Unknown Source)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotificatio
n.run(Unknown Source)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotificatio
n.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEve
nt$355(Unknown Source)
        at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(Unknown
 Source)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Unkn
own Source)
        at com.sun.glass.ui.View.handleMouseEvent(Unknown Source)
        at com.sun.glass.ui.View.notifyMouse(Unknown Source)
        at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at com.sun.glass.ui.win.WinApplication.lambda$null$149(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at sun.reflect.misc.Trampoline.invoke(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
        ... 61 more
Caused by: org.gotti.wurmunlimited.modloader.classhooks.HookException: java.lang
.reflect.InvocationTargetException
        at org.gotti.wurmunlimited.modloader.classhooks.HookManager.invoke(HookM
anager.java:317)
        at com.wurmonline.server.ServerLauncher.runServer(ServerLauncher.java)
        at com.wurmonline.server.gui.WurmServerGuiController.startButtonClicked(
WurmServerGuiController.java:277)
        ... 70 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.gotti.wurmunlimited.modloader.ProxyServerHook$1$1.invoke(ProxySer
verHook.java:49)
        at org.gotti.wurmunlimited.modloader.classhooks.HookManager.invoke(HookM
anager.java:307)
        ... 72 more
Caused by: java.lang.UnsatisfiedLinkError: SteamJni.SteamServerApi.SetGameTags(L
java/lang/String;)V
        at SteamJni.SteamServerApi.SetGameTags(Native Method)
        at com.wurmonline.server.steam.SteamHandler.createServer(SteamHandler.ja
va:82)
        at com.wurmonline.server.Server.startRunning(Server.java:1001)
        at com.wurmonline.server.ServerLauncher.runServer$1(ServerLauncher.java:
109)
        ... 78 more

Edited by Rudie

Share this post


Link to post
Share on other sites
Caused by: java.lang.UnsatisfiedLinkError: SteamJni.SteamServerApi.SetGameTags(Ljava/lang/String;)V
        at SteamJni.SteamServerApi.SetGameTags(Native Method)
        at com.wurmonline.server.steam.SteamHandler.createServer(SteamHandler.java:82)

This is a call into SteamServerJni.dll (or the linux equivalent). It might be possible that this library has not been updated with yesterdays update. Please check if lib/SteamServerJni.jar has a modification date of Feb 4. If it does not then have steam verify the dedicated server files to make it download the latest file again.

 

It might be possible to copy the file from a working server if both are running the same OS.

Share this post


Link to post
Share on other sites

Copied the entire folder across but still getting the same error.

 

Share this post


Link to post
Share on other sites

Is the server running Windows or Linux?

Is nativelibs\SteamServerJni.dll (or nativelibs/libSteamServerJni.so on linux) from Feb 4th or newer?

Do you have an older version of that file somewhere else?

Share this post


Link to post
Share on other sites

server is running windows as is the PC. I have older versions on my PC. The one I tried using was the newer.

Share this post


Link to post
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