Skip to content

Player duplicates on tab when using redis for cross-server global playerlist #1630

@Dagrond

Description

@Dagrond

Server version

1.21.10

TAB version

5.5.0

Plugin list

Just TAB, I have tested it on clean servers and the issue is still there.

Describe the bug

I have connected 3 servers together using REDIS method, redis is connected successfully on all 3, without TAB bridge. When players are switching servers, there is sometimes a bug which causes duplication issues on tablist.

What I tried:

  1. I have tried to switching on and off different config lines, including use-online-uuid-in-tablist, scoreboard-teams, and tablist-name-formatting. Nothing really helps.
  2. I'm sure I don't get any errors in errors.log, anti-override.log, or placeholder-errors.log.
  3. I have correctly set server-name in each subserver config to a different value, I tested it with %tab_placeholder_server% to make sure they are different on each.
  4. No I cannot use proxy mode, as I'm using proxy-as-a-service, so it's not velocity nor bungee. Shouldn't matter as REDIS method is independent from proxy.

Expected behavior

Well, players shouldn't duplicate on tablist. Everything else works pretty well on this config, maybe there are some minor issues with sorting but nothing too crazy.

Steps to reproduce

  1. Have 3 separate servers connected with REDIS method, let's say s-1 s-2 and s-3 servers.
  2. start with 2 players connected to s-1
  3. First player is just sitting on s-1
  4. Second player switches server from s-1 to s-2
  5. tablist is still working fine for both players
  6. now, second player switches server from s-2 to s-3.
  7. tablist is correct for second player, but the first (who is sitting on s-1) has duplicate name of second player on tablist. Like he didin't get info that second player disconnected from s-2, but get info that he connected to s-3. /tab reload is not fixing it. First player must change server to fix duplication on its tablist. But it will happen again.
  8. When second player switches server back to s-1, one of the entries will change, but the duplicated one persists.

Additional info

