Tablist System - ZeroG-Network/NeoEssentials GitHub Wiki

The NeoEssentials Tablist System provides a comprehensive, TAB-like interface with support for animated headers, footers, custom templates, and group-specific configurations.

šŸŽÆ Key Features

  • Ultra-Smooth Animations: 25ms update intervals for smooth visual effects
  • Multiple Simultaneous Animations: Use multiple <anim:name> placeholders in the same template
  • Three Independent Update Systems: Optimized for performance and responsiveness
  • Group-Specific Templates: Different designs for different player groups
  • Rich Placeholder Support: Dynamic data integration with custom placeholders
  • Hex Color Support: Full RGB color customization with &#RRGGBB format

šŸš€ Performance Architecture

Three-Tier Update System

  1. Template Switching (3000ms) - Slow cycling through different templates
  2. Placeholder Updates (250ms) - Dynamic data like player count, time, server stats
  3. Animation Frames (25ms) - Ultra-smooth animation frame updates

This separation ensures optimal performance while maintaining smooth visual effects.

šŸŽØ Animation System

Multiple Animation Support

You can use multiple animation placeholders simultaneously:

headers:
  - "&6&l✦ &b&lNeoEssentials Server &6&l✦"
  - "<anim:welcome>"
  - "&a%player%&e! <anim:server_name>"
  - "&eOnline: <anim:player_count> &7| &eTime: <anim:clock>"

footers:
  - "&eBalance: &a%balance% coins"
  - "<anim:example> &7| <anim:rainbow>"
  - "&eServer TPS: &a%tps% &7| <anim:pulse>"

Animation Placeholder Formats

  • <anim:name> - Modern format (recommended)
  • {animation:name} - Legacy format (still supported)

Creating Custom Animations

Define animations in animations.yml:

animations:
  welcome:
    interval: 15  # milliseconds between frames
    frames:
      - "&aW&7elcome"
      - "&aWe&7lcome"
      - "&aWel&7come"
      - "&aWelc&7ome"
      - "&aWelco&7me"
      - "&aWelcom&7e"
      - "&aWelcome"
  
  rainbow:
    interval: 30
    frames:
      - "&#FF0000R&#FF7F00a&#FFFF00i&#00FF00n&#0000FFb&#4B0082o&#9400D3w"
      - "&#FF7F00R&#FFFF00a&#00FF00i&#0000FFn&#4B0082b&#9400D3o&#FF0000w"
      - "&#FFFF00R&#00FF00a&#0000FFi&#4B0082n&#9400D3b&#FF0000o&#FF7F00w"

āš™ļø Configuration

Basic Tablist Settings

settings:
  update_interval: 3000  # Template switching
  placeholder_update_interval: 250  # Dynamic data updates
  enable_animations: true
  enable_headers: true
  enable_footers: true
  enable_group_specific: true
  
  # Animation intervals in ticks (1 tick = 50ms)
  header_animation_interval: 1  # 50ms
  footer_animation_interval: 1  # 50ms

Template Configuration

templates:
  headers:
    - "&6&l✦ &b&lNeoEssentials Server &6&l✦"
    - "<anim:welcome>"
    - "&a%player%&e! Welcome to the server!"
    - "&eOnline players: &a%online%/%max%"
    - "&eServer time: &a%time%"
  
  footers:
    - "&eBalance: &a%balance% coins"
    - "&eWebsite: &awww.example.com"
    - "<anim:example>"
    - "&eServer TPS: &a%tps% &7| &eMemory: &a%memory_percent%"

Group-Specific Templates

groups:
  admin:
    headers:
      - "&4&lā˜… &c&lAdmin Panel &4&lā˜…"
      - "&cOnline players: &f%online%/%max%"
      - "<anim:admin_welcome>"
    footers:
      - "&cAdmin Command Help: &f/neoessentials help"
      - "&cServer uptime: &f%uptime%"
  
  vip:
    headers:
      - "&6&l⚜ &e&lVIP Perks Active &6&l⚜"
      - "&eWelcome back, &6%player%&e!"
      - "<anim:vip_status>"
    footers:
      - "&6VIP Balance: &e%balance% coins"
      - "&6Use &e/vip help &6for perks"

šŸ”§ Advanced Features

Boss Bars

bossbars:
  global:
    - "{color:red}{style:progress}{progress:1.0}Server TPS: %tps%"
    - "{color:green}{style:notched_6}{progress:0.8}Welcome!"
  
  groups:
    admin:
      - "{color:purple}{style:progress}{progress:1.0}Admin Mode"

Custom Placeholders

The tablist system supports all NeoEssentials placeholders:

  • %player% - Player name
  • %online% - Online player count
  • %max% - Maximum player slots
  • %tps% - Server TPS
  • %time% - Current time
  • %balance% - Player balance
  • %memory_percent% - Memory usage percentage
  • Custom placeholders via API

šŸŽØ Text Formatting

Color Codes

  • &a - Green
  • &c - Red
  • &e - Yellow
  • &f - White
  • &l - Bold
  • &o - Italic

Hex Colors

  • &#FF0000 - Pure red
  • &#00FF00 - Pure green
  • &#0000FF - Pure blue
  • &#54C5EA - Custom cyan

Gradients

Combine hex colors for gradient effects:

- "&#FF0000H&#FF3300e&#FF6600l&#FF9900l&#FFCC00o &#FFFF00W&#CCFF00o&#99FF00r&#66FF00l&#33FF00d&#00FF00!"

šŸ› ļø Commands

Admin Commands

  • /tablist reload - Reload tablist configuration
  • /tablist toggle - Toggle tablist display
  • /tablist debug - Show debug information
  • /tablist test <animation> - Test specific animation

Player Commands

  • /tablist - Show current tablist info
  • /tablist animations - List available animations

šŸ“Š Performance Tips

  1. Use appropriate update intervals:

    • Fast animations (10-50ms) for smooth effects
    • Medium placeholders (200-500ms) for dynamic data
    • Slow templates (2-5 seconds) for variety
  2. Limit animation complexity:

    • Keep frame counts reasonable (5-20 frames)
    • Avoid too many simultaneous animations per player
  3. Monitor server performance:

    • Use /tablist debug to check update frequencies
    • Adjust intervals based on server capacity

šŸ” Troubleshooting

Common Issues

Animation not showing:

  • Check animation exists in animations.yml
  • Verify placeholder syntax: <anim:name>
  • Ensure animations are enabled in settings

Performance issues:

  • Increase update intervals
  • Reduce number of active animations
  • Check server TPS with /tps

Colors not working:

  • Use proper hex format: &#RRGGBB
  • Ensure client supports colors
  • Check for plugin conflicts

Debug Mode

Enable debug logging in general.toml:

debug_mode = true
tablist_debug = true

šŸ“š API Integration

For developers wanting to extend the tablist system:

// Register custom placeholder
TablistPlaceholderManager.registerPlaceholder("custom", (player) -> "Custom Value");

// Add custom animation
TablistAnimationManager.addAnimation("myanimation", animationFrames, interval);

// Update player's tablist
TablistManager.updateTablist(player);

šŸ”— Related Documentation


For more information, see the NeoEssentials Wiki or join our Discord for support.

āš ļø **GitHub.com Fallback** āš ļø