Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error while enabling plugin in Spigot 1.12 #40

Closed
alphanimal opened this issue Jun 10, 2017 · 18 comments
Closed

Error while enabling plugin in Spigot 1.12 #40

alphanimal opened this issue Jun 10, 2017 · 18 comments

Comments

@alphanimal
Copy link

When loading the plugin in Spigot 1.12 I get the following exception:

[22:06:00] [Server thread/ERROR]: Error occurred while enabling PlayerSQL v2.4.2 (Is it up to date?)
java.lang.NoClassDefFoundError: com/avaje/ebean/config/dbplatform/DatabasePlatform
	at com.mengcraft.playersql.lib.simpleorm.EbeanManager.a(EbeanManager.java:48) ~[?:?]
	at com.mengcraft.playersql.lib.simpleorm.EbeanManager.getHandler(EbeanManager.java:23) ~[?:?]
	at com.mengcraft.playersql.PluginMain.onEnable(PluginMain.java:30) ~[?:?]
	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:402) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:377) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:327) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:421) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:382) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:337) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:272) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:544) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111]
Caused by: java.lang.ClassNotFoundException: com.avaje.ebean.config.dbplatform.DatabasePlatform
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_111]
	at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_111]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_111]
	... 14 more
@caoli5288
Copy link
Owner

@alphanimal
Copy link
Author

Now I get this after logging on and the inventory is empty now.

[16:38:09] [Server thread/ERROR]: [PlayerSQL] java.lang.IllegalArgumentException: Length of Base64 encoded input string is not a multiple of 4.
java.lang.IllegalArgumentException: Length of Base64 encoded input string is not a multiple of 4.
	at org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder.decode(Base64Coder.java:267) ~[spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder.decode(Base64Coder.java:246) ~[spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder.decode(Base64Coder.java:232) ~[spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at com.mengcraft.playersql.lib.ItemUtil$Simple.load(ItemUtil.java:135) ~[?:?]
	at com.mengcraft.playersql.lib.ItemUtil$Simple.convert(ItemUtil.java:87) ~[?:?]
	at com.mengcraft.playersql.UserManager.toStack(UserManager.java:219) ~[?:?]
	at com.mengcraft.playersql.UserManager.pend(UserManager.java:160) ~[?:?]
	at com.mengcraft.playersql.UserManager.pend(UserManager.java:152) ~[?:?]
	at com.mengcraft.playersql.UserManager.lambda$addFetched$0(UserManager.java:50) ~[?:?]
	at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:71) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:738) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:405) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.12-2017-06-10.jar:git-Spigot-87496df-ed8c725]
	at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111]

@caoli5288
Copy link
Owner

@alphanimal I'll check it later. seems 1.12 change the NBT format.

@alphanimal
Copy link
Author

I think it's working now. I'll test if it transports the inventory from 1.11 to 1.12 correctly.

I only get a warning now when I log on:

[17:21:23 WARN]: Wed Jun 14 17:21:23 CEST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

@caoli5288
Copy link
Owner

@alphanimal Alright. That not a very important warn. :-)

@alphanimal
Copy link
Author

alphanimal commented Jun 15, 2017

OK so for player who had their inventory stored in 1.11, when they first join a 1.12 server they lose their inventory with the following error:

