Minebench / SyncInv

Paper cross server player data syncing using redis and OpenInv | Provided without support nor warranty! (See point 15. in GPLv3 license) So do not use this if you can't support it yourself/don't have a support arrangement with me!
https://ci.minebench.de/job/SyncInv/
GNU General Public License v3.0
18 stars 2 forks source link

Don't send data to other servers if syncing option is disabled #7

Open 7wOv6ySCjo opened 3 years ago

7wOv6ySCjo commented 3 years ago

Hi. I have a mini-game server where I don't want the inventory to be shared with the survival server, for security reasons.

By setting sync.inventory: false, sync.enderchest: false and sync.gamemode: false the inventories are still shared. I have tried the options sync-with-group-on-logout: false and query-inventories: false and I don't get results either. In fact I have tried setting all sync options to false except sync.persistent-data: true and the result is still the same: inventories are shared between servers.

What could I be doing wrong? Maybe I'm misinterpreting the plugin options?

SyncInv/config.yml

Phoenix616 commented 3 years ago

What exactly is your goal here? (Also the sync.inventory option definitely works, the other options have nothing to do with what type of data is synced they change behaviour)

Also can you please all of the missing information which the issue template requests?

7wOv6ySCjo commented 3 years ago

Used Version

server_a: SyncInv v0.6-SNAPSHOT (build 64) server_b: SyncInv v0.6-SNAPSHOT (build 64)

Config

server_a:

```yaml # Debugging mode to log more about what's going on debug: true # Redis messenger settings redis: host: localhost port: 19999 timeout: 60 password: ############## # you can also directly set the uri for example like this (directly set values overwrite uri parameter 'though): # uri: redis://password1@localhost:6379/database?timeout=60s [&database=database] # Whether or not the plugin should query inventories on other server # or just move the player to the server with the newest inventory query-inventories: true # The name of the group this server is in. Set that to the same value # on all servers which's data you want to get synced. server-group: enviroment_test # The name of this server. If you don't want to query inventories then # this has to be the same as the name in your BungeeCord's config.yml server-name: test_a # CHANGE THIS! # A list of server names that are required to answer to request # That way you can stop issues when a server isn't online that usually should be required-servers: [] # - server2 # - server3 # Whether or not we should sync the data with all servers in a group # when a player logs out. Use this if your servers have the tendency # to not always be online. sync-with-group-on-logout: true # Store player data even if the player never joined the server # This will create a player.dat when the data is synced and most likely # breaks first join detection of other plugins store-unknown-players: true # The amount of seconds we should maximally wait for all servers to # respond to a query query-timeout: 5 # Whether or not we should load the data from queries that timed out # This might run into issues if the server with the most recent data # is not online at the moment of querying! # It will basically disable the required-servers function apply-timed-out-queries: false # What to sync sync: # Should the plugin sync player inventory items? inventory: true # Should the plugin sync player enderchest items? enderchest: true # Should the plugin try sync the player gamemode? (Only works when the player is actually online, not for offline storage) gamemode: true # Should the plugin sync the player experience? experience: true # Should the plugin sync the player's health, max health and health scaling? health: true # Should the plugin to sync the player's food level? hunger: true # Should the plugin to sync the player's saturation? saturation: true # Should the plugin to sync the player's exhaustion? exhaustion: true # Should the plugin to sync the player's air level? air: true # Should the plugin sync the player's on fire state and fire duration? fire: true # Should the plugin to sync the player's no-damage-ticks? no-damage-ticks: true # Should the plugin to sync the player's current velocity? velocity: true # Should the plugin sync the player's current fall distance? # (Might kill player on other server when log in on the ground) fall-distance: true # Should the plugin try to sync player effects? (Only works when the player is actually online, not for offline storage) effects: true # Should the plugin try to sync persistent nbt data on the player object? persistent-data: true # Should the plugin sync player advancement progress? advancements: true # Should the plugin sync general player statistics? general-statistics: true # Should the plugin sync entity player statistics? entity-statistics: true # Should the plugin sync item player statistics? item-statistics: true # Should the plugin sync block player statistics? block-statistics: true # Should the plugin try to keep maps in sync? maps: true # Language settings lang: cant-pickup-exp: "&cYou can only collect EXP once your player data is loaded!" cant-pickup-items: "&cYou can only collect items once your player data is loaded!" cant-drop-items: "&cYou can only drop items once your player data is loaded!" cant-move: "&cYou can only move once your player data is loaded!" wait-for-loading: "&cPlease wait until your player data is loaded!" cant-load-data: "&cSorry but the server wasn't able to load your latest player data.\nPlease contact an administrator if this happens often!" ```