Here is some visual explanation after doing reproduce steps from above. Tablist for player "Dagrond" who was switching servers - correct view. (don't mind the lunar client logo, it is client-side)

Image

Tablist for player "Dnorgad" which was sitting all the time on s-1 server:

Image

Now, let "Dagrond" switch server back from s-3 to s-1. One of the entries will get updated, but the second one is still there for "Dnorgad":

Image

Note that I've added tabsuffix for debug purposes, with server names. It is happening without it aswell.

I have empty groups.yml.
My config.yml (same on all 3 servers except the first line):

server-name: 's-1'
header-footer:
  enabled: true
  designs:
    default:
      header:
      - '<gradient:#FFFFFF:#09FF00:#FFFFFF><st><b>                                                            '
      - 'WIP'
      - 'will do soon'
      - ''
      footer:
      - ''
      - 'just a footer example'
      - '<gradient:#FFFFFF:#09FF00:#FFFFFF><st><b>                                                            '
tablist-name-formatting:
  enabled: true
  disable-condition: ''
scoreboard-teams:
  enabled: true
  enable-collision: true
  invisible-nametags: false
  sorting-types:
  - GROUPS:owner,admin,vip,default
  case-sensitive-sorting: true
  can-see-friendly-invisibles: false
  disable-condition: ''
playerlist-objective:
  enabled: false
  value: '%ping%'
  fancy-value: '&7Ping: %ping%'
  title: TAB
  render-type: INTEGER
  disable-condition: '%world%=disabledworld'
belowname-objective:
  enabled: false
  value: '%health%'
  title: '&cHealth'
  fancy-value: '&c%health%'
  fancy-value-default: NPC
  disable-condition: '%world%=disabledworld'
prevent-spectator-effect:
  enabled: true
bossbar:
  enabled: true
  toggle-command: /bossbar
  remember-toggle-choice: false
  hidden-by-default: false
  bars:
    vanish:
      style: PROGRESS
      color: WHITE
      progress: '100'
      text: '&f&lW ukryciu'
      display-condition: '%sayanvanish_vanished%=true'
scoreboard:
  enabled: false
  toggle-command: /sb
  remember-toggle-choice: false
  hidden-by-default: false
  delay-on-join-milliseconds: 0
  scoreboards:
    scoreboard-1.20.3+:
      title: <#E0B11E>MyServer</#FF0000>
      display-condition: '%player-version-id%>=765;%bedrock%=false'
      lines:
      - '&7%date%'
      - '%animation:MyAnimation1%'
      - '&6Online:'
      - '* &eOnline&7:||%online%'
      - '* &eCurrent World&7:||%worldonline%'
      - '* &eStaff&7:||%staffonline%'
      - ''
      - '&6Personal Info:'
      - '* &bRank&7:||%group%'
      - '* &bPing&7:||%ping%&8ms'
      - '* &bWorld&7:||%world%'
      - '%animation:MyAnimation1%'
    scoreboard:
      title: <#E0B11E>MyServer</#FF0000>
      lines:
      - '&7%date%'
      - '%animation:MyAnimation1%'
      - '&6Online:'
      - '* &eOnline&7: &f%online%'
      - '* &eCurrent World&7: &f%worldonline%'
      - '* &eStaff&7: &f%staffonline%'
      - ''
      - '&6Personal Info:'
      - '* &bRank&7: &f%group%'
      - '* &bPing&7: &f%ping%&8ms'
      - '* &bWorld&7: &f%world%'
      - '%animation:MyAnimation1%'
layout:
  enabled: false
  direction: COLUMNS
  default-skin: mineskin:37e93c8e12cd426cb28fce31969e0674
  enable-remaining-players-text: true
  remaining-players-text: '... and %s more'
  empty-slot-ping-value: 1000
  layouts:
    default:
      fixed-slots:
      - '1|&3Website&f:'
      - 2|&bmyserver.net
      - '3|&8&m                       '
      - '4|&3Name&f:'
      - 5|&b%player%
      - '7|&3Rank&f:'
      - '8|Rank: %group%'
      - '10|&3World&f:'
      - 11|&b%world%
      - '13|&3Time&f:'
      - 14|&b%time%
      - '21|&3Teamspeak&f:'
      - 22|&bts.myserver.net
      - '23|&8&m                       '
      - '41|&3Store&f:'
      - 42|&bshop.myserver.net
      - '43|&8&m                       '
      groups:
        staff:
          slots:
          - 24-40
          display-condition: permission:tab.staff
        players:
          slots:
          - 44-80
ping-spoof:
  enabled: false
  value: 0
global-playerlist:
  enabled: true
  display-others-as-spectators: true
  display-vanished-players-as-spectators: true
  isolate-unlisted-servers: false
  update-latency: false
  spy-servers: []
  server-groups:
    main: []
placeholders:
  date-format: dd.MM.yyyy
  time-format: '[HH:mm:ss / h:mm a]'
  time-offset: 10
  register-tab-expansion: true
placeholder-output-replacements:
conditions:
placeholder-refresh-intervals:
  default-refresh-interval: 1500
  '%server_uptime%': 1000
  '%server_tps_1_colored%': 1000
  '%server_unique_joins%': 5000
  '%player_health%': 200
  '%player_ping%': 1000
  '%vault_prefix%': 1000
  '%rel_factionsuuid_relation_color%': 1000
assign-groups-by-permissions: false
primary-group-finding-list:
- Owner
- Admin
- Mod
- Helper
- default
permission-refresh-interval: 3000
debug: false
mysql:
  enabled: false
  host: 127.0.0.1
  port: 3306
  database: tab
  username: user
  password: password
  useSSL: true
proxy-support:
  enabled: true
  type: REDIS
  plugin:
    name: RedisBungee
  redis:
    url: redis://:my_redis_pass@my_server_ip:6379/0
  rabbitmq:
    exchange: plugin
    url: amqp://guest:guest@localhost:5672/%2F
  channel-name-suffix: TAB
components:
  minimessage-support: true
  disable-shadow-for-heads: true
config-version: 5
per-world-playerlist:
  enabled: false
  allow-bypass-permission: false
  ignore-effect-in-worlds:
  - ignoredworld
  - build
  shared-playerlist-world-groups:
    lobby:
    - lobby1
    - lobby2
    minigames:
    - paintball
    - bedwars
compensate-for-packetevents-bug: false
use-bukkit-permissions-manager: false
use-online-uuid-in-tablist: true

Checklist

  • I am running latest version of the plugin
  • I have read the wiki to make sure it's not an issue with configuration
  • I ticked all of the boxes without actually reading them
  • I have read the Compatibility wiki page and am not trying to run the plugin on an unsupported server version / platform
  • I am willing to cooperate to get this issue resolved faster, including providing any additional information requested or testing new builds

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: BugPlugin is not working as described on the wiki

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions