FeatherBoard Configuration - Historical

Applied By Peaches_MLG100: Feb 10, 2018 at 2:05 PM

FeatherBoard Configuration

Default configurations(top)

These are the default configuration files
Code (Text):

# ------------------------------------ #
#  FeatherBoard 4
#  Runs like a feather on your server
#  (c) Maxim Van de Wynckel
# ------------------------------------ #

# Plugin requirements:
#           (Required) MVdWPlaceholderAPI 2 or higher

# Permissions: To use the action groups give them the permission
#              featherboard.group.<group>
#              Make sure to remove them from the other groups
#              when giving a new permission.

# Variables: These variables can be used in the TEXT section
#            of both the header as the footer.
#            {PLAYER}       - Player name
#            {PLAYERNICK}   - Player nickname
#            {SERVER}       - Server name
#            {PLAYERCOUNT}  - Server player count
#            {BUNGEECOUNT}  - Bungee network player count
#            5000+ more ... see spigot page

# Formatting: These are formatting tags allowing you to format the animations
#             or placeholders.
#             Substring: This allows you to split a word (even a placeholder) in lines
#               example: <substring begin=0 end=3>Hello World</substring> = Hel
#               usage: This can be used to split placeholders when creating a typewriter
#                      or to split the colors in a placeholder.
#             Scroll: This creates a scrolling animation of the text inside it. It accepts
#                     two arguments (the length and space between scrolls).
#               example: <scroll width=20 spaces=20>&2This is a &atest</scroll>
#             PLENTY MORE! See spigot page


## Config version (DO NOT EDIT)
config: 4

## Language file
lang: 'en'

## Debug mode
debug: false

## Log to file
  enabled: true
  # Reset log on startup
  reset: true

## Update checking
# Support for older versions is not provided
  check: true

# Toggling allows you to disable the scoreboard
  # If you want the toggle to stay even when your users
  # log off you can enable this. Keep in mind that this requires a
  # MySQL or SQLite database.
  # If you are configuring the plugin for the first time it is advised
  # to stay away from these settings until you managed the scoreboard
  # set up.
  persistent: false
  # Database configuration is SIMILAR to http://wiki.bukkit.org/Bukkit.yml#database
  # with isolation, url, driver, ...
  # Database name
  database: "featherboard"
  # Database username
  username: bukkit
  # Database password
  password: walrus
  # Database driver URL
  # {DIR} will be replaced with the plugin directory
  # {NAME} will be replaced wit the plugin name
  url: jdbc:sqlite:{DIR}{NAME}.db
  # Save interval in ticks
  save-interval: 6000

# Disabled worlds. Add your world name in this list to disable it.
- 'example_world'

# Scoreboard assigning. The boards can be assigned by various ways.
# default the scoreboards will be assigned by permissions.
# You can have multiple ways of assigning a scoreboard, but
# keep in mind that it uses a "first come first served" principal
# Multiple assign methods is only recommended when using things like
# TIME or WORLD in combination with something else.
# PERMISSION       -  Assign scoreboards based on permissions
#                       This is the default setting (since 2014)
#                      featherboard.group.<scoreboard>
# GROUP              -  Assign scoreboards based on Vault groups
#                  this means the scoreboard name has to
#                  have the name of your Vault group.
# WORLD              -  Assign scoreboards based on the world
#                  the player is in.
# TIME              -   Assign the scoreboard based on the day.
#                       "day" for Day and "night" for night.
# NONE           -  Do no assign scoreboards and just rely on
#                  manual assigning (triggers, etc...)
# LANGUAGE          -   Client language (en,nl,fr) Two letter language code
# PLACEHOLDER:*        -  Assign the scoreboard based on a placeholder
#                  this method can be very intensive for certain non cached
#                  placeholders.
#                  It will look for scoreboardname.yml files matching the result
#                  of the placeholder.
#                       Replace "*" with an actual placeholder (ex. "PLACEHOLDER:{isflying}" )
#                  KEEP IN MIND: Fast switching scoreboards is not a good thing.
# SPAWN_DISTANCE    -   Assign the scoreboard based on the distance to the world's spawn
#                       Name your scoreboard: "spawn_distance_*" where * is a number
#                       representing the distance. (ex. "spawn_distance_10")
#                       The example would math the scoreboard if you are within 10 blocks
#                       to the spawn.