[17:03:24] [Server thread/ERROR]: [PlayerSQL] java.lang.IllegalArgumentException: Length of Base64 encoded input string is not a multiple of 4.
java.lang.IllegalArgumentException: Length of Base64 encoded input string is not a multiple of 4.
	at org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder.decode(Base64Coder.java:267) ~[spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
	at org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder.decode(Base64Coder.java:246) ~[spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
	at org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder.decode(Base64Coder.java:232) ~[spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
	at com.mengcraft.playersql.lib.ItemUtil$Simple.load(ItemUtil.java:135) ~[?:?]
	at com.mengcraft.playersql.lib.ItemUtil$Simple.convert(ItemUtil.java:87) ~[?:?]
	at com.mengcraft.playersql.UserManager.toStack(UserManager.java:219) ~[?:?]
	at com.mengcraft.playersql.UserManager.pend(UserManager.java:160) ~[?:?]
	at com.mengcraft.playersql.UserManager.pend(UserManager.java:152) ~[?:?]
	at com.mengcraft.playersql.UserManager.lambda$addFetched$0(UserManager.java:50) ~[?:?]
	at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:71) [spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
	at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353) [spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
	at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:738) [spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
	at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:405) [spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
	at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
	at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
	at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111]

That is still the case with the newest build

@alphanimal
Copy link
Author

alphanimal commented Jun 15, 2017

It's pretty bad now, because every player who logs in from now on basically loses their inventory.

The format seems to have changed.

Here's the inventory field from a player who hasn't logged on in 1.12 yet:

["ARQBAiMKAAAJAARlbmNoCgAAAAQCAANsdmwABQIAAmlkABAAAgADbHZsAAMCAAJpZAAiAAIAA2x2\nbAACAgACaWQAEwACAANsdmwAAgIAAmlkABUAAwAKUmVwYWlyQ29zdAAAACsKAAdkaXNwbGF5CAAE\nTmFtZQALTDRaMFJTVFI0SEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","ARYBAHkKAAAJAARlbmNoCgAAAAQCAANsdmwABQIAAmlkACAAAgADbHZsAAECAAJpZAAhAAIAA2x2\nbAADAgACaWQAIgACAANsdmwAAQIAAmlkAEYAAwAKUmVwYWlyQ29zdAAAAB8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","ARYBAAEKAAAJAARlbmNoCgAAAAQCAANsdmwABQIAAmlkACAAAgADbHZsAAMCAAJpZAAiAAIAA2x2\nbAADAgACaWQAIwACAANsdmwAAQIAAmlkAEYAAwAKUmVwYWlyQ29zdAAAAAcAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","ARUBAIMKAAAJAARlbmNoCgAAAAQCAANsdmwABQIAAmlkACAAAgADbHZsAAMCAAJpZAAiAAIAA2x2\nbAADAgACaWQAIwACAANsdmwAAQIAAmlkAEYAAwAKUmVwYWlyQ29zdAAAAAMAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","AQUBAGgKAAAJAARlbmNoCgAAAAUCAANsdmwABQIAAmlkADAAAgADbHZsAAICAAJpZAAxAAIAA2x2\nbAABAgACaWQAMgACAANsdmwAAwIAAmlkACIAAgADbHZsAAECAAJpZAAzAAMAClJlcGFpckNvc3QA\nAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","AZEpAAAKAAAKAAlGaXJld29ya3MBAAZGbGlnaHQDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","AUAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","ACMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","AUYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","AZFAAAAKAAAKAAlGaXJld29ya3MBAAZGbGlnaHQDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","AZFAAAAKAAAKAAlGaXJld29ya3MBAAZGbGlnaHQDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","AagBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","AU4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","AWwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n",null,null,"AZMBAAAKAAADAApSZXBhaXJDb3N0AAAAAQkAElN0b3JlZEVuY2hhbnRtZW50cwoAAAABAgADbHZs\nAAMCAAJpZAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","AQYMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"ATkBAAAKAAAJAARlbmNoCgAAAAQCAANsdmwABAIAAmlkAAAAAgADbHZsAAQCAAJpZAACAAIAA2x2\nbAADAgACaWQAIgACAANsdmwAAQIAAmlkAEYAAwAKUmVwYWlyQ29zdAAAAA0AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","ATgBAAAKAAAJAARlbmNoCgAAAAMCAANsdmwABAIAAmlkAAAAAgADbHZsAAMCAAJpZAAiAAIAA2x2\nbAABAgACaWQARgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","AbsBAFIKAAAJAARlbmNoCgAAAAICAANsdmwAAwIAAmlkACIAAgADbHZsAAECAAJpZABGAAMAClJl\ncGFpckNvc3QAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n","ATYBAAAKAAAJAARlbmNoCgAAAAUCAANsdmwAAwIAAmlkAAAAAgADbHZsAAMCAAJpZAAiAAIAA2x2\nbAACAgACaWQABQACAANsdmwAAQIAAmlkAAYAAgADbHZsAAECAAJpZABGAAMAClJlcGFpckNvc3QA\nAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\n",null]

Here's the inventory field from a player who has logged on in 1.12:

["CAACaWQAFW1pbmVjcmFmdDpkaWFtb25kX2F4ZQEABUNvdW50AQoAA3RhZwkABGVuY2gKAAAAAgIAA2x2bAAEAgACaWQAIAACAANsdmwAAwIAAmlkACIAAwAKUmVwYWlyQ29zdAAAAAEAAgAGRGFtYWdlAgIA","CAACaWQAGW1pbmVjcmFmdDpkaWFtb25kX3BpY2theGUBAAVDb3VudAEKAAN0YWcJAARlbmNoCgAAAAQCAANsdmwABQIAAmlkACAAAgADbHZsAAECAAJpZAAhAAIAA2x2bAADAgACaWQAIgACAANsdmwAAQIAAmlkAEYAAwAKUmVwYWlyQ29zdAAAABsAAgAGRGFtYWdlACwA","CAACaWQAGG1pbmVjcmFmdDpkaWFtb25kX3Nob3ZlbAEABUNvdW50AQoAA3RhZwkABGVuY2gKAAAAAwIAA2x2bAAFAgACaWQAIAACAANsdmwAAQIAAmlkACEAAgADbHZsAAMCAAJpZAAiAAMAClJlcGFpckNvc3QAAAAGAAIABkRhbWFnZQIaAA==","CAACaWQAF21pbmVjcmFmdDpnb2xkZW5fY2Fycm90AQAFQ291bnQKAgAGRGFtYWdlAAAA","CAACaWQADW1pbmVjcmFmdDppY2UBAAVDb3VudDgCAAZEYW1hZ2UAAAA=","CAACaWQAE21pbmVjcmFmdDpmaXJld29ya3MBAAVDb3VudCMKAAN0YWcKAAlGaXJld29ya3MBAAZGbGlnaHQCCQAKRXhwbG9zaW9ucwoAAAABAQAEVHlwZQQLAAZDb2xvcnMAAAABALMxLAAAAAIABkRhbWFnZQAAAA==","CAACaWQAFW1pbmVjcmFmdDplbmRlcl9wZWFybAEABUNvdW50EAIABkRhbWFnZQAAAA==","CAACaWQAFG1pbmVjcmFmdDpzdG9uZV9zbGFiAQAFQ291bnQDAgAGRGFtYWdlAAMA","CAACaWQAD21pbmVjcmFmdDphcnJvdwEABUNvdW50AwIABkRhbWFnZQAAAA==","CAACaWQADm1pbmVjcmFmdDpib25lAQAFQ291bnQFAgAGRGFtYWdlAAAA","CAACaWQADW1pbmVjcmFmdDpib3cBAAVDb3VudAECAAZEYW1hZ2UBXwA=","CAACaWQAD21pbmVjcmFmdDpjaGVzdAEABUNvdW50AwIABkRhbWFnZQAAAA==","CAACaWQAFW1pbmVjcmFmdDplbmRlcl9jaGVzdAEABUNvdW50AQIABkRhbWFnZQAAAA==",null,null,null,null,null,null,null,null,null,null,null,null,null,null,"CAACaWQADW1pbmVjcmFmdDplZ2cBAAVDb3VudBACAAZEYW1hZ2UAAAA=","CAACaWQADW1pbmVjcmFmdDplZ2cBAAVDb3VudBACAAZEYW1hZ2UAAAA=","CAACaWQADW1pbmVjcmFmdDplZ2cBAAVDb3VudA8CAAZEYW1hZ2UAAAA=","CAACaWQADW1pbmVjcmFmdDplZ2cBAAVDb3VudBACAAZEYW1hZ2UAAAA=","CAACaWQADW1pbmVjcmFmdDplZ2cBAAVDb3VudA4CAAZEYW1hZ2UAAAA=",null,null,null,null,"CAACaWQAF21pbmVjcmFmdDpkaWFtb25kX2Jvb3RzAQAFQ291bnQBCgADdGFnCQAEZW5jaAoAAAAFAgADbHZsAAQCAAJpZAAAAAIAA2x2bAADAgACaWQACAACAANsdmwABAIAAmlkAAIAAgADbHZsAAMCAAJpZAAiAAIAA2x2bAABAgACaWQARgADAApSZXBhaXJDb3N0AAAABwACAAZEYW1hZ2UAAAA=",null,"CAACaWQAEG1pbmVjcmFmdDplbHl0cmEBAAVDb3VudAEKAAN0YWcJAARlbmNoCgAAAAICAANsdmwAAwIAAmlkACIAAgADbHZsAAECAAJpZABGAAMAClJlcGFpckNvc3QAAAALCgAHZGlzcGxheQgABE5hbWUAE0FscGgncyBFeGUncyBFbHl0cmEAAAIABkRhbWFnZQA2AA==","CAACaWQAEm1pbmVjcmFmdDpvYnNlcnZlcgEABUNvdW50AQIABkRhbWFnZQAAAA==",null]

@alphanimal
Copy link
Author

alphanimal commented Jun 15, 2017

I think the problem is it used to break lines at 76 characters. now all the \n in the encoded strings cause problems.

It also seems to have a fixed length padded by 0x0, judging from all the AAAAAAAAA in the string.

@alphanimal
Copy link
Author

When I try to remove all the \n from the inventory field, I get this:

[18:04:39 ERROR]: [PlayerSQL] java.lang.reflect.InvocationTargetException
java.lang.reflect.InvocationTargetException: null
        at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
        at com.mengcraft.playersql.lib.ItemUtil$Simple.load(ItemUtil.java:138) ~[?:?]
        at com.mengcraft.playersql.lib.ItemUtil$Simple.convert(ItemUtil.java:87) ~[?:?]
        at com.mengcraft.playersql.UserManager.toStack(UserManager.java:219) ~[?:?]
        at com.mengcraft.playersql.UserManager.pend(UserManager.java:160) ~[?:?]
        at com.mengcraft.playersql.UserManager.pend(UserManager.java:152) ~[?:?]
        at com.mengcraft.playersql.UserManager.lambda$addFetched$0(UserManager.java:50) ~[?:?]
        at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:71) [spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
        at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353) [spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:738) [spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:405) [spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111]
Caused by: java.io.EOFException
        at java.io.DataInputStream.readFully(DataInputStream.java:197) ~[?:1.8.0_111]
        at java.io.DataInputStream.readUTF(DataInputStream.java:609) ~[?:1.8.0_111]
        at java.io.DataInputStream.readUTF(DataInputStream.java:564) ~[?:1.8.0_111]
        at net.minecraft.server.v1_12_R1.NBTTagCompound.b(SourceFile:433) ~[spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
        at net.minecraft.server.v1_12_R1.NBTTagCompound.load(SourceFile:75) ~[spigot-1.12-2017-06-14.jar:git-Spigot-cd6ba67-f7d14f1]
        ... 16 more

@caoli5288
Copy link
Owner

@alphanimal have no idea if NMS changed NBT format. This plugin call NMS's origin save/load method by reflect.
Feeling sorry.

@alphanimal
Copy link
Author

OK I have a workaround. I archived the playersql table in the database. So when somebody reconnects it's not trying to load the old inventory from the database but is just using the one in the player file. after the inventory is saved in a new record (in the new format) it can be loaded successfully.

Thanks for all your support!

@alphanimal
Copy link
Author

Maybe you can still implement a safety mechanism for that? Say if it fails to load the inventory for any reason from the database, even if there is an entry there, just make a new entry (overwrite) with the currently loaded inventory.

@caoli5288
Copy link
Owner

@alphanimal I'll do a mechanism not override database column if player load inventory from database failed.

@caoli5288
Copy link
Owner

@alphanimal
Copy link
Author

With this version if I try to load old/invalid data I cannot even log in to the server:

alphanimal lost connection: Your game data loading error, please contact the operator
[18:22:56 INFO]: [PlayerSQL] java.lang.IllegalArgumentException: Length of Base64 encoded input string is not a multiple of 4.
[18:22:56 WARN]: java.lang.NullPointerException
[18:22:56 WARN]:        at mineverse.Aust1n46.chat.MineverseChat.onPluginMessageReceived(MineverseChat.java:859)
[18:22:56 WARN]:        at org.bukkit.plugin.messaging.StandardMessenger.dispatchIncomingMessage(StandardMessenger.java:427)
[18:22:56 WARN]:        at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:2625)
[18:22:56 WARN]:        at net.minecraft.server.v1_12_R1.PacketPlayInCustomPayload.a(SourceFile:58)
[18:22:56 WARN]:        at net.minecraft.server.v1_12_R1.PacketPlayInCustomPayload.a(SourceFile:8)
[18:22:56 WARN]:        at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13)
[18:22:56 WARN]:        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[18:22:56 WARN]:        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[18:22:56 WARN]:        at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46)
[18:22:56 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:747)
[18:22:56 WARN]:        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:405)
[18:22:56 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:678)
[18:22:56 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:576)
[18:22:56 WARN]:        at java.lang.Thread.run(Thread.java:745)

My suggestion is that it should ignore the data that cannot beloaded and just use the inventory from the player file. Once it gets saved to the database again it's OK to load the next time.

@caoli5288
Copy link
Owner

@alphanimal Umm... Okay I'll made it.

@caoli5288
Copy link
Owner

Try https://github.com/caoli5288/PlayerSQL/releases/tag/v2.5.1b2 and set/add kick-load-failed: false in config.yml

@alphanimal
Copy link
Author

That is working! very nice!

I'd still make it the default behaviour, but that works.

thank you so much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants