NEZNAMY / TAB

"That" TAB plugin.
Apache License 2.0
905 stars 246 forks source link

[1.20.5] Players get disconnected with "Network Protocol Error" #1272

Closed turnolos closed 5 months ago

turnolos commented 7 months ago

Server version

Paper spigot 1.12.2

TAB version

4.1.4

Describe the bug

All clients using Minecraft 1.20.5 that are logged onto our server simultaneously get disconnected with the error "Network Protocol Error" when any other unrelated player on the server logs off the server. The client-side logs indicate an error with 'collideRule_2689' and can be found below:

[01:58:07] [Render thread/INFO]: [System] [CHAT] Download it here: https://essentialsx.net/downloads.html [01:58:07] [Render thread/WARN]: Not all defined tags for registry ResourceKey[minecraft:root / minecraft:block] are present in data pack: minecraft:incorrect_for_diamond_tool, minecraft:incorrect_for_gold_tool, minecraft:incorrect_for_iron_tool, minecraft:incorrect_for_netherite_tool, minecraft:incorrect_for_stone_tool, minecraft:incorrect_for_wooden_tool [01:58:08] [Render thread/WARN]: Ignoring player info update for unknown player 56538b1e-7d0c-44c5-929e-19d5e48adaf5 ([UPDATE_DISPLAY_NAME]) [01:58:08] [Render thread/ERROR]: Failed to handle packet afv@7e5c5189 java.lang.IllegalStateException: Player is either on another team or not on any team. Cannot remove from team 'collideRule_2689'. at eww.b(SourceFile:308) ~[1.20.5.jar:?] at fxx.a(SourceFile:2044) ~[1.20.5.jar:?] at afv.a(SourceFile:132) ~[1.20.5.jar:?] at afv.a(SourceFile:18) ~[1.20.5.jar:?] at zz.a(SourceFile:25) ~[1.20.5.jar:?] at bpl.d(SourceFile:162) [1.20.5.jar:?] at bpp.d(SourceFile:23) [1.20.5.jar:?] at bpl.A(SourceFile:136) [1.20.5.jar:?] at bpl.bA(SourceFile:121) [1.20.5.jar:?] at ffg.c(SourceFile:1275) [1.20.5.jar:?] at ffg.f(SourceFile:888) [1.20.5.jar:?] at net.minecraft.client.main.Main.main(SourceFile:265) [1.20.5.jar:?] [01:58:08] [Render thread/WARN]: Client disconnected with reason: Network Protocol Error

Expected behavior

Should not disconnect anyone when a random unrelated player logs off the server

Steps to reproduce

1.) Ensure players are using Minecraft version 1.20.5 and are connected to the server. 2.) Have a random player disconnect or log off the server. 3.) Observe that all other players using Minecraft version 1.20.5 receive a "Network Protocol Error" and get disconnected simultaneously. 4.) Check client logs to find errors related to 'collideRule_2689'.

Additional info

No response

Checklist

turnolos commented 7 months ago

Video of it occuring: https://gyazo.com/8d7a43f753f68d0f3604688ed5a5c1a7

NEZNAMY commented 7 months ago

Starting with 1.20.5, invalid actions will cause the client to disconnect (See 1.20.5 changelog - "Invalid data in packets sent from a server will now cause the game client to disconnect"). This kind of invalid action used to crash the client up until 1.7.10. Since 1.8, only errors are printed into client log, but nothing bad happens otherwise.

Your issue is almost a duplicate of #1193, which has the same issue, just with different consequences. It was fixed in new TAB version though. Or should be at least.

collideRule_xxxx comes from Paper. See TAB wiki for steps to disabling team management in Paper. This will fix your issue.

In the last few years I've been working on making sure TAB does not send these kinds of invalid actions by itself, so it should not happen if you don't use conflicting software.

Also send your config.yml of TAB. I want to make sure you did not accidentally disable anti-override for scoreboard teams, which would explain this behavior.

turnolos commented 7 months ago

Was able to fix it by setting enable-player-collisions: true in paper, thank you

Here's our config anyway if you wanted it:


header-footer:
  enabled: true
  header:
    - "&5&lPURPLE &d&lPRISON"
  footer:
    - "&9&lDISCORD: &fdiscord.gg/pp"
    - "&d&lWEBSITE: &fpurpleprison.co"
    - "&5&l STORE: &fbuy.purpleprison.net"
  disable-condition: '%world%=disabledworld'
  per-world:
    world1:
      header:
        - "an example of world with custom"
      footer:
        - "header/footer and prefix/suffix"
    world2;world3:
      header:
        - "This is a shared header for"
        - "world2 and world3"
  per-server:
    server1:
      header:
        - "an example of server with custom header"

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Tablist-name-formatting
tablist-name-formatting:
  enabled: true
  anti-override: true
  disable-condition: '%world%=disabledworld'

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Nametags
scoreboard-teams:
  enabled: true
  enable-collision: false
  invisible-nametags: false
  anti-override: true
  # https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Sorting-players-in-tablist
  sorting-types:
    - "GROUPS:owner,manager,admin,srmod,mod,helper,dev,media,donator,z,default"
    - "PLACEHOLDER_A_TO_Z:%discord_check%"
    - "PLACEHOLDER_A_TO_Z:%player%"
  case-sensitive-sorting: true
  can-see-friendly-invisibles: false
  disable-condition: '%world%=disabledworld'
  # https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Unlimited-nametag-mode
  unlimited-nametag-mode:
    enabled: false
    disable-on-boats: true
    disable-condition: '%world%=disabledworld'
    dynamic-lines:
      - abovename
      - nametag #the original one, combination of tagprefix + customtagname + tagsuffix
      - belowname
      - another
    static-lines:
      myCustomLine: 0.66

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Playerlist-Objective
playerlist-objective:
  enabled: false
  value: "%ping%"
  fancy-value: "&7Ping: %ping%"
  disable-condition: '%world%=disabledworld'

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Belowname
belowname-objective:
  enabled: false
  number: "%health%"
  text: "&cHealth"
  fancy-display-players: "&c%health%"
  fancy-display-default: "NPC"
  disable-condition: '%world%=disabledworld'

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Spectator-fix
prevent-spectator-effect:
  enabled: false

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Bossbar
bossbar:
  enabled: false
  toggle-command: /bossbar
  remember-toggle-choice: false
  hidden-by-default: false
  bars:
    ServerInfo:
      style: "PROGRESS" # for 1.9+: PROGRESS, NOTCHED_6, NOTCHED_10, NOTCHED_12, NOTCHED_20
      color: "%animation:barcolors%" # for 1.9+: BLUE, GREEN, PINK, PURPLE, RED, WHITE, YELLOW
      progress: "100" # in %
      text: "&fWebsite: &bwww.domain.com"

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Scoreboard
scoreboard:
  enabled: false
  toggle-command: /sb
  remember-toggle-choice: false
  hidden-by-default: false
  use-numbers: true
  static-number: 0
  delay-on-join-milliseconds: 0
  respect-other-plugins: true
  scoreboards:
    scoreboard-1.20.3+:
      title: "<#E0B11E>MyServer</#FF0000>"
      display-condition: "%player-version-id%>=765;%bedrock%=false" # Only display it to players using 1.20.3+ AND NOT bedrock edition
      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%"

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Layout
layout:
  enabled: false
  direction: COLUMNS
  default-skin: mineskin:1753261242
  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:
          condition: permission:tab.staff
          slots:
            - 24-40
        players:
          slots:
            - 44-80

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Ping-Spoof
ping-spoof:
  enabled: false
  value: 0

placeholders:
  date-format: "dd.MM.yyyy"
  time-format: "[HH:mm:ss / h:mm a]"
  time-offset: 0
  register-tab-expansion: false

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Placeholder-output-replacements
placeholder-output-replacements:
  "%essentials_vanished%":
    "yes": "&7| Vanished"
    "no": ""

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Conditional-placeholders
conditions:
  nick: # use it with %condition:nick%
    conditions:
      - "%player%=%essentials_nickname%"
    yes: "%player%"
    no: "~%essentials_nickname%"

placeholderapi-refresh-intervals:
  default-refresh-interval: 500
  "%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

# assigning groups by permission nodes instead of taking them from permission plugin
assign-groups-by-permissions: true

# if the option above is true, all groups are taken based on permissions and the one higher in this list is used as primary
# Warning! This is not sorting list and has nothing to do with sorting players in tablist!
primary-group-finding-list:
  - owner
  - admin
  - srmod
  - mod
  - helper
  - dev
  - media
  - donator
  - z
  - default

# Refresh interval (in milliseconds) of:
# - Permission checks in conditions / sorting
# - Group retrieving from permission plugin for sorting / per-group properties
# - Prefix/suffix placeholders taking data from permission plugin
permission-refresh-interval: 1000

# Unlocks extra console messages
debug: false

# https://github.com/NEZNAMY/TAB/wiki/MySQL
mysql:
  enabled: false
  host: 127.0.0.1
  port: 3306
  database: tab
  username: user
  password: password
  useSSL: true

########################################################################
# BUKKIT ONLY - THE FOLLOWING SECTION IS ONLY FOR BACKEND INSTALLATION #
########################################################################

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Per-world-playerlist
per-world-playerlist:
  enabled: false
  # players with tab.staff will always see all players
  allow-bypass-permission: false
  # players in these worlds will always see all players
  ignore-effect-in-worlds:
    - ignoredworld
    - build
  shared-playerlist-world-groups:
    lobby:
      - lobby1
      - lobby2
    minigames:
      - paintball
      - bedwars

#####################################################################
# PROXY ONLY - THE FOLLOWING SECTION IS ONLY FOR PROXY INSTALLATION #
#####################################################################

# https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Global-playerlist
global-playerlist:
  enabled: false
  display-others-as-spectators: false
  display-vanished-players-as-spectators: true
  isolate-unlisted-servers: false
  spy-servers:
    - spyserver1
    - spyserver2
  server-groups:
    lobbies:
      - lobby1
      - lobby2
    group2:
      - server1
      - server2

# Take permissions and groups from backend server instead of proxy
use-bukkit-permissions-manager: false

# Sometimes server might be using offline uuids in tablist instead of online, such as disabling waterfall's tablist rewrite option
# If you experience tablist formatting not working, toggle this option (set it to opposite value)
# Only affects proxies with online mode enabled
use-online-uuid-in-tablist: true```
NEZNAMY commented 7 months ago

Well this is not readable. Anyway you have the option enabled. Once paper or viaversion update so I can test a 1.20.5 client on paper, I'll give this a try.

NEZNAMY commented 7 months ago

I was not able to reproduce the issue using provided steps. I did not get disconnected.

SrMonsterYT commented 7 months ago

I was not able to reproduce the issue using provided steps. I did not get disconnected.

I have the same error on mine, I'm using bungeecord, it occurs when I enter 1 pufferfish server https://github.com/NEZNAMY/TAB-Bridge/issues/34

NEZNAMY commented 7 months ago

I was not able to reproduce the issue using provided steps. I did not get disconnected.

I have the same error on mine, I'm using bungeecord, it occurs when I enter 1 pufferfish server NEZNAMY/TAB-Bridge#34

Fixed a week ago in https://github.com/NEZNAMY/TAB/commit/66008cd767524af5c1b8f0d768330db50d2294a6 (originally was supposed to fix a different one, but fixes this as well).

hervidero commented 7 months ago

Had the same/similar issue after updating our servers today. Can confirm that using a DEV build (4.1.5-snapshot build#1119) of the TAB plugin on the velocity server works for me. And no need to change any setting in the config.

SrMonsterYT commented 7 months ago

I was not able to reproduce the issue using provided steps. I did not get disconnected.

I have the same error on mine, I'm using bungeecord, it occurs when I enter 1 pufferfish server NEZNAMY/TAB-Bridge#34

Fixed a week ago in 66008cd (originally was supposed to fix a different one, but fixes this as well).

should i wait for an update because this is only for donors, right?

NEZNAMY commented 6 months ago

Literally go to actions and download it from there.

SrMonsterYT commented 6 months ago

Literally go to actions and download it from there.

I tested it and it works, it solved the problem, you just have to update the TAB plugin, thanks!

NEZNAMY commented 6 months ago

@turnolos could it be that you reloaded TAB using /tab reload before the kick?

hensolo11 commented 6 months ago

it seems like this problem has not been solved for me even after using the latest dev build

NEZNAMY commented 6 months ago

it seems like this problem has not been solved for me even after using the latest dev build

Send the error from client log.

hensolo11 commented 6 months ago

it seems like this problem has not been solved for me even after using the latest dev build

Send the error from client log.

https://paste.gg/p/anonymous/67972427c4034263ac25a70eb2cf4522 what happens before this is an attempt to use /team join

NEZNAMY commented 6 months ago

I tried that command and it worked for me. I'll need more reliable steps to reproduce.