# GUI: This is a feature enabling a GUI to select a specific scoreboard
# The GUI will show all scoreboards you have permission to. It is not very
# configurable in the way you can't control the location or order of the scoreboards
# For a more configurable GUI I recommend DeluxeMenus
  # This is the title of the GUI
  title: "Scoreboards"
  # Size of the GUI (leave to -1 to make it dynamic)
  # Sizes: 9,27,54
  size: -1


# Placeholder settings
  # Placeholder update method
  # COMPATIBLE          - Only downloads compatible placeholders.
  # FORCE               - Force download all placeholders.
  # UPDATE_ONLY         - Only update existing downloaded placeholders.
  update-method: "COMPATIBLE"
  # Clear unused placeholders that are not enabled.
  clear-unused: true
  # Config cache only
  # This will only keep placeholders you use in the config
  # This breaks:
  # 1) MVdWPlaceholderAPI hooked plugins that make you use placeholders
  #    in their plugins.
  # 2) Plugins that add custom placeholders to MVdWPlaceholderAPI
  config-cache: false

# Scoreboards file path. This is the folder path containing the .yml files containing
# the scoreboards.
scoreboards-location: "scoreboards"

# Modules file path. This is the folder path containing the JAR files for additional
# placeholder or featherboard modules.
modules-location: "modules"

# Tweaks to increase or tune performance
  # Reset all scoreboard on startup
  # this is similar to manually deleting the scoreboard.dat
  reset-scoreboard-data: false
  # This option does not send scoreboard remove packets
  # to the client on join.
  keep-scoreboard-join: false
  # This option does not send scoreboard remove packets
  # to the client on quit. This can increase performance on servers
  # where players quit a lot (hubs, ...)
  # Removal of the plugin requires you to manually delete the scoreboard.dat in the worlds
  # /data folder
  # Enabling this can cause the scoreboard not to work anymore. Use at your own risk
  keep-scoreboard-quit: false
  # Trust or do not trust scoreboard scripts.
  # Normally you leave this to true
  # When disabled scoreboard scripts will be disabled
  trust-scoreboard-scripts: true
  # Some placeholders have a slow process behind them. Meaning they might contact a database
  # and take a while to 'resolve'. This will never cause lag since the placeholders are loaded
  # separate from the sending. But can slow down the animation because it has to wait
  # for the placeholder to be loaded. When having multiple lines like a text that shows
  # the information about the placeholders you put below it, this can cause problems.
  # Enabling this will output a message in the console and ingame to operators
  # saying when a placeholder is causing delays.
  detect-animation-lag: false
  # Putting this to true will SPAM your console with timings report per placeholder/animation
  # refresh. Used for debugging purposes.
  # This requires detect-placeholderdelay to true
  verbose-animation-timings: false
  # Show delay on join. Useful if you wish to let the user
  # enjoy a Title MOTD without having the scoreboard obstructing
  # the view.
  # Please note that there is a static show-delay build in of 5 ticks that you can
  # not change. This is because a lot of data is send in the first moment a player
  # joins.
  show-delay: 0
  # Scoreboard script engine to use
  scoreboard-script-engine: "JavaScript"
    # Scoreboard update method
    # This is the method used to send the scoreboard.
    # ANTI_FLICKER_V1   - This method works for 1.7-1.13. It will prevent the
    #                     scoreboard lines from jumping.
    #                     This is the only supported method for Cauldron servers.
    #                     Pros:
    #                     - No flickering or jumping lines
    #                     - Fast animations
    #                     - Less packets after the scoreboard is loaded
    #                     - Static line support with ~72 characters
    #                     Cons:
    #                     - This method sends more packets when the scoreboard first loads
    #                     - Maximum of 28 characters with colors
    # ANTI_FLICKER_V2   - This method works for 1.9-1.13. It will prevent the
    #                     scoreboard lines from jumping.
    #                     This method is in BETA
    #                     Pros:
    #                     - No flickering or jumping lines
    #                     - Fast animations
    #                     - Full 32 character animations
    #                     - Static line support with ~68-70 characters
    #                     Cons:
    #                     - More CPU/RAM usage than V1 due to frame buffer
    #                     - Scoreboards will have a delay of 3 ticks (not really noticeable)
    # SWITCH_LINES      - This method works for 1.7-1.13. It will reset individual
    #                     scoreboard lines that need updating. Causing jumping lines.
    # SWITCH_OBJECTIVE  - This method works for 1.9-1.13. It will swap out
    #                     the scoreboard objective. Causing flicker.
    method: 'ANTI_FLICKER_V1'
    # Animation update method
    # This is the method used to update the line animations
    # (Updating the frames, placeholders ,...)
    # EFFICIENT       - Will update the scoreboards using X workers.
    #                   The advantage is that it makes optimal use of the
    #                   processor to update the animations.
    #                   The downside is that some placeholders
    #                   may delay the scoreboard.
    #                   Use this if you have many scoreboards
    # OPTIMAL         - This default option will assign a dedicated worker
    #                   per scoreboard config. Lines are therefor synchronized.
    #                   If you have no idea what the other strategies do, use this
    # SYNCHRONOUS     - This option will update all scoreboard lines of all
    #                   scoreboards in a single worker. Meaning that for many
    #                   boards this can cause delays.
    #                   Use this if you have no more than 2 different scoreboards
    # ASYNCHRONOUS    - This option will create a task for each scoreboard line
    #                   it was default for FeatherBoard 3 and previous versions.
    #                   However it is not really optimized.
    method: 'OPTIMAL'
# Default FeatherBoard comes with a board called "default". All players have the permission
# featherboard.group.default (by default) meaning all players should see the scoreboard unless
# the permission is negated.

# Example of the use of settings
# This section is optional
# If you quickly want to change the
# the label color change it here.
# It replaces $setting_label-color$ throughout the entire config
label-color: "&e"
# Show or hide the health
# This is an example of the script
show-health: true

# Example of pre processing script
# This section is optional
script-pre: |
if (settings['show-health'] == "true"){

# This section is required. Those are your scoreboard lines
# Every section here are different lines. The first section will be used as the title
# the following sections will be used as the lines on the scoreboard (max 15)
# Just as the scoreboard names you can name these 'lines' whatever you want. But to make
# things simple I will use logical names such as "title", "spacer", "header", ...
# Every line has its own frames. The animation will loop through these frames on intervals
# that you configure below.
# Put all your frames under 'text:'. You can make as many lines as you want and use
# placeholders and preset effects.
# Keep in mind that there is a limit in line width!
# To create cool looking animations you create yourself
# you can use the graphical tool AnimationCreator
# https://www.spigotmc.org/resources/animationcreator.6001/
# For all placeholders: https://www.spigotmc.org/wiki/mvdw-placeholders/
# For all preset effects: https://www.spigotmc.org/wiki/mvdw-effects/
- '<single><delay times="10">&l><</delay></single>'
- '<single>&f&ler</single>' # <single> will allow the frame to only run ONCE
- '<single>&f&lherB</single>'
- '<single>&f&lherBo</single>'
- '<single>&f&latherBoa</single>'
- '<single>&f&leatherBoar</single>'
- ' <delay times="15">&f&lFe&4&l4&f&ltherBoard</delay>' # <delay> will repeat the line X times
#- '<glow glowsize="5">FeatherBoard</glow>' # This is the basic glow effect without custom colors
- '<glow glowsize="5" startglowcolor="&c&l" glowcolor="&4&l" endglowcolor="&c&l" normalcolor="&f&l">FeatherBoard</glow>'
# Interval is the animation interval in TICKS (20 ticks is one second).
# Every X ticks the animation goes to the next frame (see above)
# Once all frames are finished it will start over from the first one
interval: 2
# If you don't want a static order of the frames and want to show each frame at random
# you can enable this option.
random: false
# A scoreboard is dynamic. The lines can change length due to smaller placeholders or scrolling text.
# that is why it is advised to have something on your scoreboard that is bigger then all other lines.
# These lines (usually a header or footer) are also good for decoration.
- '<rainbow>&m+---------------------+</rainbow>'
interval: 10
random: true
- '&b&l> $setting_label-color$&lPlayer Info:'
interval: 100
random: false
- '&o<cmd repeatmiddle="20">{player}</cmd>'
- '&o<cmd repeatmiddle="20">{locale}</cmd>'
interval: 2
random: false
- '{ping} &7ms latency'
interval: 2
random: false
# For empty lines just add another 'section' but just don't put any text
# in it so it acts like an empty line.
frames: []
interval: 100
random: false
- '&b&l> $setting_label-color$&lNews:'
interval: 100
random: false
# Lets create some animated news
# News is something you need to write quick
# and usually you don't want to spend ages on creating
# some cool effect. That is why FeatherBoard features
# several presets you can use.
- '<scroll width="29">&cAttention! &7Please do not forget to give this plugin a &e{star_galaxy}{star_galaxy}{star_galaxy}{star_galaxy}{star_galaxy}&7 rating!</scroll>'
interval: 2 # When using preset effects. The interval will apply to that effect
# Do you want to randomize the animation frames?
random: false
# For empty lines just add another 'section' but just don't put any text
# in it so it acts like an empty line.
frames: []
interval: 100
random: false
timesplayed-label: #Switch between site, times played and health
- '&b&l> $setting_label-color$&lSite:'
- '&b&l> $setting_label-color$&lPlayed:'
- '$setting_enable-health$&b&l> $setting_label-color$&lHealth:'
interval: 100
random: false
timesplayed: #Switch between site, times played and health
- 'www.mvdw-software.com'
- '{stat_timesplayed}'
- '$setting_enable-health${healthbar}'
interval: 100
random: false
# For empty lines just add another 'section' but just don't put any text
# in it so it acts like an empty line.
frames: []
interval: 100
random: false
- '&b&l> $setting_label-color$&lServer Info:'
interval: 100
random: false
- '<repeat times=200>{usedram} &7MB &8&l/ &f{totalram} &7MB</repeat>' #Refresh the ram 200 times
- '<repeat times=100>{tps_rounded} &7TPS &7&o(Avg {avgtps_rounded})</repeat>' #Refresh the tps 100 times
interval: 1
random: false
- '{onlineplayers} &aonline players'
interval: 10
random: false
# This is the same as the header. It is not needed since you already use the header as the longest line
# but it looks cleaner having a footer.
- '<rainbow>&m+---------------------+</rainbow>'
interval: 10
random: true

Main configuration(top)

General settings(top)

This config setting will set the locale file that will be used for translations.

This applies to the log file that contains errors and other valuable information for troubleshooting problems. However when a lot of errors occur this file can become very big.

If you think you got FeatherBoard working without need for support you can turn this off.

Update checking will contact spigot to check for a new version. Operators will get a message ingame when they log in with an update notification.

Plugin specific settings(top)


The database is used to keep track of who toggled their scoreboard on/off. This is definitely not a required feature, but can be helpful.

Disabled worlds(top)

If you want to disable the scoreboard in specific worlds regardless of the scoreboard assigning method you can use this list.

Scoreboard assigning(top)

The scoreboard default assigns to the permission group (being featherboard.group.SCOREBOARDNAME). However the plugin allows for one or more different scoreboard assigning methods.

PERMISSION: Default option, users with the permission featherboard.group.NAMEOFBOARD will get the scoreboard assigned.
GROUP: This will use the Vault groups to assign a scoreboard. For example the group "moderators" will get the scoreboard names "moderators" assigned.
WORLD: This will assign the scoreboard based on the world name. The board called "world_nether" will show when the player is in the Nether world with that name.
Use no scoreboard assigning. Use either the GUI or event triggers.
{PLACEHOLDER}: This will use a placeholder to assign the scoreboard. You have to use this as: "{playername} (so don't write {placeholder}, you actually have to use a placeholder). The scoreboard will be assigned if its value is the same as the outcome of the placeholder. NOTE: This can be a performance hoggy feature if the placeholders require remote connections such as a MySQL database ,... .

When multiple of these methods are assigned they will be assigned according to the order they are in.
For example if you have 1 board called "minigames" and other boards with the group specific boards (moderator, admin, ...) and configure the assigning so:
Code (Text):
The scoreboard will always be assigned to the group EXCEPT for when the player is in the world called "minigames" - in that case the minigames board will be shown instead.

Scoreboard GUI(top)

The plugins comes with a simple GUI that can be configured to show a specific scoreboard.

Advanced settings(top)

Placeholder settings(top)

Placeholders are loaded using MVdWPlaceholderAPI. These settings provide you with
more tweaks.

force-all: Force all placeholders to be downloaded and not just the ones you have the requirements for
clear-unused: Clear unused placeholder groups. This is useful if you "disable" a lot of individual placeholder groups
config-cache: Use the placeholders in the config and remove all others that are not used. This does break some custom placeholders however.

Scoreboards location(top)

The location of the scoreboard configuration files.

Modules location(top)

The location of the FeatherBoard modules JAR's.


keep-scoreboard-join: This will not reset the scoreboard when the player joins. Normally
FeatherBoard will reset the scoreboard to make sure no other previous scoreboard plugin
tampered with it.
keep-scoreboard-quit: This will not reset the scoreboard when the player quits. It can solve
some bungeecord issues and can have a performance advantage on bungeecord servers.
It will however make the scoreboard stay on join.
detect-animation-lag: Placeholders are updated on animation updates (see more about that later). This means that if a placeholder takes too long to update it will delay the animation. This tweaks allows you to detect those delays by timing the update time. When a delay is found all your operators will receive a message ingame. Please turn this off after tweaking these problems.
verbose-animation-timings: This will log all timings (good or bad) in the console of the detect-animation-lag.
show-delay: A very important tweak. This tweak indicates the amount of ticks before FeatherBoard will send the scoreboard on join/reload. The plugin will default wait 5 ticks before sending + show delay. The reason for this delay is to make sure other important packets such as chunks,... are send before sending the scoreboard packets. It can also be useful in case you have a MOTD title that may be obstructed by the scoreboard.

These settings apply to the way the plugin updates the actual scoreboard. Previously this was similar to the "antflicker" boolean settings. But more advanced.

ANTI_FLICKER_V1: This is the default anti flicker method that was first used by Maximvdw in FeatherBoard.
ANTI_FLICKER_V2: This is a new method that is still in development. It is more resource intensive but provides longer lines.
SWITCH_LINES: This is a classic method used in old scoreboard plugins. It is still available for nostalgic reasons but not supported for new features.
SWITCH_OBJECTIVES: This is a classic method used in old scoreboard plugins. It is not supported anymore.

These settings apply to the way the plugin updates the lines on the scoreboard. These are the updates that change the placeholders or frames.

OPTIMAL: This is the default method. Every scoreboard has it's own worker that handles updates for all it's lines.
SYNCHRONOUS: All scoreboards are updated in one worker
EFFICIENT: This divides the updating over a specified amount of workers. Preferably not higher than the amount of cores available.

Scoreboard configuration(top)

Scoreboards are separated by individual files located default in the /scoreboards/ directory in the plugin directory.

The name of the files is important. This name is the name of the scoreboard, and used to assign the scoreboard to a player depending on the assignment method you configured in the main config.

Example configurations

Scoreboard lines(top)

The most important thing about the scoreboard are the scoreboard lines. The scoreboard can contain 15 lines and 1 title line.

Every line contains multiple "frames" that are looped to create an animation. The speed of this animation is indicated by the "interval" and preferably you can set it to randomize between the frames.

Code (Text):
        - 'Test'
        - 'Test1'
        - 'Test2'
       random: false
       interval: 1


Frames are the line animation frames. Previously this was called "text". Frames can make use of META data, colors and MVdW Effects .

Frame meta is created by placing |....| in front of the frames.
Code (Text):
- '|score:NUMBER|Test'
This will show a line where the red number is forced to a specific number.
You can also use placeholders.

Code (Text):
- '|NUMBER|Test'
This will show a line where the red number is forced to a specific number.
You can also use placeholders.

Code (Text):
- '|hide|Test'
This will hide the line from the scoreboard

Code (Text):
- '|show|Test'
This will show the line on the scoreboard. For now this line is not required

Code (Text):
- '|static|Test'
This will force a line to be static (longer in length). However the middle part will not animate.
The results are unpredictable and should only be used by those who know what they are doing.

Code (Text):
- '|visible:true|Test'
This will show or hide the scoreboard line depending if TRUE or FALSE. Useful for dynamic visibility

Multiple meta data can be applied by separating it with a single |
Code (Text):
- '|{usedram}|visible:true|RAM usage:
Code (Text):
- '|disabled|Test'
This frame will be ignored when loading. Useful if you want to remove frames from the lines.

Animation creator(top)

If you want an easy way to create advanced animations you can use the tool called 'AnimationCreator" created specifically for MVdW Plugins.
This is a GUI application that runs on Linux, Windows and Mac: http://www.spigotmc.org/resources/animationcreator.6001/


Frames are looped through and switch every interval in ticks.


FeatherBoard can execute scripts that are in the configuration. The script can access the Java classes of the plugin allowing you to manipulate the scoreboard using javascript.

This is useful if you have settings that dynamically change the scoreboard (like animation duration ,...).
Every script receives two variables that are pass by reference:
board: This is the instance of the be.maximvdw.featherboard.scoreboard.ScoreboardGroup you are creating.
settings: This is a Map with String as key and String as value containing the current settings.


This script is executed before the lines are added. This is useful if you want to add settings that need to replace in the scoreboard lines.

Code (Text):

script-pre: |
    var meta = board.getMeta();
    var existingSettings = meta.getSettings();
    existingSettings.put("glowspeed",(parseInt(settings["vertical-glow-interval"]) + 10).toString());


This script is execute after the lines are added. This is useful if you want to add additional lines, ...

Code (Text):

script-post: |
    var titlePart = board.getParts().get(0);


Each scoreboard can have their own settings. The settings can override default setting from the main config or add some additional options.

An important aspect of these settings is that they can also replace a specific syntax of placeholders in the lines. Making them ideal to apply color themes, ...

Code (Text):
  setting1: "test"
  setting2: "test2"

Settings that affect the behavior(top)

include-in-debug: Boolean that indicates if the scoreboard should be included in the debug.
priority: Number that indicates the priority of the scoreboard. Higher number = higher priority
event-trigger: The name of the event trigger to enable/use.
event-trigger_xxxxxx: Override the event trigger config settings where xxxxx is the setting as if it would be in the config.
scoreboard-assigning: Override the assigning method. Same as in the main config but just one.

Code (Text):
  priority: 10

Settings as placeholders(top)

Settings will replace $setting_SETTINGNAMEHERE$ in the scoreboard lines. A practical example will be showed later.

Language files(top)

Every MVdW premium plugin comes with the ability to use language files. Language files basically allow you to change the appearance or more importantly the language of the commands in the plugin.

Default the plugin is in English, however you can add more language files for different languages. On join the player's client configured language is used to use as the language. Meaning that if you configured your client language to Dutch the plugin will try to use "lang_nl.yml" as the language file.

Langue files are located in the "lang" folder of the plugin and generated on first start.