server_b:

```yaml # Debugging mode to log more about what's going on debug: true # Redis messenger settings redis: host: localhost port: 19999 timeout: 60 password: ############## # you can also directly set the uri for example like this (directly set values overwrite uri parameter 'though): # uri: redis://password1@localhost:6379/database?timeout=60s [&database=database] # Whether or not the plugin should query inventories on other server # or just move the player to the server with the newest inventory query-inventories: true # The name of the group this server is in. Set that to the same value # on all servers which's data you want to get synced. server-group: enviroment_test # The name of this server. If you don't want to query inventories then # this has to be the same as the name in your BungeeCord's config.yml server-name: test_b # CHANGE THIS! # A list of server names that are required to answer to request # That way you can stop issues when a server isn't online that usually should be required-servers: [] # - server2 # - server3 # Whether or not we should sync the data with all servers in a group # when a player logs out. Use this if your servers have the tendency # to not always be online. sync-with-group-on-logout: true # Store player data even if the player never joined the server # This will create a player.dat when the data is synced and most likely # breaks first join detection of other plugins store-unknown-players: true # The amount of seconds we should maximally wait for all servers to # respond to a query query-timeout: 5 # Whether or not we should load the data from queries that timed out # This might run into issues if the server with the most recent data # is not online at the moment of querying! # It will basically disable the required-servers function apply-timed-out-queries: false # What to sync sync: # Should the plugin sync player inventory items? inventory: false # Should the plugin sync player enderchest items? enderchest: false # Should the plugin try sync the player gamemode? (Only works when the player is actually online, not for offline storage) gamemode: false # Should the plugin sync the player experience? experience: true # Should the plugin sync the player's health, max health and health scaling? health: true # Should the plugin to sync the player's food level? hunger: true # Should the plugin to sync the player's saturation? saturation: true # Should the plugin to sync the player's exhaustion? exhaustion: true # Should the plugin to sync the player's air level? air: true # Should the plugin sync the player's on fire state and fire duration? fire: true # Should the plugin to sync the player's no-damage-ticks? no-damage-ticks: true # Should the plugin to sync the player's current velocity? velocity: true # Should the plugin sync the player's current fall distance? # (Might kill player on other server when log in on the ground) fall-distance: true # Should the plugin try to sync player effects? (Only works when the player is actually online, not for offline storage) effects: true # Should the plugin try to sync persistent nbt data on the player object? persistent-data: true # Should the plugin sync player advancement progress? advancements: true # Should the plugin sync general player statistics? general-statistics: true # Should the plugin sync entity player statistics? entity-statistics: true # Should the plugin sync item player statistics? item-statistics: true # Should the plugin sync block player statistics? block-statistics: true # Should the plugin try to keep maps in sync? maps: true # Language settings lang: cant-pickup-exp: "&cYou can only collect EXP once your player data is loaded!" cant-pickup-items: "&cYou can only collect items once your player data is loaded!" cant-drop-items: "&cYou can only drop items once your player data is loaded!" cant-move: "&cYou can only move once your player data is loaded!" wait-for-loading: "&cPlease wait until your player data is loaded!" cant-load-data: "&cSorry but the server wasn't able to load your latest player data.\nPlease contact an administrator if this happens often!" ```

Environment description

N/A

Full Log

server_a:

``` [02:35:25] [main/INFO]: [STDERR]: You have used the Spigot command line EULA agreement flag. [02:35:25] [main/INFO]: [STDERR]: By using this setting you are indicating your agreement to Mojang's EULA (https://account.mojang.com/documents/minecraft_eula). [02:35:25] [main/INFO]: [STDERR]: If you do not agree to the above EULA please stop your server and remove this flag immediately. [02:35:25] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD' [02:35:26] [main/INFO]: Reloading ResourceManager: Default, bukkit [02:35:26] [Worker-Main-2/INFO]: Loaded 7 recipes [02:35:28] [Server thread/INFO]: Starting minecraft server version 1.16.5 [02:35:28] [Server thread/INFO]: Loading properties [02:35:29] [Server thread/INFO]: This server is running Paper version git-Paper-786 (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT) [02:35:29] [Server thread/INFO]: Debug logging is disabled [02:35:29] [Server thread/INFO]: Server Ping Player Sample Count: 12 [02:35:29] [Server thread/INFO]: Using 4 threads for Netty based IO [02:35:29] [Server thread/INFO]: Default game type: SURVIVAL [02:35:29] [Server thread/INFO]: Generating keypair [02:35:29] [Server thread/INFO]: Starting Minecraft server on *:1601 [02:35:29] [Server thread/INFO]: Using epoll channel type [02:35:30] [Server thread/INFO]: [OpenInv] Loading OpenInv v4.1.8 [02:35:30] [Server thread/INFO]: [SyncInv] Loading SyncInv v0.6-SNAPSHOT (build 64) [02:35:30] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it [02:35:30] [Server thread/WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE! [02:35:30] [Server thread/WARN]: The server will make no attempt to authenticate usernames. Beware. [02:35:30] [Server thread/WARN]: Whilst this makes it possible to use BungeeCord, unless access to your server is properly restricted, it also opens up the ability for hackers to connect with any username they choose. [02:35:30] [Server thread/WARN]: Please see http://www.spigotmc.org/wiki/firewall-guide/ for further information. [02:35:30] [Server thread/WARN]: To change this, set "online-mode" to "true" in the server.properties file. [02:35:30] [Server thread/INFO]: Preparing level "world" [02:35:30] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld [02:35:31] [Server thread/INFO]: Preparing spawn area: 0% [02:35:31] [Server thread/INFO]: Preparing spawn area: 0% [02:35:31] [Server thread/INFO]: Preparing spawn area: 0% [02:35:32] [Server thread/INFO]: Preparing spawn area: 3% [02:35:32] [Server thread/INFO]: Time elapsed: 1599 ms [02:35:32] [Server thread/INFO]: Preparing start region for dimension minecraft:the_nether [02:35:32] [Server thread/INFO]: Preparing spawn area: 0% [02:35:33] [Server thread/INFO]: Preparing spawn area: 0% [02:35:33] [Server thread/INFO]: Preparing spawn area: 0% [02:35:33] [Server thread/INFO]: Time elapsed: 1342 ms [02:35:33] [Server thread/INFO]: Preparing start region for dimension minecraft:the_end [02:35:34] [Server thread/INFO]: Preparing spawn area: 0% [02:35:34] [Server thread/INFO]: Preparing spawn area: 0% [02:35:35] [Server thread/INFO]: Preparing spawn area: 0% [02:35:35] [Worker-Main-1/INFO]: Preparing spawn area: 100% [02:35:35] [Server thread/INFO]: Time elapsed: 1555 ms [02:35:35] [Server thread/INFO]: [OpenInv] Enabling OpenInv v4.1.8 [02:35:35] [Server thread/INFO]: [SyncInv] Enabling SyncInv v0.6-SNAPSHOT (build 64) [02:35:36] [Server thread/INFO]: [SyncInv] Debug: Sending HELLO to group:enviroment_test containing 0 objects. [02:35:37] [Server thread/INFO]: Running delayed init tasks [02:35:37] [Server thread/INFO]: Done (8.234s)! For help, type "help" [02:35:37] [Server thread/INFO]: Timings Reset [02:35:44] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received HELLO from test_b targeted at group:enviroment_test [02:35:44] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Sending HELLO to test_b containing 0 objects. [02:35:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received HELLO from test_c targeted at group:enviroment_test [02:35:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Sending HELLO to test_c containing 0 objects. [02:36:24] [User Authenticator #1/INFO]: [SyncInv] Debug: Sending GET_LAST_SEEN to group:enviroment_test containing 1 objects. [02:36:24] [User Authenticator #1/INFO]: UUID of player AgustinOut is 89e3c157-d411-30e9-8efb-b52b7b474bd0 [02:36:24] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received LAST_SEEN for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_c targeted at test_a [02:36:24] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received LAST_SEEN for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_b targeted at test_a [02:36:24] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: All servers in test_a responded to LAST_SEEN query for 89e3c157-d411-30e9-8efb-b52b7b474bd0! [02:36:24] [Server thread/INFO]: AgustinOut joined the game [02:36:25] [Server thread/INFO]: AgustinOut[/###.##.###.###:35932] logged in with entity id 373 at ([world]4.041827590208836, 71.25220334025373, -134.75358806114707) [02:36:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received GET_LAST_SEEN for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_b targeted at group:enviroment_test. Player was last seen 1628840205740 [02:36:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Sending LAST_SEEN to test_b containing 2 objects. [02:36:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received GET_DATA for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_b targeted at test_a [02:36:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Sending IS_ONLINE to test_b containing 1 objects. [02:36:45] [Server thread/INFO]: AgustinOut lost connection: Disconnected [02:36:46] [Server thread/INFO]: [SyncInv] Debug: Sending DATA to group:enviroment_test containing 1 objects. [02:36:46] [Server thread/INFO]: AgustinOut left the game [02:36:58] [User Authenticator #1/INFO]: [SyncInv] Debug: Sending GET_LAST_SEEN to group:enviroment_test containing 1 objects. [02:36:58] [User Authenticator #1/INFO]: UUID of player AgustinOut is 89e3c157-d411-30e9-8efb-b52b7b474bd0 [02:36:58] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received LAST_SEEN for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_b targeted at test_a [02:36:58] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received LAST_SEEN for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_c targeted at test_a [02:36:58] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: All servers in test_a responded to LAST_SEEN query for 89e3c157-d411-30e9-8efb-b52b7b474bd0! [02:36:58] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Sending GET_DATA to test_b containing 1 objects. [02:36:58] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received IS_ONLINE for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_b targeted at test_a [02:36:58] [Server thread/INFO]: AgustinOut joined the game [02:36:58] [Server thread/INFO]: AgustinOut[/###.##.###.###:53811] logged in with entity id 425 at ([world]5.309084679852628, 70.0, -136.71186577910183) [02:36:58] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received DATA for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_b targeted at group:enviroment_test. isQueryNull=false, shouldSyncWithGroupOnLougut=true, dataTimestamp=1628840218525 [02:53:57] [Server thread/INFO]: AgustinOut lost connection: Disconnected [02:53:57] [Server thread/INFO]: [SyncInv] Debug: Sending DATA to group:enviroment_test containing 1 objects. [02:53:57] [Server thread/INFO]: AgustinOut left the game [03:03:48] [Server thread/INFO]: Saving the game (this may take a moment!) [03:03:48] [Server thread/INFO]: Saved the game [03:03:49] [Server thread/INFO]: Stopping the server [03:03:49] [Server thread/INFO]: Stopping server [03:03:49] [Server thread/INFO]: [SyncInv] Disabling SyncInv v0.6-SNAPSHOT (build 64) [03:03:49] [Server thread/INFO]: [SyncInv] Debug: Sending sync BYE to group:enviroment_test containing 0 objects. [03:03:49] [Server thread/INFO]: [OpenInv] Disabling OpenInv v4.1.8 [03:03:49] [Server thread/INFO]: Saving players [03:03:49] [Server thread/INFO]: Saving worlds [03:03:49] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld [03:03:50] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved [03:03:50] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_nether]'/minecraft:the_nether [03:03:50] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved [03:03:50] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_the_end]'/minecraft:the_end [03:03:50] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved [03:03:50] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved [03:03:50] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved [03:03:50] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved [03:03:50] [Server thread/INFO]: Flushing Chunk IO [03:03:50] [Server thread/INFO]: Closing Thread Pool [03:03:50] [Server thread/INFO]: Closing Server ```

server_b:

``` [02:35:30] [main/INFO]: [STDERR]: You have used the Spigot command line EULA agreement flag. [02:35:30] [main/INFO]: [STDERR]: By using this setting you are indicating your agreement to Mojang's EULA (https://account.mojang.com/documents/minecraft_eula). [02:35:30] [main/INFO]: [STDERR]: If you do not agree to the above EULA please stop your server and remove this flag immediately. [02:35:30] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD' [02:35:31] [main/INFO]: Reloading ResourceManager: Default, bukkit [02:35:32] [Worker-Main-2/INFO]: Loaded 7 recipes [02:35:35] [Server thread/INFO]: Starting minecraft server version 1.16.5 [02:35:35] [Server thread/INFO]: Loading properties [02:35:35] [Server thread/INFO]: This server is running Paper version git-Paper-786 (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT) [02:35:35] [Server thread/INFO]: Debug logging is disabled [02:35:35] [Server thread/INFO]: Server Ping Player Sample Count: 12 [02:35:35] [Server thread/INFO]: Using 4 threads for Netty based IO [02:35:36] [Server thread/INFO]: Default game type: SURVIVAL [02:35:36] [Server thread/INFO]: Generating keypair [02:35:36] [Server thread/INFO]: Starting Minecraft server on *:1602 [02:35:36] [Server thread/INFO]: Using epoll channel type [02:35:37] [Server thread/INFO]: [OpenInv] Loading OpenInv v4.1.8 [02:35:37] [Server thread/INFO]: [SyncInv] Loading SyncInv v0.6-SNAPSHOT (build 64) [02:35:37] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it [02:35:37] [Server thread/WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE! [02:35:37] [Server thread/WARN]: The server will make no attempt to authenticate usernames. Beware. [02:35:37] [Server thread/WARN]: Whilst this makes it possible to use BungeeCord, unless access to your server is properly restricted, it also opens up the ability for hackers to connect with any username they choose. [02:35:37] [Server thread/WARN]: Please see http://www.spigotmc.org/wiki/firewall-guide/ for further information. [02:35:37] [Server thread/WARN]: To change this, set "online-mode" to "true" in the server.properties file. [02:35:37] [Server thread/INFO]: Preparing level "world" [02:35:38] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld [02:35:39] [Server thread/INFO]: Preparing spawn area: 0% [02:35:39] [Server thread/INFO]: Preparing spawn area: 0% [02:35:39] [Server thread/INFO]: Preparing spawn area: 0% [02:35:39] [Server thread/INFO]: Time elapsed: 1243 ms [02:35:39] [Server thread/INFO]: Preparing start region for dimension minecraft:the_nether [02:35:39] [Server thread/INFO]: Preparing spawn area: 0% [02:35:39] [Server thread/INFO]: Preparing spawn area: 0% [02:35:40] [Server thread/INFO]: Preparing spawn area: 0% [02:35:40] [Server thread/INFO]: Time elapsed: 1211 ms [02:35:40] [Server thread/INFO]: Preparing start region for dimension minecraft:the_end [02:35:40] [Server thread/INFO]: Preparing spawn area: 0% [02:35:41] [Server thread/INFO]: Preparing spawn area: 0% [02:35:41] [Worker-Main-1/INFO]: Preparing spawn area: 100% [02:35:41] [Server thread/INFO]: Time elapsed: 1196 ms [02:35:41] [Server thread/INFO]: [OpenInv] Enabling OpenInv v4.1.8 [02:35:41] [Server thread/INFO]: [SyncInv] Enabling SyncInv v0.6-SNAPSHOT (build 64) [02:35:43] [Server thread/INFO]: [SyncInv] Debug: Sending HELLO to group:enviroment_test containing 0 objects. [02:35:44] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received HELLO from test_a targeted at test_b [02:35:44] [Server thread/INFO]: Running delayed init tasks [02:35:44] [Server thread/INFO]: Done (8.815s)! For help, type "help" [02:35:44] [Server thread/INFO]: Timings Reset [02:35:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received HELLO from test_c targeted at group:enviroment_test [02:35:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Sending HELLO to test_c containing 0 objects. [02:36:24] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received GET_LAST_SEEN for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_a targeted at group:enviroment_test. Player was last seen 1628840106370 [02:36:24] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Sending LAST_SEEN to test_a containing 2 objects. [02:36:45] [User Authenticator #1/INFO]: [SyncInv] Debug: Sending GET_LAST_SEEN to group:enviroment_test containing 1 objects. [02:36:45] [User Authenticator #1/INFO]: UUID of player AgustinOut is 89e3c157-d411-30e9-8efb-b52b7b474bd0 [02:36:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received LAST_SEEN for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_c targeted at test_b [02:36:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received LAST_SEEN for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_a targeted at test_b [02:36:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: All servers in test_b responded to LAST_SEEN query for 89e3c157-d411-30e9-8efb-b52b7b474bd0! [02:36:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Sending GET_DATA to test_a containing 1 objects. [02:36:45] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received IS_ONLINE for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_a targeted at test_b [02:36:45] [Server thread/INFO]: AgustinOut joined the game [02:36:46] [Server thread/INFO]: AgustinOut[/###.##.###.###:57222] logged in with entity id 295 at ([world]-3.913206680500301, 71.0, -128.0891602688312) [02:36:46] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received DATA for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_a targeted at group:enviroment_test. isQueryNull=false, shouldSyncWithGroupOnLougut=true, dataTimestamp=1628840205999 [02:36:58] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received GET_LAST_SEEN for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_a targeted at group:enviroment_test. Player was last seen 1628840218434 [02:36:58] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Sending LAST_SEEN to test_a containing 2 objects. [02:36:58] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received GET_DATA for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_a targeted at test_b [02:36:58] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Sending IS_ONLINE to test_a containing 1 objects. [02:36:58] [Server thread/INFO]: AgustinOut lost connection: Disconnected [02:36:58] [Server thread/INFO]: [SyncInv] Debug: Sending DATA to group:enviroment_test containing 1 objects. [02:36:58] [Server thread/INFO]: AgustinOut left the game [02:53:57] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received DATA for 89e3c157-d411-30e9-8efb-b52b7b474bd0 from test_a targeted at group:enviroment_test. isQueryNull=true, shouldSyncWithGroupOnLougut=true, dataTimestamp=1628841237596 [03:03:49] [lettuce-nioEventLoop-4-1/INFO]: [SyncInv] Debug: Received BYE from test_a targeted at group:enviroment_test [03:03:54] [Server thread/INFO]: Saving the game (this may take a moment!) [03:03:55] [Server thread/INFO]: Saved the game [03:03:56] [Server thread/INFO]: Stopping the server [03:03:56] [Server thread/INFO]: Stopping server [03:03:56] [Server thread/INFO]: [SyncInv] Disabling SyncInv v0.6-SNAPSHOT (build 64) [03:03:56] [Server thread/INFO]: [SyncInv] Debug: Sending sync BYE to group:enviroment_test containing 0 objects. [03:03:56] [Server thread/INFO]: [OpenInv] Disabling OpenInv v4.1.8 [03:03:56] [Server thread/INFO]: Saving players [03:03:56] [Server thread/INFO]: Saving worlds [03:03:56] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld [03:03:56] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved [03:03:56] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_nether]'/minecraft:the_nether [03:03:56] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved [03:03:56] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_the_end]'/minecraft:the_end [03:03:56] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved [03:03:56] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved [03:03:56] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved [03:03:56] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved [03:03:56] [Server thread/INFO]: Flushing Chunk IO [03:03:56] [Server thread/INFO]: Closing Thread Pool [03:03:56] [Server thread/INFO]: Closing Server ```

