Posted September 9, 2018 Currently the steamid of every player is stored in wurmplayer.db in the table STEAM_IDS. On storing there is a bigger problem causing the table to grow extremly huge over time. There is a bug in the code where the steam id for every player is stored in a new row EACH login, which means one new row for every login, old rows are not deleted/updated as they should. And then there is another problem, the table schema seems to be not set to auto-increment properly or however the ID should be, since the ID column is always NULL. The column can either be removed or should at least have the right value. "NULL" "503383590400" "765611980673xxxxx" "1536429967178" "1536429967178" "NULL" "503383590400" "765611980673xxxxx" "1536431719349" "1536431719349" "NULL" "503383590400" "765611980673xxxxx" "1536432049106" "1536432049106" "NULL" "503383590400" "765611980673xxxxx" "1536522635625" "1536522635625" "NULL" "503383590400" "765611980673xxxxx" "1536522698491" "1536522698491" Share this post Link to post Share on other sites
Posted September 10, 2018 Just to keep track of everything. This problem has NOT been fixed in WU version 1.8.0.3. Share this post Link to post Share on other sites
Posted March 12, 2019 (edited) Bump not fixed in 1.9.0.0 Edited March 13, 2019 by Retrograde keep your voice down please Share this post Link to post Share on other sites
Posted March 13, 2019 (edited) I posted my theory in the wrong place, ugh. anyway its here 3 hours ago, Cuddles said: edit, nvm was half asleep. theory #2 I don't think the hashmap "historySteamId" is even being populated and so when the method checks if the steamid already exists in the hashmap it always returns false and so adds it again to db. in com.wurmonline.server.players.DbPlayerInfo the method setSteamId checks if the steamid is already in the hashmap and if not then it adds it to the db, weird way of trying to do things but regardless I am pretty sure the hashmap is actually empty as the method loadHistorySteamIds is never actually called anywhere. That probably sounds confusing. tbh i think only way to fix this is to completely replace the code in method com.wurmonline.server.players.DbPlayerInfo.setSteamId to something that actually works... I don't have a fix as they didn't make the stuff static so would need to hook in a few places to try and fix this crap job they did. Edited March 13, 2019 by Retrograde changed link to quote Share this post Link to post Share on other sites
Posted March 13, 2019 I missed this when originally reported. I'll work to fix this before the beta goes live. 6 hours ago, Cuddles said: I don't have a fix as they didn't make the stuff static so would need to hook in a few places to try and fix this crap job they did. Thanks for the complement! ❤️ 1 Share this post Link to post Share on other sites
Posted March 13, 2019 Has anyone else been able to successfully #pardonsteam? I think it's broken, as I get no options when I try it, and so far nobody I've spoken with can confirm it is working. Maybe related to the other issue about Steam IDs? Share this post Link to post Share on other sites
Posted March 13, 2019 I did test the command when I implemented everything, so I'd need some data to work with to see why it's not working. Heck, I tested all of this. So I'm extremely interested in what's going on and will do a post when I get to the bottom of it. Share this post Link to post Share on other sites
Posted March 13, 2019 Well that was quick. Thanks to Cuddles up there for their complement and the tip. I apparently missed adding the load calls when I shamelessly copied the IP History code for use with SteamIDs. Yes @Batta- this could affect pardons. We've got a few other bugs we're looking at and will aim for a beta version bump this weekend with this fix and any others we can crank out. 1 Share this post Link to post Share on other sites
Posted March 13, 2019 10 hours ago, Keenan said: Well that was quick. Thanks to Cuddles up there for their complement and the tip. I apparently missed adding the load calls when I shamelessly copied the IP History code for use with SteamIDs. Yes @Batta- this could affect pardons. We've got a few other bugs we're looking at and will aim for a beta version bump this weekend with this fix and any others we can crank out. Sounds great thanks for bringing this to a good solution. Share this post Link to post Share on other sites
Posted March 14, 2019 (edited) haha i am sure there was a compliment in there somewhere. Did you also forget to call the change milkable aswell, atm it only resets with hummid drizzle or server restart. I should pay more attention to this section of forum I guess instead of just modding. I am glad you can fix that steamid relatively easily cus I was hooking into so much stuff to fix it as a mod and although I was there I didn't want to release it, I actually hate using hooks as they can break with every patch ? Edit: Personally I would just reset the milkable and sheared with the crop tick but that is just me. Double Edit: This is what I had in my mod to reset milk and shear, maybe it can save you some time lol Creature[] crets = Creatures.getInstance().getCreatures(); for (int x = 0; x < crets.length; ++x) { if (crets[x].isMilkable()){ crets[x].setMilked(false); } if (crets[x].isSheared()){ crets[x].setSheared(false); } } Edited March 14, 2019 by Cuddles Share this post Link to post Share on other sites
Posted March 14, 2019 7 minutes ago, Cuddles said: Did you also forget to call the change milkable aswell, atm it only resets with hummid drizzle or server restart. Our creatures are milkable a few times a day, without humid drizzle or a server reset. Same when I was playing on someone else's server last week. Share this post Link to post Share on other sites
Posted March 14, 2019 (edited) 4 minutes ago, Batta said: Our creatures are milkable a few times a day, without humid drizzle or a server reset. Same when I was playing on someone else's server last week. weird, our server they only get reset with hummid drizzle or server restart, thats why I made the mod *shrug* Edit: I also couldn't find anywhere in server code where it is reset to milkable. Edited March 14, 2019 by Cuddles Share this post Link to post Share on other sites
Posted April 19, 2019 On 3/13/2019 at 12:29 PM, Keenan said: Well that was quick. Thanks to Cuddles up there for their complement and the tip. I apparently missed adding the load calls when I shamelessly copied the IP History code for use with SteamIDs. Yes @Batta- this could affect pardons. We've got a few other bugs we're looking at and will aim for a beta version bump this weekend with this fix and any others we can crank out. This is still not fixed. Share this post Link to post Share on other sites
Posted July 29, 2019 End of July -- still not fixed. @Keenan is a fix coming? Our wurmplayers.db/STEAM_IDS file is thousands of lines long, and still shows Null under the first column, "ID". It would be great if it would link the Steam IDs to Player names, too. Would save a lot of work figuring out which Player ID goes with which player in this database. Share this post Link to post Share on other sites
Posted July 29, 2019 just checked on a brand new lan server and yeah this is still an issue, each login adds another line to STEAM_IDS. If I get some time later today I will see if I can throw together a mod to fix it until they release another patch that fixes it. 1 Share this post Link to post Share on other sites
Posted July 30, 2019 (edited) Ok this doesn't really fix any of the code in the game but it will fix the thousands of occurrences of the same players. Basically as a player logs in it will remove all occurrences of that player in the STEAM_ID db and then add just 1 keeping the original first used and updating with current time as last used. So players who don't log in will still have thousands of records in the db, if you really wanted you could delete them all manually and start fresh *shrug* https://1drv.ms/u/s!AjnBltNOSFjCgmwy4fO4L2xi7OI7 --=== Edit ===-- Ok maybe not delete ALL of them manually, just leave 1 of each playerid so if you have bans and stuff it wont get messed up. Edited July 30, 2019 by Cuddles Share this post Link to post Share on other sites
Posted July 30, 2019 2 hours ago, Cuddles said: Ok this doesn't really fix any of the code in the game but it will fix the thousands of occurrences of the same players. Thanks! We'll add this to our server. Share this post Link to post Share on other sites
Posted July 30, 2019 (edited) @CuddlesOh dear, this causes my server to crash. Nm, I just had a faulty download (missing jar file). Re-downloaded it and it is fixed. It works! Thank you very much for this. Spoiler [08:11:28 PM] SEVERE org.gotti.wurmunlimited.serverlauncher.DelegatedLauncher: java.nio.file.NoSuchFileException: mods\steamid org.gotti.wurmunlimited.modloader.classhooks.HookException: java.nio.file.NoSuchFileException: mods\steamid at org.gotti.wurmunlimited.modloader.ModInstanceBuilder.getClassLoaderEntries(ModInstanceBuilder.java:112) at org.gotti.wurmunlimited.modloader.ModInstanceBuilder.createClassLoader(ModInstanceBuilder.java:137) at org.gotti.wurmunlimited.modloader.ModInstanceBuilder.createModInstance(ModInstanceBuilder.java:64) at org.gotti.wurmunlimited.modloader.ModLoaderShared.lambda$loadModsFromModDir$1(ModLoaderShared.java:141) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) at org.gotti.wurmunlimited.modloader.ModLoaderShared.loadModsFromModDir(ModLoaderShared.java:143) at org.gotti.wurmunlimited.serverlauncher.DelegatedLauncher.main(DelegatedLauncher.java:20) 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 javassist.Loader.run(Loader.java:286) at org.gotti.wurmunlimited.serverlauncher.ServerLauncher.main(ServerLauncher.java:33) 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 PatchedLauncher.main(PatchedLauncher.java:20) Caused by: java.nio.file.NoSuchFileException: mods\steamid at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79) at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) at sun.nio.fs.WindowsFileAttributeViews$Basic.readAttributes(WindowsFileAttributeViews.java:53) at sun.nio.fs.WindowsFileAttributeViews$Basic.readAttributes(WindowsFileAttributeViews.java:38) at sun.nio.fs.WindowsFileSystemProvider.readAttributes(WindowsFileSystemProvider.java:193) at java.nio.file.Files.readAttributes(Files.java:1737) at java.nio.file.FileTreeWalker.getAttributes(FileTreeWalker.java:219) at java.nio.file.FileTreeWalker.visit(FileTreeWalker.java:276) at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:322) at java.nio.file.Files.walkFileTree(Files.java:2662) at java.nio.file.Files.walkFileTree(Files.java:2742) at org.gotti.wurmunlimited.modloader.ModInstanceBuilder.getClassLoaderEntries(ModInstanceBuilder.java:110) ... 23 more Edited July 30, 2019 by Batta Share this post Link to post Share on other sites
Posted July 30, 2019 error says no such file, I've never seen that before, did you put the file in the right place? Share this post Link to post Share on other sites
Posted July 30, 2019 1 minute ago, Cuddles said: error says no such file, I've never seen that before, did you put the file in the right place? I edited that post, probably right when you were typing. ? My download was incomplete, missing a jar file. I re-downloaded it from your link and now it works great. Share this post Link to post Share on other sites