Animated-TabList

Animated-TabList

65.2k Downloads

Player & entity nametags no longer appearing after plugin reload

Rattle189 opened this issue ยท 11 comments

commented

Type of bug

Other

TabList version

5.6.3

Software version

git-paper-386

Relevant plugins

  • AdvancedNMotd
  • AngelChest
  • ChestSort
  • Chunky
  • ColoredAnvils
  • ColoredSigns
  • DiscordSRV
  • EssentialsX
  • EssentialsXProtect
  • floodgate
  • Geyser-Spigot
  • InvUnload
  • LuckPerms
  • PartyChat
  • PlaceholderAPI
  • ProtocolLib
  • SpigotPing
  • TabList
  • Vault

Console error (if applicable)

No response

TabList configuration files

`hook:

  # Hook to PlaceholderAPI to use custom placeholders.
  placeholderapi: true

# Fake players that can be added to the player list.
fake-players:
  enabled: false

  # Do we count the added fake players to the %online-players% placeholder?
  count-fake-players-to-online-players: false

# If enabled, the gray color will not appear to other players when the player's game mode is spectator.
# The gray color will only show for the spectator player.
# Requires ProtocolLib!
remove-gray-color-from-tab-in-spectator: false

# true - does not count vanished players in %online-players% placeholder.
# Requires Essentials, SuperVanish, PremiumVanish or CMI plugin!
ignore-vanished-players-in-online-players: false

# true - count vanished staff in %staff-online% placeholder,
# but they need to have "tablist.onlinestaff" permission set.
# false - does not count vanished staff in the %staff-online% placeholder
# Requires Essentials, SuperVanish, PremiumVanish or CMI plugin!
count-vanished-staffs: true

# Hide player from player list when a player is AFK?
# Requires Essentials or CMI plugin!
hide-player-from-tab-when-afk: false

# Hide all players from the player list?
# This removes all players from the player list, but the player that has the
# group set is retained as it is not changed during removal, so your group
# will be restored if this option is disabled.
# Requires ProtocolLib to fix view distance issue! (https://github.com/montlikadani/TabList/issues/147)
hide-players-from-tablist: false

# Different player list in different world.
per-world-player-list:
  enabled: false

  # You can specify worlds, which will share the same list of players
  world-groups:

    # The key name, can be anything
    example1:
    - exampleWorld
    - exampleAnotherWorld
    exampleGroup2:
    - exampleWorld2
    - exampleAnotherWorld2

# Placeholders formatting
placeholder-format:

  # When the player changes the AFK status, change his tablist name format?
  afk-status:
    enable: false

    # Should the AFK format display in right or left side?
    # true - displays in right side
    # false - displays in left side
    show-in-right-or-left-side: true

    # Show player's group if the player is AFK?
    show-player-group: true

    # Format when the player is AFK.
    format-yes: '&7 [AFK]&r '

    # Format when the player is not AFK.
    format-no: ''

    # Sort AFK players to the bottom of the player list?
    sort-last: false
  time:

    # Time zones: https://www.mkyong.com/java/java-display-list-of-timezone-with-gmt/
    # Or google it: "what is my time zone"
    time-zone: GMT0

    # Use system default time zone instead of searching for that?
    use-system-zone: false

    # Formats/examples: https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
    # Format of %server-time% placeholder.
    time-format: mm:HH

    # Format of %date% placeholder.
    date-format: dd/MM/yyyy

  # Ping color format for %ping% placeholder.
  ping:
    enable: true

    # https://github.com/montlikadani/TabList/wiki/Ping-or-tps-formatting
    formats:
    - '&a%ping% <= 200'
    - '&6%ping% >= 200'
    - '&c%ping% > 500'

  # TPS color format for %tps% placeholder.
  tps:
    enable: true

    # https://github.com/montlikadani/TabList/wiki/Ping-or-tps-formatting
    formats:
    - '&a%tps% > 18.0'
    - '&6%tps% == 16.0'
    - '&c%tps% < 16.0'

    # How many numbers do you want to display after "." in %tps% placeholder?
    # The number should be higher than 0.
    # Example: 3 = 19.14
    size: 2

  # Memory bar settings for %memory_bar% variable
  memory-bar:
    char: '|'
    size: 80
    colors:
      used: '&c'
      free: '&a'

      # When the server memory less than 80
      allocation: '&e'

      # When the server memory is on critical level (less than 40) and some resource need memory to run.
      released: '&6'

# Enable changing of prefix & suffix in player list?
change-prefix-suffix-in-tablist:
  enable: true

  # Refresh interval in server ticks.
  # Set to 0 if you don't want to refresh the groups.
  # If 0, then you will need to execute the /tl reload command to refresh the groups.
  refresh-interval: 4

  # Disable groups in these worlds.
  disabled-worlds:

    # Use the list as whitelist?
    use-as-whitelist: false
    list:
    - myWorldWithUpper

  # Automatically add groups from another plugins to the tablist groups.yml on every reload?
  # If a plugin does not support Vault, it will not be added.
  sync-plugins-groups-with-tablist: true

  # Hide player's group in player list when the player is vanished?
  # Requires Essentials, SuperVanish, PremiumVanish or CMI plugin!
  hide-group-when-player-vanished: false

  # Do you want to assign global group to normal groups?
  # true - "globalGroupPrefix + normalGroupPrefix"
  # false - "normalGroupPrefix"
  assign-global-group-to-normal: false

  # Prefer player's primary Vault group when assigning tablist group from groups.yml?
  # true - player will be assigned their primary vault group where possible
  # false - applies the group that has the higher priority in the permission plugin
  prefer-primary-vault-group: true

# Tablist objective types
# Shows your current health (with life indicator), your current ping or any NUMBER placeholder
# after the player's name (before the ping indicator).
tablist-object-type:

  # Types:
  # none - disables tablist objects
  # ping - player's ping
  # health - player's health
  # custom - custom placeholder
  type: ping

  # Interval for objects refreshing in seconds.
  refresh-interval: 3

  # In these worlds the objects will not be displayed
  disabled-worlds:
  - testingWorld

  # Objective settings
  object-settings:

    # The player's health - displayed after the player's name.
    health:

      # For these players the health will not be displayed
      restricted-players:
      - exampleplayer
      - players

    # Custom placeholder - accepts only number-ending placeholders, like %level%
    custom:
      value: '%level%'

# Check for updates?
check-update: true

# Download new releases to "releases" folder?
# This only works if the "check-update" is true.
download-updates: false

# Log plugin messages to console?
logconsole: true

Bug description

An issue that has been plaguing my Paper 1.18.2 server in these past few days is that player and entity nametags have disappeared, even if a server restart is done. I have disabled the plugins 1-by-1 and reset all the .yml files in the server's root directory. I discovered the problem was caused by TabList itself when I went to disable the plugin, and then deleted all its configuration files and have it generate new ones. Once the server restarted with the default configuration files, I did /tl reload and the issue returned.

Running on Windows 10 64-bit and OpenJDK 17.0.3+
2022-06-16_00 43 02
2022-06-16_00 55 49
7

commented

I haven't touched the scoreboard feature ever since it was released in Minecraft. By any chance this scoreboard team is caused/created by the plugin?

commented

Show the output from scoreboard objectives list and scoreboard players list

commented

Hi, I'm sorry for the late reply because my friends were still doing something so I couldn't forcibly restart the server.

Output from scoreboard objectives list:
image

Output from scoreboard players list:
image

This error was printed in the console:
[00:33:42 ERROR]: Packet encoding of packet ID 15 threw (skippable? true) io.netty.handler.codec.EncoderException: String too big (was 10047652 bytes encoded, max 262144) at net.minecraft.network.FriendlyByteBuf.writeUtf(FriendlyByteBuf.java:577) ~[?:?] at net.minecraft.network.FriendlyByteBuf.writeComponent(FriendlyByteBuf.java:368) ~[?:?] at net.minecraft.network.protocol.game.ClientboundChatPacket.write(ClientboundChatPacket.java:49) ~[?:?] at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:41) ~[paper-1.18.2.jar:git-Paper-386] at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:14) ~[paper-1.18.2.jar:git-Paper-386] at jdk.internal.reflect.GeneratedMethodAccessor43.invoke(Unknown Source) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?] at com.viaversion.viaversion.util.PipelineUtil.callEncode(PipelineUtil.java:93) ~[ViaVersion-4.3.2-SNAPSHOT.jar:?] at com.viaversion.viaversion.bukkit.handlers.BukkitEncodeHandler.encode(BukkitEncodeHandler.java:71) ~[ViaVersion-4.3.2-SNAPSHOT.jar:?] at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:120) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:764) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:758) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1020) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:311) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at com.comphenix.protocol.injector.netty.channel.NettyChannelProxy.writeAndFlush(NettyChannelProxy.java:227) ~[ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.channel.NettyChannelProxy.writeAndFlush(NettyChannelProxy.java:233) ~[ProtocolLib.jar:?] at net.minecraft.network.Connection.doSendPacket(Connection.java:462) ~[?:?] at net.minecraft.network.Connection.lambda$writePacket$11(Connection.java:436) ~[?:?] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-all-4.1.68.Final.jar:4.1.68.Final] at java.lang.Thread.run(Unknown Source) ~[?:?]

Here are the datapacks we use for the server (all just world generation):
https://www.planetminecraft.com/data-pack/terralith-overworld-evolved-100-biomes-caves-and-more/
https://www.planetminecraft.com/data-pack/better-mineshafts/
https://www.planetminecraft.com/data-pack/better-underwater-ruins-underwater-cities-and-cave-structures/
https://www.planetminecraft.com/data-pack/nullscape/
https://www.planetminecraft.com/data-pack/incendium-nether-expansion/

commented

You probably have a scoreboard team created which has visibility hidden option.

commented

The objectives are mostly from the datapacks as they include custom world generation, like it creates dungeons and stuff in the nether with custom bosses and enemies. The PKWAST entries are from the PK Waystones datapack (https://www.planetminecraft.com/data-pack/waystones-a-fast-way-to-travel-in-your-world-with-waypoints/)

commented

The above error is coming from ViaVersion through ProtocolLib, the only datapack that uses aboveName is waystones, but this probably not have any visibility set, so I guess. Can you run team list command and send the output here?

commented

Sure can, here's what it displays:
image

commented

The only solution that could solve this issue is to create a new option to determine if the groups should display the player's name tag or follow the visibility setting that has been set. This allows the user to choose whether or not the name tags in the tablist group follow the set visibility. So there is currently no way for you to resolve this.

commented

That is unfortunate, I will see if I can do some kind of workaround the problem. I noticed however that Bedrock clients connected to the server (via Geyser) can still see entity nametags. I'll let you know if I find some kind of fix for this, thank you for your time!

commented

In the above attached commit there will be a new option added to config to control if the name tags above player will be always visible or not if there is any team with visibility hidden. You can install the newest build from Actions page, select first one and find Artifacts.

commented

Oddly enough, EssentialsX's AFK feature seems to restore the missing player and entity nametags but is only temporary and is unpredictable as it either makes player nametags stay or disappear after leaving AFK.