What other programs/plugins are you running?

server_a:

> pl
[23:00:47 INFO]: Plugins (2): OpenInv, SyncInv
> version
[03:14:52 INFO]: Checking version, please wait...
[03:14:53 INFO]: This server is running Paper version git-Paper-786 (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT)
You are running the latest version

server_b:

> pl
[23:01:16 INFO]: Plugins (2): OpenInv, SyncInv
> version
[03:16:10 INFO]: Checking version, please wait...
[03:16:10 INFO]: This server is running Paper version git-Paper-786 (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT)
You are running the latest version

What is happening?

Server a: sync.inventory: true Server b: sync.inventory: false

Server A: (64 Diamonds) -> Teleport to Server B -> Diamonds are not sync. Thats okay. Expected behaviour. Now comes the issue: Server B: (30 Dirts) -> Teleport to Server A -> Dirt are sync. Thats not okay. I should have the 64 Diamonds.

So it the signal SHOULDN’T be sent or received when it set to false.

What did you expect to happen?

Server A represents a survival server. Server B represents a creative or mini-game server. Server C represents a survival dimension server minecraft:the_nether.

We don't want to share inventory between server A and server B but we do want to share inventory between server A and server C. On server B we only want to share sync.persistent-data: true with the group.

Additional context

BungeeCord/config.yml YouTube video

