auradevelopmentteam / invsync Goto Github PK
View Code? Open in Web Editor NEWThis plugin synchronizes the player inventory with a database
License: GNU General Public License v3.0
This plugin synchronizes the player inventory with a database
License: GNU General Public License v3.0
If possible, the building can also be transferred across servers.
When placing a ring into a baubles slot, and connecting to another server on my network it appears. However, if i remove it from the slot and connect to another server, it dupes the ring.
Instead of of serializing the invetories into an ObjectStream and HOCON use NBT instead.
Notes:
DataFormats.NBT
GZIPOutputStream
I have 2 sponge servers. One is moded, while the other is original.
If a player keeps items extended by mods then switch to the original server, InvSync will crash and out-of-sync.
[18:18:24 ERROR] [Sponge]: The Scheduler tried to run the task invsync-S-2 owned by Plugin{id=invsync, name=Inventory Sync, version=0.6.14, description=This plugin synchronizes the player inventory with a database, url=https://github.com/BrainStone/InvSync, authors=[The_BrainStone], source=mods/InvSync-0.6.14.jar}, but an error occured.
java.util.NoSuchElementException: No value present
at java.util.Optional.get(Optional.java:135) ~[?:1.8.0_131]
at org.spongepowered.common.item.inventory.SpongeItemStackBuilder.fromContainer(SpongeItemStackBuilder.java:168) ~[SpongeItemStackBuilder.class:1.10.2-5.2.0-BETA-387]
at world.jnc.invsync.util.serializer.InventorySerializer.deserializeItemStack(InventorySerializer.java:79) ~[InventorySerializer.class:0.6.14]
at world.jnc.invsync.util.serializer.InventorySerializer.deserializeInventory(InventorySerializer.java:56) ~[InventorySerializer.class:0.6.14]
at world.jnc.invsync.util.serializer.PlayerSerializer.deserializePlayer(PlayerSerializer.java:133) ~[PlayerSerializer.class:0.6.14]
at world.jnc.invsync.event.PlayerEvents.loadPlayer(PlayerEvents.java:154) ~[PlayerEvents.class:0.6.14]
at world.jnc.invsync.event.PlayerEvents.access$200(PlayerEvents.java:33) ~[PlayerEvents.class:0.6.14]
at world.jnc.invsync.event.PlayerEvents$WaitingForPreviousServerToFinish.accept(PlayerEvents.java:194) ~[PlayerEvents$WaitingForPreviousServerToFinish.class:0.6.14]
at world.jnc.invsync.event.PlayerEvents$WaitingForPreviousServerToFinish.accept(PlayerEvents.java:166) ~[PlayerEvents$WaitingForPreviousServerToFinish.class:0.6.14]
at org.spongepowered.common.scheduler.SchedulerBase.lambda$startTask$0(SchedulerBase.java:183) ~[SchedulerBase.class:1.10.2-5.2.0-BETA-387]
at org.spongepowered.common.scheduler.SyncScheduler.executeTaskRunnable(SyncScheduler.java:81) ~[SyncScheduler.class:1.10.2-5.2.0-BETA-387]
at org.spongepowered.common.scheduler.SchedulerBase.startTask(SchedulerBase.java:179) ~[SchedulerBase.class:1.10.2-5.2.0-BETA-387]
at org.spongepowered.common.scheduler.SchedulerBase.processTask(SchedulerBase.java:165) ~[SchedulerBase.class:1.10.2-5.2.0-BETA-387]
at java.util.concurrent.ConcurrentHashMap$ValuesView.forEach(ConcurrentHashMap.java:4707) [?:1.8.0_131]
at org.spongepowered.common.scheduler.SchedulerBase.runTick(SchedulerBase.java:108) [SchedulerBase.class:1.10.2-5.2.0-BETA-387]
at org.spongepowered.common.scheduler.SyncScheduler.tick(SyncScheduler.java:51) [SyncScheduler.class:1.10.2-5.2.0-BETA-387]
at org.spongepowered.common.scheduler.SpongeScheduler.tickSyncScheduler(SpongeScheduler.java:191) [SpongeScheduler.class:1.10.2-5.2.0-BETA-387]
at net.minecraft.server.dedicated.DedicatedServer.handler$onTick$zob000(SourceFile:1253) [ld.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(SourceFile:340) [ld.class:?]
at net.minecraft.server.MinecraftServer.func_71217_p(SourceFile:554) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.run(SourceFile:458) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Is there any possibility to avoid this kind of crash and block unsupported items?
Since the new version of sponge, there are problems with the database
The plugin is no longer functional since the new version of sponge, several plugin using a database are also affected by that like EconomyLite. Flibio/EconomyLite#90
https://pastebin.com/3BBtDku1
(There is also the EconomyLite problem, you have to go a little lower for InvSync)
[Or stack trace here (Remove this if you don't put anything here!)]
I run a sponge forge server (network under velocity) with the Foolcraft3 pack. Without a permissions mod, the invsync defaults all non-op players to having no permissions. this means players can't sync inventories between our two servers.
To get this to work for our use case I had to modify the snapshot code:
src/main/java/world/jnc/invsync/util/serializer/module/BaseSyncModule.java line 72
return isEnabled();
We removed all player based checks and this works for our specific use case.
I have not tested this with a permissions plugin... we don't currently run one.
Use plugin without permissions plugin. All non-op players don't have permission to inventory sync.
Use plugin without permissions plugin. Plugin syncs any modules set to "enabled" in the config.
I don't have this info... I think the issue is described adequately above.
I may have missed how to configure the permissions listed in the README.md either in the plugin.conf or sponge/global.conf but that information was not readily apparent in the documentation if so.
The selected slot should be synchronized.
Looking to possibly get this: https://www.curseforge.com/minecraft/mc-mods/reskillable mod added to inventory sync support as it has gotten quite popular and used commonly with Tough as Nails.
Appreciate it!
I need you help to the support the【Tough As Nails】 mod
including thirst, body temperature。
and this Extra Bit Manipulation
There is a armor fence like Bauble
https://github.com/Glitchfiend/ToughAsNails
https://github.com/Phylogeny/ExtraBitManipulation
Add a permission for each type of synchronization.
Probably something like invsync.sync.inventory
etc.
Potion effects should be synchronized.
Having issue having inventorysync connect correctly to the db at least I think that is the issue.
Unssupported items should be turned into an placeholder item. You should not be able to use the item. Also when deserializing the data should become the original data.
After a longer period of time the database connection times out. The plugin should try to reconnect.
When the connection times out no database actions happen
That the database connection gets reestablished
[17:03:55 ERROR] [invsync]: Could not save invetory for player KennyTheKing (2a095566-a563-4207-a747-846f171dd779)
java.sql.SQLException: execute() is called on closed connection
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.prolog(AbstractQueryProtocol.java:1239) ~[2017-04-11-18-38-13-spongevanilla-1.11.2-6.0.0-BETA-243.jar:1.11.2-6.0.0-BETA-243]
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.prologProxy(AbstractQueryProtocol.java:1223) ~[2017-04-11-18-38-13-spongevanilla-1.11.2-6.0.0-BETA-243.jar:1.11.2-6.0.0-BETA-243]
at org.mariadb.jdbc.MariaDbServerPreparedStatement.executeQueryProlog(MariaDbServerPreparedStatement.java:332) ~[2017-04-11-18-38-13-spongevanilla-1.11.2-6.0.0-BETA-243.jar:1.11.2-6.0.0-BETA-243]
at org.mariadb.jdbc.MariaDbServerPreparedStatement.executeInternal(MariaDbServerPreparedStatement.java:390) ~[2017-04-11-18-38-13-spongevanilla-1.11.2-6.0.0-BETA-243.jar:1.11.2-6.0.0-BETA-243]
at org.mariadb.jdbc.MariaDbServerPreparedStatement.execute(MariaDbServerPreparedStatement.java:359) ~[2017-04-11-18-38-13-spongevanilla-1.11.2-6.0.0-BETA-243.jar:1.11.2-6.0.0-BETA-243]
at org.mariadb.jdbc.MariaDbServerPreparedStatement.executeUpdate(MariaDbServerPreparedStatement.java:348) ~[2017-04-11-18-38-13-spongevanilla-1.11.2-6.0.0-BETA-243.jar:1.11.2-6.0.0-BETA-243]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[2017-04-11-18-38-13-spongevanilla-1.11.2-6.0.0-BETA-243.jar:1.11.2-6.0.0-BETA-243]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[2017-04-11-18-38-13-spongevanilla-1.11.2-6.0.0-BETA-243.jar:1.11.2-6.0.0-BETA-243]
at world.jnc.invsync.DataSource.saveInventory(DataSource.java:94) [DataSource.class:?]
at world.jnc.invsync.PlayerEvents.savePlayer(PlayerEvents.java:114) [PlayerEvents.class:?]
at world.jnc.invsync.PlayerEvents.onPlayerLeave(PlayerEvents.java:53) [PlayerEvents.class:?]
at org.spongepowered.common.event.listener.DisconnectListener_PlayerEvents_onPlayerLeave34.handle(Unknown Source) [?:?]
at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95) [RegisteredListener.class:1.11.2-6.0.0-BETA-243]
at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:305) [SpongeEventManager.class:1.11.2-6.0.0-BETA-243]
at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:319) [SpongeEventManager.class:1.11.2-6.0.0-BETA-243]
at org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:133) [SpongeImpl.class:1.11.2-6.0.0-BETA-243]
at net.minecraft.network.NetHandlerPlayServer.redirect$onDisconnectHandler$zgk000(SourceFile:2002) [mi.class:?]
at net.minecraft.network.NetHandlerPlayServer.func_147231_a(SourceFile:733) [mi.class:?]
at net.minecraft.network.NetworkManager.func_179293_l(SourceFile:382) [er.class:?]
at net.minecraft.network.NetworkSystem.func_151269_c(SourceFile:215) [mh.class:?]
at net.minecraft.server.MinecraftServer.func_71190_q(SourceFile:1603) [MinecraftServer.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(SourceFile:335) [lh.class:?]
at net.minecraft.server.MinecraftServer.func_71217_p(SourceFile:562) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.run(SourceFile:466) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
because no matter how I set up, it can't connect to MySQL.
can't use mysql ,but h2 is ok. other plugins can use mysql.
I want to use mysql or use h2 to make two server Inventory synchronize.
...
[pastebin/gist/etc link here]
[Or stack trace here (Remove this if you don't put anything here!)]
After logging out and logging back in, the contents of backpacks from the V0id's smart Backpacks mod are lost. The mod is storing the backpack contents in the ForgeCaps tag.
As this bug describes, the ForgeCaps are lost by Sponge:
#37
v0id backpack has an option to equip the backpack using a button. The equipped backpack does not show up any where in the inventory, but it can be accessed with a button. Equipped backpacks are not saved by invsync. So their contents are not lost but their contents are not transferred between servers either.
Before logging out:
$ nbtutil --path 2e15e144-51b9-4f4b-a495-74dc0765a409.dat --printtree
...
| + 6 entries
| | + Count: 1
| | + Slot: 1
| | + Damage: 0
| | + id: v0idssmartbackpacks:backpack
| | + ForgeCaps: 2 entries
| | | + astralsorcery:cap_item_amulet_holder: 2 entries
| | | | + AS_Amulet_HolderLeast: -6587230391593753591
| | | | + AS_Amulet_HolderMost: 3320807983800733515
| | | + Parent: 5 entries
| | | + color: 0
| | | + energy: 0
| | | + maxEnergy: 0
| | | + inventory: 2 entries
| | | | + Size: 18
| | | | + Items: 1 entry
| | | | + 6 entries
| | | | + Count: 1
| | | | + Damage: 12
| | | | + Slot: 0
| | | | + id: minecraft:iron_pickaxe
| | | | + ForgeCaps: 1 entry
| | | | | + astralsorcery:cap_item_amulet_holder: 0 entries
| | | | + tag: 1 entry
| | | | + pickletweaks: 1 entry
| | | | + BlocksBroken: 17
| | | + upgrades: 2 entries
| | | + Size: 5
| | | + Items: 0 entries
| | + tag: 2 entries
| | + backpack_tag: 4 entries
| | | + color: 0
| | | + energy: 0
| | | + energyMax: 0
| | | + upgrades: 2 entries
| | | + Size: 5
| | | + Items: 0 entries
| | + vsb:nbtItemHandler: 2 entries
| | + Size: 18
| | + Items: 1 entry
| | + 6 entries
| | + Count: 1
| | + Damage: 12
| | + Slot: 0
| | + id: minecraft:iron_pickaxe
| | + ForgeCaps: 1 entry
| | | + astralsorcery:cap_item_amulet_holder: 0 entries
| | + tag: 1 entry
| | + pickletweaks: 1 entry
| | + BlocksBroken: 17
...
After logging out and back in the ForgeCaps are lost:
$ nbtutil --path 2e15e144-51b9-4f4b-a495-74dc0765a409.dat --printtree
...
+ Inventory: 3 entries
| + 6 entries
| | + Count: 1
| | + Slot: 1
| | + Damage: 0
| | + id: v0idssmartbackpacks:backpack
| | + ForgeCaps: 2 entries
| | | + astralsorcery:cap_item_amulet_holder: 2 entries
| | | | + AS_Amulet_HolderLeast: -6587230391593753591
| | | | + AS_Amulet_HolderMost: 3320807983800733515
| | | + Parent: 5 entries
| | | + color: 0
| | | + energy: 0
| | | + maxEnergy: 0
| | | + inventory: 2 entries
| | | | + Size: 18
| | | | + Items: 0 entries
| | | + upgrades: 2 entries
| | | + Size: 5
| | | + Items: 0 entries
| | + tag: 2 entries
| | + backpack_tag: 4 entries
| | | + color: 0
| | | + energy: 0
| | | + energyMax: 0
| | | + upgrades: 2 entries
| | | + Size: 5
| | | + Items: 0 entries
| | + vsb:nbtItemHandler: 2 entries
| | + Size: 18
| | + Items: 1 entry
| | + 6 entries
| | + Count: 1
| | + Damage: 12
| | + Slot: 0
| | + id: minecraft:iron_pickaxe
| | + ForgeCaps: 1 entry
| | | + astralsorcery:cap_item_amulet_holder: 0 entries
| | + tag: 1 entry
| | + pickletweaks: 1 entry
| | + BlocksBroken: 17
...
Request to add AoA3 sync
Sync the skill levels of this mod
If the synchronization of this mod can be increased in the near future, I would greatly appreciate it
https://www.curseforge.com/minecraft/mc-mods/advent-of-ascension-nevermine
When a MySQL password contains the @
character it messes up the JDBC URL.
The connection cannot be established, as now the hostname gets a prefix of sorts.
That the password gets escaped properly
@
[21:47:34] [Server thread/ERROR] [com.zaxxer.hikari.pool.HikariPool]: HikariPool-2 - Exception during pool initialization.
java.sql.SQLNonTransientConnectionException: Could not connect to address=([email protected])(port=3306)(type=master) : [email protected]
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:156) ~[ExceptionMapper.class:1.12.2-2825-7.1.6]
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:118) ~[ExceptionMapper.class:1.12.2-2825-7.1.6]
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.throwException(ExceptionMapper.java:92) ~[ExceptionMapper.class:1.12.2-2825-7.1.6]
at org.mariadb.jdbc.Driver.connect(Driver.java:111) ~[Driver.class:1.12.2-2825-7.1.6]
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:112) ~[DriverDataSource.class:1.12.2-2825-7.1.6]
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:118) ~[DriverDataSource.class:1.12.2-2825-7.1.6]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358) ~[PoolBase.class:1.12.2-2825-7.1.6]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[PoolBase.class:1.12.2-2825-7.1.6]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:443) [HikariPool.class:1.12.2-2825-7.1.6]
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:514) [HikariPool.class:1.12.2-2825-7.1.6]
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:111) [HikariPool.class:1.12.2-2825-7.1.6]
at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:72) [HikariDataSource.class:1.12.2-2825-7.1.6]
at org.spongepowered.common.service.sql.SqlServiceImpl$1.load(SqlServiceImpl.java:138) [SqlServiceImpl$1.class:1.12.2-2825-7.1.6]
at org.spongepowered.common.service.sql.SqlServiceImpl$1.load(SqlServiceImpl.java:123) [SqlServiceImpl$1.class:1.12.2-2825-7.1.6]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3716) [minecraft_server.1.12.2.jar:?]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2424) [minecraft_server.1.12.2.jar:?]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2298) [minecraft_server.1.12.2.jar:?]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2211) [minecraft_server.1.12.2.jar:?]
at com.google.common.cache.LocalCache.get(LocalCache.java:4154) [minecraft_server.1.12.2.jar:?]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4158) [minecraft_server.1.12.2.jar:?]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5147) [minecraft_server.1.12.2.jar:?]
at org.spongepowered.common.service.sql.SqlServiceImpl.getDataSource(SqlServiceImpl.java:163) [SqlServiceImpl.class:1.12.2-2825-7.1.6]
at org.spongepowered.common.service.sql.SqlServiceImpl.getDataSource(SqlServiceImpl.java:144) [SqlServiceImpl.class:1.12.2-2825-7.1.6]
at world.jnc.invsync.util.database.DatabaseConnection.getDataSource(DatabaseConnection.java:28) [DatabaseConnection.class:0.6.19.298-DEV]
at world.jnc.invsync.util.database.DatabaseConnection.getDataSource(DatabaseConnection.java:46) [DatabaseConnection.class:0.6.19.298-DEV]
at world.jnc.invsync.util.database.DatabaseConnection.connect(DatabaseConnection.java:42) [DatabaseConnection.class:0.6.19.298-DEV]
at world.jnc.invsync.util.database.DatabaseConnection.<init>(DatabaseConnection.java:34) [DatabaseConnection.class:0.6.19.298-DEV]
at world.jnc.invsync.util.database.MysqlDatabaseConnection.<init>(MysqlDatabaseConnection.java:17) [MysqlDatabaseConnection.class:0.6.19.298-DEV]
at world.jnc.invsync.util.database.DataSource.<init>(DataSource.java:56) [DataSource.class:0.6.19.298-DEV]
at world.jnc.invsync.InventorySync.init(InventorySync.java:135) [InventorySync.class:0.6.19.298-DEV]
at org.spongepowered.common.event.listener.GameInitializationEventListener_InventorySync_init82.handle(Unknown Source) [?:?]
at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95) [RegisteredListener.class:1.12.2-2825-7.1.6]
at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:385) [SpongeModEventManager.class:1.12.2-2825-7.1.6]
at org.spongepowered.mod.event.SpongeModEventManager.extendedPost(SpongeModEventManager.java:458) [SpongeModEventManager.class:1.12.2-2825-7.1.6]
at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:419) [SpongeModEventManager.class:1.12.2-2825-7.1.6]
at org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:252) [SpongeImpl.class:1.12.2-2825-7.1.6]
at org.spongepowered.mod.SpongeMod.onStateEvent(SpongeMod.java:339) [SpongeMod.class:1.12.2-2825-7.1.6]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_211]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_211]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_211]
at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) [minecraft_server.1.12.2.jar:?]
at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) [minecraft_server.1.12.2.jar:?]
at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) [minecraft_server.1.12.2.jar:?]
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) [minecraft_server.1.12.2.jar:?]
at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) [minecraft_server.1.12.2.jar:?]
at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) [minecraft_server.1.12.2.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:217) [minecraft_server.1.12.2.jar:?]
at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:219) [LoadController.class:?]
at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:197) [LoadController.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_211]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_211]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_211]
at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) [minecraft_server.1.12.2.jar:?]
at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) [minecraft_server.1.12.2.jar:?]
at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) [minecraft_server.1.12.2.jar:?]
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) [minecraft_server.1.12.2.jar:?]
at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) [minecraft_server.1.12.2.jar:?]
at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) [minecraft_server.1.12.2.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:217) [minecraft_server.1.12.2.jar:?]
at net.minecraftforge.fml.common.LoadController.redirect$onPost$zza000(LoadController.java:553) [LoadController.class:?]
at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:136) [LoadController.class:?]
at net.minecraftforge.fml.common.Loader.initializeMods(Loader.java:744) [Loader.class:?]
at net.minecraftforge.fml.server.FMLServerHandler.finishServerLoading(FMLServerHandler.java:108) [FMLServerHandler.class:?]
at net.minecraftforge.fml.common.FMLCommonHandler.onServerStarted(FMLCommonHandler.java:338) [FMLCommonHandler.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:219) [nz.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:486) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_211]
Caused by: java.sql.SQLException: Could not connect to address=([email protected])(port=3306)(type=master) : [email protected]
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1036) ~[AbstractConnectProtocol.class:1.12.2-2825-7.1.6]
at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:483) ~[Utils.class:1.12.2-2825-7.1.6]
at org.mariadb.jdbc.Driver.connect(Driver.java:106) ~[Driver.class:1.12.2-2825-7.1.6]
... 65 more
Caused by: java.net.UnknownHostException: [email protected]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[?:1.8.0_211]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_211]
at java.net.Socket.connect(Socket.java:589) ~[?:1.8.0_211]
at java.net.Socket.connect(Socket.java:538) ~[?:1.8.0_211]
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:401) ~[AbstractConnectProtocol.class:1.12.2-2825-7.1.6]
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1029) ~[AbstractConnectProtocol.class:1.12.2-2825-7.1.6]
at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:483) ~[Utils.class:1.12.2-2825-7.1.6]
at org.mariadb.jdbc.Driver.connect(Driver.java:106) ~[Driver.class:1.12.2-2825-7.1.6]
... 65 more
When achievments are synchronized they get announced as if the player just got them.
When the server synchronizes the achievements, new ones get announced.
No announcements
On logoff, InvSync is not persisting the contents of the botania flower bag, when the bag is directly in the player's inventory. The player.dat file has the bag contents. When the player logs back in, their inventory is loaded from the InvSync database, and the bag contents are lost.
The flower bag contents are not lost if it is inside of a backpack.
> /sponge plugins
[02:36:10] [Server thread/INFO] [minecraft/DedicatedServer]: Plugins (9): Minecraft, Minecraft Coder Pack, SpongeAPI, Sponge, Inventory Sync, JdaLibraryLoader, LuckPerms, UltimateChat, spark
In this log, you can see the player logs off, then a server backup is started.
I copied the hex data from the mysql database:
$ mysql --binary-as-hex -uminecraft -p
MariaDB [dd_ss_invsync]> use dd_ss_invsync;
MariaDB [dd_ss_invsync]> SELECT * FROM invsync_inventories where UUID=0x8189ca6f92524683ac29556125d44470\G
I converted the hex string into a binary file:
$ xxd -r -p 2019-03-16-00\:04\:42.txt > 2019-03-16-00\:04\:42.dat
I dumped the nbt data from inside it, and it shows the flower bag is empty:
$ cat ~/.local/bin/nbtutil
#!/bin/bash
TERM=xterm mono $HOME/nbtexplorer/NBTUtil.exe "$@"
$ nbtutil --path 2019-03-16-00:04:42.dat --printtree
...
| + 2 entries
| | + slot: 4
| | + stack: 4 entries
| | + ContentVersion: 1
| | + Count: 1
| | + UnsafeDamage: 0
| | + ItemType: botania:flowerbag
| + 2 entries
However the player.dat file I restored from the backup shows the bag is non-empty:
$ nbtutil --path 8189ca6f-9252-4683-ac29-556125d44470.dat --printtree
| + 5 entries
| | + Count: 1
| | + Slot: 4
| | + Damage: 0
| | + id: botania:flowerbag
| | + ForgeCaps: 2 entries
| | + Parent: 16 entries
| | | + 4 entries
| | | | + Count: 4
| | | | + Damage: 0
| | | | + Slot: 0
| | | | + id: botania:flower
| | | + 4 entries
| | | | + Count: 12
| | | | + Damage: 1
| | | | + Slot: 1
| | | | + id: botania:flower
...
Later the player was able to reproduce the problem with just the flower bag in their inventory.
Player's inventory don't sync when I restart my server.
Maybe the inventory not be Accurate save in mysql
I have a clock.
add two sword .
restart server.
reentry server found two sword not be sync
...
| State | ID | Version | Source | Signature |
|:--------- |:--------------------------------- |:--------------------------- |:-------------------------------------------------- |:---------------------------------------- |
| UCHIJAAAA | minecraft | 1.12.2 | minecraft.jar | None |
| UCHIJAAAA | mcp | 9.42 | minecraft.jar | None |
| UCHIJAAAA | FML | 8.0.99.99 | forge-1.12.2-14.23.4.2705-universal.jar | e3c3d50c7c986df74c645c0ac54639741c90a557 |
| UCHIJAAAA | forge | 14.23.4.2705 | forge-1.12.2-14.23.4.2705-universal.jar | e3c3d50c7c986df74c645c0ac54639741c90a557 |
| UCHIJAAAA | jecharacters | 1.12.0-2.3.2 | JustEnoughCharacters-1.12.0-2.3.2.jar | None |
| UCHIJAAAA | spongeapi | 7.1.0-ff990df | [核心]spongeforge-1.12.2-2705-7.1.0-BETA-3472.jar | None |
| UCHIJAAAA | sponge | 1.12.2-2705-7.1.0-BETA-3472 | [核心]spongeforge-1.12.2-2705-7.1.0-BETA-3472.jar | 6729a677746f8cf63ef31881f913ed15d431b7f0 |
| UCHIJAAAA | openmodscore | 0.11.5 | minecraft.jar | None |
| UCHIJAAAA | foamfixcore | 7.7.4 | minecraft.jar | None |
| UCHIJAAAA | catclearlag | 0.8.3 | [插件]CatClearLag-0.8.3.jar | None |
| UCHIJAAAA | placeholderapi | 4.4 | [插件]PlaceholderAPI-4.4.jar | None |
| UCHIJAAAA | command-utils | 2.2.4 | [插件]command-utils-2.2.4.jar | None |
| UCHIJAAAA | commandsync | 2.5 | [插件]CommandSync.jar | None |
| UCHIJAAAA | pjc | 0.2.2 | [插件]projectcore-7.1.0-0.2.2.jar | None |
| UCHIJAAAA | easykits | 0.2.0 | [插件]easykits-7.1.0-0.2.0.jar | None |
| UCHIJAAAA | economylite | 2.15.0 | [插件]EconomyLite-7.1.0-2.15.0.jar | None |
| UCHIJAAAA | nucleus | 1.6.0-S7.1 | [插件]Nucleus-1.6.0-S7.1-MC1.12.2-plugin.jar | None |
| UCHIJAAAA | nucleus-gluon | 1.0.4 | [插件]Gluon-1.0.4.jar | None |
| UCHIJAAAA | holograms | 3.1.5 | [插件]holograms-3.1.5.jar | None |
| UCHIJAAAA | hunger-keeper | 1.0.0 | [插件]HungerKeeper-1.0.0.jar | None |
| UCHIJAAAA | invsync | 0.6.17 | [插件]InvSync-0.6.17.jar | None |
| UCHIJAAAA | itemchat | 1.4.0 | [插件]ItemChat-1.4.0.jar | None |
| UCHIJAAAA | joincommand | 1.1 | [插件]JoinCommand-1.0-SNAPSHOT.jar | None |
| UCHIJAAAA | kt-skript | 1.1.3 | [插件]kt-skript-1.1.3.jar | None |
| UCHIJAAAA | langswitch | 1.2 | [插件]LangSwitch-1.2.jar | None |
| UCHIJAAAA | linkme | 1.4.0 | [插件]LinkMe-1.4.0.jar | None |
| UCHIJAAAA | luckperms | 4.2.40 | [插件]LuckPerms-Sponge-4.2.40.jar | None |
| UCHIJAAAA | mmcrestrict | 1.5.1 | [插件]MMCRestrict-1.5.1-API-7.jar | None |
| UCHIJAAAA | multichat | 1.5 | [插件]multichat-1.5.jar | None |
| UCHIJAAAA | noportal | 0.1.1 | [插件]NoPortal-0.1.2.jar | None |
| UCHIJAAAA | npcs | 3.0.0 | [插件]NPCs-3.0.0-1.12.2.jar | None |
| UCHIJAAAA | pixelautomessages | 1.0.3 | [插件]PixelAutoMessages-1.0.3-b15.jar | None |
| UCHIJAAAA | pjb | 0.2.0 | [插件]projectborders-7.1.0-0.2.0.jar | None |
| UCHIJAAAA | inspector | 0.6.5 | [插件]Re-Inspector-0.1.jar | None |
| UCHIJAAAA | serverteleport | 0.1.0-SNAPSHOT | [插件]ServerTeleport-0.1.0-SNAPSHOT.jar | None |
| UCHIJAAAA | stopspread | 0.1.1 | [插件]StopSpread-0.1.1.jar | None |
| UCHIJAAAA | vshop | 1.9 | [插件]VillagerShops-1.9.jar | None |
| UCHIJAAAA | virtualchest | 1.0.0-rc-1 | [插件]VirtualChest-1.0.0-rc-1.jar | None |
| UCHIJAAAA | actuallyadditions | 1.12.2-r140 | ActuallyAdditions-1.12.2-r140.jar | None |
| UCHIJAAAA | appliedenergistics2 | rv5-stable-11 | appliedenergistics2-rv5-stable-11.jar | None |
| UCHIJAAAA | bdlib | 1.14.3.12 | bdlib-1.14.3.12-mc1.12.2.jar | None |
| UCHIJAAAA | ae2stuff | 0.7.0.4 | ae2stuff-0.7.0.4-mc1.12.2.jar | None |
| UCHIJAAAA | applecore | 3.1.3 | AppleCore-mc1.12.2-3.1.3.jar | None |
| UCHIJAAAA | crafttweaker | 4.1.9 | CraftTweaker2-1.12-4.1.9.jar | None |
| UCHIJAAAA | mtlib | 3.0.5 | MTLib-3.0.5.jar | None |
| UCHIJAAAA | modtweaker | 4.0.12 | modtweaker-4.0.12.jar | None |
| UCHIJAAAA | jei | 4.11.0.204 | jei_1.12.2-4.11.0.204.jar | None |
| UCHIJAAAA | appleskin | 1.0.9 | AppleSkin-mc1.12-1.0.9.jar | None |
| UCHIJAAAA | betterbuilderswands | 0.12.0 | BetterBuildersWands-1.12-0.12.0.251.jar | None |
| UCHIJAAAA | betterquesting | 3.5.266 | BetterQuesting-3.5.266.jar | None |
| UCHIJAAAA | codechickenlib | 3.2.0.345 | CodeChickenLib-1.12.2-3.2.0.345-universal.jar | f1850c39b2516232a2108a7bd84d1cb5df93b261 |
| UCHIJAAAA | redstoneflux | 2.0.2 | RedstoneFlux-1.12-2.0.2.3-universal.jar | 8a6abf2cb9e141b866580d369ba6548732eff25f |
| UCHIJAAAA | brandonscore | 2.4.3 | BrandonsCore-1.12.2-2.4.3.168-universal.jar | None |
| UCHIJAAAA | chameleon | 1.12-4.1.3 | Chameleon-1.12-4.1.3.jar | None |
| UCHIJAAAA | chisel | MC1.12.2-0.2.1.35 | Chisel-MC1.12.2-0.2.1.35.jar | None |
| UCHIJAAAA | cofhcore | 4.5.2 | CoFHCore-1.12.2-4.5.2.19-universal.jar | None |
| UCHIJAAAA | cofhworld | 1.2.0 | CoFHWorld-1.12.2-1.2.0.5-universal.jar | 8a6abf2cb9e141b866580d369ba6548732eff25f |
| UCHIJAAAA | mantle | 1.12-1.3.2.24 | Mantle-1.12-1.3.2.24.jar | None |
| UCHIJAAAA | endercore | 1.12.2-0.5.35 | EnderCore-1.12.2-0.5.35.jar | None |
| UCHIJAAAA | thermalfoundation | 2.5.0 | ThermalFoundation-1.12.2-2.5.0.19-universal.jar | 8a6abf2cb9e141b866580d369ba6548732eff25f |
| UCHIJAAAA | draconicevolution | 2.3.12 | Draconic-Evolution-1.12.2-2.3.12.297-universal.jar | None |
| UCHIJAAAA | thermalexpansion | 5.5.0 | ThermalExpansion-1.12.2-5.5.0.29-universal.jar | 8a6abf2cb9e141b866580d369ba6548732eff25f |
| UCHIJAAAA | enderio | 5.0.29 | EnderIO-1.12.2-5.0.29.jar | None |
| UCHIJAAAA | enderiointegrationtic | 5.0.29 | EnderIO-1.12.2-5.0.29.jar | None |
| UCHIJAAAA | twilightforest | 3.8.654 | twilightforest-1.12.2-3.8.654-universal.jar | None |
| UCHIJAAAA | tconstruct | 1.12.2-2.10.1.87 | TConstruct-1.12.2-2.10.1.87.jar | None |
| UCHIJAAAA | conarm | 1.0.1.2 | conarm-1.12.2-1.0.1.2.jar | 5d5b8aee896a4f5ea3f3114784742662a67ad32f |
| UCHIJAAAA | containerfix | 1.0 | ContainerFix+MC1.12.2+v1.0.jar | None |
| UCHIJAAAA | crafttweakerjei | 2.0.2 | CraftTweaker2-1.12-4.1.9.jar | None |
| UCHIJAAAA | cucumber | 1.1.0 | cucumber-1.12-1.1.0.jar | None |
| UCHIJAAAA | eiorteis | 1.12.2-3.0 | eiorteis-3.0.jar | None |
| UCHIJAAAA | enderiobase | 5.0.29 | EnderIO-1.12.2-5.0.29.jar | None |
| UCHIJAAAA | enderioconduits | 5.0.29 | EnderIO-1.12.2-5.0.29.jar | None |
| UCHIJAAAA | enderioconduitsappliedenergistics | 5.0.29 | EnderIO-1.12.2-5.0.29.jar | None |
| UCHIJAAAA | enderioconduitsopencomputers | 5.0.29 | EnderIO-1.12.2-5.0.29.jar | None |
| UCHIJAAAA | enderioconduitsrefinedstorage | 5.0.29 | EnderIO-1.12.2-5.0.29.jar | None |
| UCHIJAAAA | enderiointegrationforestry | 5.0.29 | EnderIO-1.12.2-5.0.29.jar | None |
| UCHIJAAAA | enderiointegrationticlate | 5.0.29 | EnderIO-1.12.2-5.0.29.jar | None |
| UCHIJAAAA | ftblib | 5.2.0.30 | FTBLib-5.2.0.30.jar | None |
| UCHIJAAAA | enderiomachines | 5.0.29 | EnderIO-1.12.2-5.0.29.jar | None |
| UCHIJAAAA | enderiopowertools | 5.0.29 | EnderIO-1.12.2-5.0.29.jar | None |
| UCHIJAAAA | enderstorage | 2.4.4.132 | EnderStorage-1.12.2-2.4.4.132-universal.jar | f1850c39b2516232a2108a7bd84d1cb5df93b261 |
| UCHIJAAAA | exnihilocreatio | 1.12-0.2.4 | exnihilocreatio-1.12-0.2.4.jar | None |
| UCHIJAAAA | excompressum | 3.0.22 | ExCompressum_1.12.2-3.0.22.jar | None |
| UCHIJAAAA | extracells | 2.5.13 | ExtraCells-1.12.2-2.5.13a60.jar | None |
| UCHIJAAAA | extrautils2 | 1.0 | extrautils2-1.12-1.8.5.jar | None |
| UCHIJAAAA | zerocore | 1.12-0.1.2.2 | zerocore-1.12-0.1.2.2.jar | None |
| UCHIJAAAA | bigreactors | 1.12.2-0.4.5.49 | ExtremeReactors-1.12.2-0.4.5.49.jar | None |
| UCHIJAAAA | fastleafdecay | v14 | FastLeafDecay-v14.jar | None |
| UCHIJAAAA | foamfix | 0.9.9.1-1.12.2 | foamfix-0.9.9.1-1.12.2-anarchy.jar | None |
| UCHIJAAAA | ftbutilities | 5.2.0.32 | FTBUtilities-5.2.0.32.jar | None |
| UCHIJAAAA | grimoireofgaia | 1.6.3 | GrimoireOfGaia3-1.12.2-1.6.3.jar | None |
| UCHIJAAAA | infernalmobs | 1.7.5 | InfernalMobs-1.12.2.jar | None |
| UCHIJAAAA | inventorytweaks | 1.63+release.109.220f184 | InventoryTweaks-1.63.jar | 55d2cd4f5f0961410bf7b91ef6c6bf00a766dcbe |
| UCHIJAAAA | jaopca | 1.12.2-2.2.8.91 | JAOPCA-1.12.2-2.2.8.91.jar | None |
| UCHIJAAAA | oredictinit | 1.12.2-2.2.1.68 | JAOPCA-1.12.2-2.2.8.91.jar | None |
| UCHIJAAAA | longerdays | 1.0.4 | longerdays-1.0.4.jar | None |
| UCHIJAAAA | lostcities | 2.0.11 | lostcities-1.12-2.0.11.jar | None |
| UCHIJAAAA | mekanism | 1.12.2-9.4.13.349 | Mekanism-1.12.2-9.4.13.349.jar | None |
| UCHIJAAAA | mysticalagriculture | 1.6.12 | mysticalagriculture-1.12-1.6.12.jar | None |
| UCHIJAAAA | mysticalagradditions | 1.2.8 | mysticalagradditions-1.12-1.2.8.jar | None |
| UCHIJAAAA | nonetherportals | 1.0.0 | nonetherPortals_v1.0.0formc1.12.2.jar | None |
| UCHIJAAAA | openmods | 0.11.5 | OpenModsLib-1.12.2-0.11.5.jar | d2a9a8e8440196e26a268d1f3ddc01b2e9c572a5 |
| UCHIJAAAA | openblocks | 1.7.6 | OpenBlocks-1.12.2-1.7.6.jar | d2a9a8e8440196e26a268d1f3ddc01b2e9c572a5 |
| UCHIJAAAA | p455w0rdslib | 2.0.29 | p455w0rdslib-1.12-2.0.29.jar | None |
| UCHIJAAAA | plustic | 6.5.2.0 | plustic-6.5.2.0.jar | None |
| UCHIJAAAA | questbook | 3.1.1-1.12 | questbook-3.1.1-1.12.jar | None |
| UCHIJAAAA | roughmobs | 2.0.0 | roughmobs2-1.12.2_2.0.9.jar | None |
| UCHIJAAAA | bq_standard | 3.4.143 | StandardExpansion-3.4.143.jar | None |
| UCHIJAAAA | storagedrawers | 1.12-5.3.5 | StorageDrawers-1.12.2-5.3.7.jar | None |
| UCHIJAAAA | thermalcultivation | 0.3.0 | ThermalCultivation-1.12.2-0.3.0.7-universal.jar | 8a6abf2cb9e141b866580d369ba6548732eff25f |
| UCHIJAAAA | thermaldynamics | 2.5.1 | ThermalDynamics-1.12.2-2.5.1.14-universal.jar | 8a6abf2cb9e141b866580d369ba6548732eff25f |
| UCHIJAAAA | thermalinnovation | 0.3.0 | ThermalInnovation-1.12.2-0.3.0.7-universal.jar | 8a6abf2cb9e141b866580d369ba6548732eff25f |
| UCHIJAAAA | tinkersjei | 1.0 | tinkersjei-1.0.jar | None |
| UCHIJAAAA | tinkertoolleveling | 1.12.2-1.0.5.DEV.30c7957 | TinkerToolLeveling-1.12.2-1.0.5.jar | None |
| UCHIJAAAA | treegrowingsimulator | 0.0.4 | TreeGrowingSimulator2017-1.0.1.jar | None |
| UCHIJAAAA | wct | 3.9.67 | WirelessCraftingTerminal-1.12.2-3.9.67.jar | None |
| UCHIJAAAA | wrapup | 1.12-1.1.3 | WrapUp-1.12-1.1.3.jar | None |
Hi, I was wondering if you could implement support for PostgreSQL or perhaps if you would accept a pull request and let me do it.
version: InvSync-0.6.18.204-dev
forge: forge-1.12.2-14.23.4.2705-universal
sponge: spongeforge-1.12.2-2705-7.1.0-BETA-3458
minecraft: 1.12.2
Describe:
Server can't start
net.minecraftforge.fml.common.LoaderExceptionModCrash: Caught exception from Inventory Sync (invsync)
Caused by: java.lang.NoClassDefFoundError: org/bstats/sponge/Metrics$CustomChart
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.spongepowered.mod.plugin.SpongeModPluginContainer.constructMod(SpongeModPluginContainer.java:280)
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 com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)
at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)
at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)
at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)
at com.google.common.eventbus.EventBus.post(EventBus.java:217)
at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:218)
at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:196)
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 com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)
at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)
at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)
at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)
at com.google.common.eventbus.EventBus.post(EventBus.java:217)
at net.minecraftforge.fml.common.LoadController.redirect$onPost$zza000(LoadController.java:560)
at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:135)
at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:593)
at net.minecraftforge.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:97)
at net.minecraftforge.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:332)
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:125)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:486)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.bstats.sponge.Metrics$CustomChart
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 35 more
Caused by: java.lang.NullPointerException
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182)
... 37 more
Hi,
First thank you for your work, it's greatly appreciated. This plugin makes everything possible on our server :)
I was wondering if it would be possible to add thaumcraft support by storing it's Playerdata in the database to support cross server play? I imagine this isn't easy but thought I'd ask. The items themselves work across servers but the player data does not.
Many thanks for your work :)
When multiple servers try to access the same H2 database only one will succeed and get the lock
Only one server can access the database
That multiple servers can access the same database
When transferring between my servers, the items inside of a Backpack from the Backpack mod do not transfer.
The items do not appear, but show up when i go back to the server that i placed the items in it
The items inside would transfer
Synchronizing of everything is working fine, except of the experience. It always get set to 0 in the database.
When storing the playerdata the experience gets set to 0.
That the experience gets stored correctly
When the plugin gets reloaded while players are online they enter a "corrupted" state, that when they disconnect their inventories don't sync.
Player's inventories don't save when they were online when the plugin was reloaded.
That reloading the plugin won't break the synchronization.
/sponge plugins reload
[23:17:12] [Server thread/WARN] [invsync]: Serializing data of Guniek (088e2178-d984-4279-a3dd-5d2031e29dc1) has been cancelled, due to them not having joined fully.
Just as the title says, i'd like to see a feature of allowing server owners to set a time on which the plugin will auto-save the inventories to the database.
The newly added feature of potion synchronzing is not working because of another sponge bug.
The potion effects get stored in the database but not put on the player.
That the potion effects get put on the player correctly.
The latest version of sponge will prompts you not to keep connected
Special characters like :
in the password do not work.
The MySQL login fails.
The MySQL login to succeed.
;
The solcarrot syncing doesn't work any more, because the com.cazsius.solcarrot.handler.HandlerCapability class was renamed to com.cazsius.solcarrot.handler.CapabilityHandler, but InvSync is still using the old name.
[06:49:40] [Server thread/ERROR] [Sponge]: The Scheduler tried to run the task invsync-S-1 owned by Plugin{id=invsync, name=Inventory Sync, version=0.6.19.280-DEV, description=This plugin synchronizes the player inventory with a database, url=https://github.com/AuraDevelopmentTeam/InvSync, authors=[The_BrainStone], source=/home/minecraft/dd_ss/nodetest/server/./mods/plugins/InvSync-0.6.19.280-DEV.jar}, but an error occured.
java.lang.NoClassDefFoundError: com/cazsius/solcarrot/handler/HandlerCapability
at world.jnc.invsync.util.serializer.module.mod.SolCarrotSyncModule$Helper.deserialize(SolCarrotSyncModule.java:93) ~[SolCarrotSyncModule$Helper.class:0.6.19.280-DEV]
at world.jnc.invsync.util.serializer.module.mod.SolCarrotSyncModule$Helper.access$100(SolCarrotSyncModule.java:38) ~[SolCarrotSyncModule$Helper.class:0.6.19.280-DEV]
at world.jnc.invsync.util.serializer.module.mod.SolCarrotSyncModule.deserialize(SolCarrotSyncModule.java:34) ~[SolCarrotSyncModule.class:0.6.19.280-DEV]
at world.jnc.invsync.util.serializer.module.BaseSyncModule.deserialize(BaseSyncModule.java:86) ~[BaseSyncModule.class:0.6.19.280-DEV]
at world.jnc.invsync.util.serializer.PlayerSerializer.deserializePlayer(PlayerSerializer.java:159) ~[PlayerSerializer.class:0.6.19.280-DEV]
at world.jnc.invsync.event.PlayerEvents.loadPlayer(PlayerEvents.java:168) ~[PlayerEvents.class:0.6.19.280-DEV]
at world.jnc.invsync.event.PlayerEvents.access$200(PlayerEvents.java:34) ~[PlayerEvents.class:0.6.19.280-DEV]
at world.jnc.invsync.event.PlayerEvents$WaitingForPreviousServerToFinish.accept(PlayerEvents.java:210) ~[PlayerEvents$WaitingForPreviousServerToFinish.class:0.6.19.280-DEV]
at world.jnc.invsync.event.PlayerEvents$WaitingForPreviousServerToFinish.accept(PlayerEvents.java:180) ~[PlayerEvents$WaitingForPreviousServerToFinish.class:0.6.19.280-DEV]
at org.spongepowered.common.scheduler.SchedulerBase.lambda$startTask$0(SchedulerBase.java:192) ~[SchedulerBase.class:1.12.2-2768-7.1.6-RC3596]
at org.spongepowered.common.scheduler.SyncScheduler.executeTaskRunnable(SyncScheduler.java:74) ~[SyncScheduler.class:1.12.2-2768-7.1.6-RC3596]
at org.spongepowered.common.scheduler.SchedulerBase.startTask(SchedulerBase.java:183) ~[SchedulerBase.class:1.12.2-2768-7.1.6-RC3596]
at org.spongepowered.common.scheduler.SchedulerBase.processTask(SchedulerBase.java:169) ~[SchedulerBase.class:1.12.2-2768-7.1.6-RC3596]
at java.util.concurrent.ConcurrentHashMap$ValuesView.forEach(ConcurrentHashMap.java:4707) [?:1.8.0_201]
at org.spongepowered.common.scheduler.SchedulerBase.runTick(SchedulerBase.java:112) [SchedulerBase.class:1.12.2-2768-7.1.6-RC3596]
at org.spongepowered.common.scheduler.SyncScheduler.tick(SyncScheduler.java:47) [SyncScheduler.class:1.12.2-2768-7.1.6-RC3596]
at org.spongepowered.common.scheduler.SpongeScheduler.tickSyncScheduler(SpongeScheduler.java:189) [SpongeScheduler.class:1.12.2-2768-7.1.6-RC3596]
at org.spongepowered.mod.SpongeMod.onTick(SpongeMod.java:404) [SpongeMod.class:1.12.2-2768-7.1.6-RC3596]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_696_SpongeMod_onTick_ServerTickEvent.invoke(.dynamic) [?:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) [ASMEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:746) [EventBus.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:696) [EventBus.class:?]
at net.minecraftforge.fml.common.FMLCommonHandler.onPreServerTick(FMLCommonHandler.java:279) [FMLCommonHandler.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:657) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
Caused by: java.lang.ClassNotFoundException: com.cazsius.solcarrot.handler.HandlerCapability
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_201]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_201]
... 26 more
Caused by: java.lang.NullPointerException
The simplest way to fix this is to have InvSync use CapabilityHandler and only work with recent versions of the solcarrot mod.
The alternative that I'm not in favor of is to clone the serializer so that one version works with the latest solcarrot and the other works with the old solcarrot.
Like for example when inventory synchronizing is disabled the plugin should keep the old data instead of just writing nothing.
can u support Baubles mod?
save Baubles slots item to database~
That would be useful
Baubles mod
slots image
I have 2 seperate servers, Plugin loads fine with no errors, but when going between the servers they are not syncing. And i have 2 seperate inventories. I have setup the Databases and table correctly. And was working until i did a restart.
No Errors
When switching servers over bungeecord, the new server loads the inventory from the database before the old one has saved it to the database
The inventory that is stored in the database before the switch gets loaded then the inventory from the old server gets stored.
That the inventory gets stored in the database before it gets loaded again.
if server was crash and shut down
player inventory data cant save to database
some player's inventory data will back to long time ago
u should add save player inventory task
Such as when the world is saving(SaveWorldEvent),to save online player inventory data
As said in the topic header, I would like to see a setup kinda like luck perms where you can export inventories to a file and then import them later on as a way to backup player inventories easily.
Basically, after installing the plugin, without doing anything to it in the config, and logging into the server, it just constantly throws the same error, over and over very rapidly.
Nothing else, really. After putting the mod into the server and logging in, i noticed the TPS was down to about 3 or so, and i checked the console and it was just this error.
First was trying to use with Pixelmon, but also tested in a server with just Sponge and InvSync.
Produces error with default settings and after changing database file path.
An update checker would be very useful.
When the synchronization fails for any reason the console is spammed like crazy.
Console spam when an exception occurs during synchronization
The error appearing only once.
Hello,
It is possible to use your plugin with minecraft 1.11.2 ?
Thanks for reply :)
my password has !@- chars..
jdbc got wrong password
same bug with user
acceess denied for xxx@ip .
I added another minecraft instance running the same modpack. Players complained that when the logged into the new instance, the enchantments changed on their armor.
They gave a specific example of obsidian boots that originally had a multijump IV enchantment, but it synced as beheading IV on the new server.
I was able to reproduce it. This is the json for the boots:
{"stack":{"ContentVersion":1,"ItemType":"mekanismtools:obsidianboots","UnsafeDamage":0,"Count":1,"UnsafeData":{"ench":[{"lvl":4,"id":105}],"RepairCost":1,"ForgeCaps":{"astralsorcery:cap_item_amulet_holder":{"AS_Amulet_HolderLeast":-6587230391593753591,"AS_Amulet_HolderMost":3320807983800733515}}}}
I discovered that the enchantment ids are mapped to enchantments in the level.dat file, under FML/Registries/minecraft:enchantments/ids. Enchantment id 105 was mapped to different things on the two servers. The original server has been through many modpack upgrades, and I suspect that's why it had a different enchantment id mapping.
I worked around this by copying the enchantment id mapping from level.dat on the source server to the target server. This will fix it for player inventory, but now the enchantments will be wrong on loot they get from dungeons (because I already pregenned the world).
Ideally invsync would serialize the enchantment ids as enchantment names.
Support the mod Backpacks: https://www.curseforge.com/minecraft/mc-mods/forge-backpacks
InvSync is inserting a 0 NBt tag causing items to be considered separate. For example, minecraft:goldingot is becoming minecraft:goldingot with NBT tags 0 on logout. This results in two items essentially.
Results in two items, one with no NBT data and one with 0 NBT tags
Both items to have null NBT data and combine into stacks
Most relevent log:
[21:03:39] [Server thread/INFO] [invsync]: {"potion_effects":{"data":[]},"mod.baubles":{"data":[]},"game_mode":{"data":"minecraft:survival"},"health":{"data":20.0},"ender_chest":{"data":[]},"inventory":{"selectedSlot":0,"inventory":[{"slot":0,"stack":{"ContentVersion":1,"ItemType":"minecraft:diamond_pickaxe","Count":1,"UnsafeDamage":2,"UnsafeData":{}}},{"slot":1,"stack":{"ContentVersion":1,"ItemType":"minecraft:cobblestone","Count":64,"UnsafeDamage":0,"UnsafeData":{}}}]},"experience":{"experience_since_level":20,"experience_level":11},"version":1,"hunger":{"saturation":1.0,"food_level":20}}
[21:03:39] [Server thread/DEBUG] [invsync]: Preparing statement: REPLACE INTO invsync_inventories
(UUID, Active, Data) VALUES (?, FALSE, ?)
[21:03:39] [Server thread/DEBUG] [invsync]: Saving inventory for player Iron_Phildo69 (64f2ebea-4b08-4cbb-b288-7a772381ed27)
[21:03:39] [Server thread/INFO] [net.minecraft.server.dedicated.DedicatedServer]: Iron_Phildo69 left the game
Achievements should be synchronized.
When enabled the synchronizing of the gamemode is not working at all.
All other data except the gamemode get synchronized correctly!
That the gamemode switches
Some times InvSync can't connect to sql server and lose inventory. Manual connection is worked fine.
wait_timeout = 30
in my.cnfhttps://pastebin.com/raw/tNBAFB0s
[11:34:40] [Server thread/ERROR] [invsync]: Reconnecting failed!
java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:548) ~[HikariPool.class:1.10.2-2281-5.2.0-BETA-2558]
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:186) ~[HikariPool.class:1.10.2-2281-5.2.0-BETA-2558]
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:145) ~[HikariPool.class:1.10.2-2281-5.2.0-BETA-2558]
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:83) ~[HikariDataSource.class:1.10.2-2281-5.2.0-BETA-2558]
at world.jnc.invsync.util.database.DatabaseConnection.reconnect(DatabaseConnection.java:49) ~[DatabaseConnection.class:0.6.17]
at world.jnc.invsync.util.database.DatabaseConnection.verifyConnection(DatabaseConnection.java:65) [DatabaseConnection.class:0.6.17]
at world.jnc.invsync.util.database.DataSource.saveInventory(DataSource.java:77) [DataSource.class:0.6.17]
at world.jnc.invsync.event.PlayerEvents.savePlayer(PlayerEvents.java:163) [PlayerEvents.class:0.6.17]
at world.jnc.invsync.event.PlayerEvents.onPlayerLeave(PlayerEvents.java:59) [PlayerEvents.class:0.6.17]
at org.spongepowered.common.event.listener.DisconnectListener_PlayerEvents_onPlayerLeave51.handle(Unknown Source) [?:?]
at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95) [RegisteredListener.class:1.10.2-2281-5.2.0-BETA-2558]
at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:313) [SpongeModEventManager.class:1.10.2-2281-5.2.0-BETA-2558]
at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:297) [SpongeModEventManager.class:1.10.2-2281-5.2.0-BETA-2558]
at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:338) [SpongeModEventManager.class:1.10.2-2281-5.2.0-BETA-2558]
at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:326) [SpongeModEventManager.class:1.10.2-2281-5.2.0-BETA-2558]
at org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:143) [SpongeImpl.class:1.10.2-2281-5.2.0-BETA-2558]
at net.minecraft.network.NetHandlerPlayServer.redirect$onDisconnectHandler$zhf000(NetHandlerPlayServer.java:2284) [me.class:?]
at net.minecraft.network.NetHandlerPlayServer.func_147231_a(NetHandlerPlayServer.java:802) [me.class:?]
at net.minecraft.network.NetworkManager.func_179293_l(NetworkManager.java:455) [eo.class:?]
at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:213) [md.class:?]
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:732) [MinecraftServer.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:387) [ld.class:?]
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:613) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:471) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
[11:34:40] [Server thread/WARN] [com.zaxxer.hikari.pool.ProxyConnection]: HikariPool-1 - Connection org.mariadb.jdbc.MariaDbConnection@1bbd1537 marked as broken because of SQLSTATE(08), ErrorCode(-1)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.