Phoenix616 commented 3 years ago

The config options define whether or not the server with the config will apply those values, not if they get sent. The original design follows the concept of those options being in sync in the whole group so this is more of a feature request than an actual bug. (The options were named in the vain of "syncing data from other servers", not "syncing to other servers" although that's not made explicitly clear)

Implementing this functionality will require an internal rework of how the syncing data is gathered and sent :S

Phoenix616 commented 3 years ago

I thought that how these feautres were implemented, or at least thats why i ask this feature!

The current implementation is simple and works just fine as long as the options are the same everywhere. A one way sync was never meant to be supported by this plugin nor requested at any point before.

7wOv6ySCjo commented 3 years ago

The config options define whether or not the server with the config will apply those values, not if they get sent. The original design follows the concept of those options being in sync in the whole group so this is more of a feature request than an actual bug. (The options were named in the vain of "syncing data from other servers", not "syncing to other servers" although that's not made explicitly clear)

Implementing this functionality will require an internal rework of how the syncing data is gathered and sent :S

Two-way synchronisation would make more sense for this type of plugin. In fact that's what one naturally interprets when looking at the "true" or "false" options.

Perhaps you could add a toggleable option to set the sync direction. You are a good programmer, I trust you can do a good job. The plugin itself is already an excellent solution, it just needs this one big change.

7wOv6ySCjo commented 3 years ago

Hello, when might we hear about this change? It would be necessary to be able to test it in production with players.

7wOv6ySCjo commented 3 years ago

Any news?

Phoenix616 commented 3 years ago

Any news?

Once this change was made this issue will be closed.

7wOv6ySCjo commented 3 years ago

Any news?

Once this change was made this issue will be closed.

Okey, thanks.