AnimatedScoreboard icon

AnimatedScoreboard -----

An animated and anti-flicker scoreboard plugin with 1500+ placeholders, effects and eventtriggers




  • This update adds support for Minecraft 1.21
  • Fixed issue where 1.19.4 was being detected as 1.20.4
----------, Jun 13, 2024

  • Added support for Minecraft version 1.20.5
----------, Apr 24, 2024

  • Fixed an error that could rarely occur when someone joined the server
  • Added compatibility with non-relocated server software
----------, Mar 22, 2024

Summary:
  • Added support for Minecraft versions 1.20.3 and 1.20.4.
  • Added option to hide the scores on servers running 1.20.3 or newer.
  • Fixed error with asb command processing.

Hiding scores on 1.20.3:
A new scoreboard config setting was added that is enabled by default on 1.20.3 or newer. This setting can be found in any newly generated scoreboard configuration or it can be added manually to older scoreboard configs.

Code (YAML):
scores :
  # Whether scores (red numbers) on server versions 1.20.3 or newer should be hidden
  hidden
: true
By default the setting will be enabled, causing the red numbers on the side of the scoreboard to be hidden entirely for servers / clients that are 1.20.3 or newer.
----------, Dec 15, 2023

  • Added support for Spigot / Minecraft 1.20.2
  • Added LuckPerms context change support. If a context change from LuckPerms grants / invokes a scoreboard-related permission then the scoreboard will update accordingly.
----------, Sep 21, 2023

  • Fixed error that could occur when using SQLite as storage
  • Fixed error caused by other plugins inspecting / modifying scoreboard packets from ASB
----------, Jun 24, 2023

Version 0.2.9:
  • Fixed issue where multiple rejoins could cause the scoreboard to vanish

Version 0.2.8:

  • Added support for Minecraft 1.20
  • Normal colors that were inside of placeholders are now also properly replaced on versions older than 1.16 when hex-in-placeholders is enabled in the main config file
  • Added hex color support to messages
  • Fixed the enabled / disabled state of a player's scoreboard not getting saved when the server was shutting down
  • Fixed issue with health display line
  • Fixed error that happened when one or more temporary lines were active while the player quit the server / the server shut down
  • Fixed error when the profile of a player was not loaded before being accessed
----------, Jun 7, 2023

  • Added support for Minecraft 1.20
  • Normal colors that were inside of placeholders are now also properly replaced on versions older than 1.16 when hex-in-placeholders is enabled in the main config file
  • Added hex color support to messages
  • Fixed the enabled / disabled state of a player's scoreboard not getting saved when the server was shutting down
  • Fixed issue with health display line
  • Fixed error that happened when one or more temporary lines were active while the player quit the server / the server shut down
  • Fixed error when the profile of a player was not loaded before being accessed
----------, Jun 7, 2023

Version 0.2.7:
  • Fix NPE when loading the plugin on a server that had triggers disabled
Version 0.2.6:
  • This update adds full support for Minecraft 1.19
  • Introduces two additional scoreboard syntaxes for an easier set up process (more on that later)
  • Fixed group permission updates not causing a scoreboard change when using LuckPerms
  • Fixed scores always starting with 16 if no score was defined
  • Fix disconnect if more than 15 board lines were created
  • Fix error when hex colors were used in the scroll tag
  • Fixed couple of errors that could happen when using the API
  • Fixed rare exception when someone logged off before the scoreboard finished ticking
Additional scoreboard syntax:
Instead of the elaborate scoreboard syntax that has been part of ASB since the beginning, two additional formats are introduced this update to make it easier to set up certain types of scoreboards.

We will set up the following scoreboard with all three formats that are now supported by ASB:
[​IMG]

The old format remains unchanged and is still usable like normal. As a reference we have provided the configuration set up that yields the scoreboard above.
Code (YAML):
display:
    title
:
      text
:
     - '&lAnimatedScoreboard'
      random
: false
      interval
: 2
    line-1
:
      text
:
     - ''
      random
: false #optional
      interval
: 1
      score
: 6 #optional
    line-2
:
      text
:
     - 'Welcome to example.com!'
      interval
: 1
    line-3
:
      text
:
     - ''
      interval
: 1
    line-4
:
      text
:
      - 'Balance
: &a$%vault_eco_balance_formatted%'
      interval
: 1
    line-5
:
      text
:
      - 'Online players
: &a%server_online%'
      interval
: 1
    line-6
:
      text
:
     - ''
      interval
: 1
    line-7
:
      text
:
     - '&eplay.example.com'
      interval
: 1

Compact list syntax:
Usefull if you only want to have static lines with placeholders. With this you only have to create a single list that contains at most 16 lines: 1 title and up to 15 board lines. Each line that has a placeholder is updated 20 times a second.

To get the scoreboard from above using this syntax you need to have the following configuration setup:
Code (YAML):
#The first line is the title, the rest after that is the board that is display in game
display
:
- '&lAnimatedScoreboard'
- ''
- 'Welcome to example.com!'
- ''
- 'Balance
: &a$%vault_eco_balance_formatted%'
- 'Online players
: &a%server_online%'
- ''
- '&eplay.example.com'
 
Title separated lists:
This syntax gives a bit more freedom than the previous syntax as it has a separate list for the title. This means that the title can have some animations if that is desired. The title can have it's own update interval but all other lines that have placeholders are updated 20 times a second.

To achieve the example scoreboard with this syntax we have to create the following scoreboard file:
Code (YAML):
display :
  # The update interval for the title in ticks
  title-interval
: 2
  # The title lines
  title
:
 - "&lAnimatedScoreboard"
  # The board lines
  board
:
 - ''
  - 'Welcome to example.com!'
  - ''
  - 'Balance
: &a$%vault_eco_balance_formatted%'
  - 'Online players
: &a%server_online%'
  - ''
  - '&eplay.example.com'
 
----------, Jun 8, 2022

Summary:
  • This update adds full support for Minecraft 1.19
  • Introduces two additional scoreboard syntaxes for an easier set up process (more on that later)
  • Fixed group permission updates not causing a scoreboard change when using LuckPerms
  • Fixed scores always starting with 16 if no score was defined
  • Fix disconnect if more than 15 board lines were created
  • Fix error when hex colors were used in the scroll tag
  • Fixed couple of errors that could happen when using the API
  • Fixed rare exception when someone logged off before the scoreboard finished ticking
Additional scoreboard syntax:
Instead of the elaborate scoreboard syntax that has been part of ASB since the beginning, two additional formats are introduced this update to make it easier to set up certain types of scoreboards.

We will set up the following scoreboard with all three formats that are now supported by ASB:
[​IMG]

The old format remains unchanged and is still usable like normal. As a reference we have provided the configuration set up that yields the scoreboard above.
Code (YAML):
display:
    title
:
      text
:
     - '&lAnimatedScoreboard'
      random
: false
      interval
: 2
    line-1
:
      text
:
     - ''
      random
: false #optional
      interval
: 1
      score
: 6 #optional
    line-2
:
      text
:
     - 'Welcome to example.com!'
      interval
: 1
    line-3
:
      text
:
     - ''
      interval
: 1
    line-4
:
      text
:
      - 'Balance
: &a$%vault_eco_balance_formatted%'
      interval
: 1
    line-5
:
      text
:
      - 'Online players
: &a%server_online%'
      interval
: 1
    line-6
:
      text
:
     - ''
      interval
: 1
    line-7
:
      text
:
     - '&eplay.example.com'
      interval
: 1

Compact list syntax:
Usefull if you only want to have static lines with placeholders. With this you only have to create a single list that contains at most 16 lines: 1 title and up to 15 board lines. Each line that has a placeholder is updated 20 times a second.

To get the scoreboard from above using this syntax you need to have the following configuration setup:
Code (YAML):
#The first line is the title, the rest after that is the board that is display in game
display
:
- '&lAnimatedScoreboard'
- ''
- 'Welcome to example.com!'
- ''
- 'Balance
: &a$%vault_eco_balance_formatted%'
- 'Online players
: &a%server_online%'
- ''
- '&eplay.example.com'
 
Title separated lists:
This syntax gives a bit more freedom than the previous syntax as it has a separate list for the title. This means that the title can have some animations if that is desired. The title can have it's own update interval but all other lines that have placeholders are updated 20 times a second.

To achieve the example scoreboard with this syntax we have to create the following scoreboard file:
Code (YAML):
display :
  # The update interval for the title in ticks
  title-interval
: 2
  # The title lines
  title
:
 - "&lAnimatedScoreboard"
  # The board lines
  board
:
 - ''
  - 'Welcome to example.com!'
  - ''
  - 'Balance
: &a$%vault_eco_balance_formatted%'
  - 'Online players
: &a%server_online%'
  - ''
  - '&eplay.example.com'
 
----------, Jun 8, 2022

  • This update adds full support for 1.18 Minecraft servers
----------, Nov 30, 2021

  • This update adds full support for 1.17 Minecraft servers.
  • Placeholders may now contain RGB color codes as well which will be translated to the correct color automatically. This behaviour can be disabled in the config.yml of the plugin but is enabled by default:
Code (YAML):
# Attempt to parse hex colors inside of placeholders.
hex-in-placeholders
: true
  • Added the scoreboard state to the /asb debug command.
----------, Jul 2, 2021

Better compatibility:
- AnimatedScoreboard will now let other plugins utilize the sidebar and once they are done it will return back like usual.
- Here is an example of ASB switching to the mcMMO scoreboard and then returning back to ASB again:

[​IMG]

ASB PlaceholderAPI placeholders:
- AnimatedScoreboard has supported PlaceholderAPI placeholders from the very first version but never had its own placeholders; Now it does!
- This version contains two placeholders: %animatedscoreboard_enabled% which returns whether or not the scoreboard is enabled for that player. And %animatedscoreboard_scoreboard% which returns the name of the scoreboard they have currently displayed.
- These placeholders are directly included inside of ASB and do not require a PlaceholderAPI pack to be downloaded.
- Both placeholders have configurable return values which can be changed in the new placeholders.yml file. In this file you can set what string should be returned when they have a scoreboard enabled, disabled or they do not have any scoreboard active currently. You can also set a friendly scoreboard name for each enabled scoreboard! This file may look as follows:
Code (YAML):
scoreboard:
  names
:
    # Value returned by %animatedscoreboard_scoreboard% when they are viewing scoreboard_name
    scoreboard_name
: "&aScoreboard Name"
  # Value returned by %animatedscoreboard_enabled% when they have the scoreboard disabled
  disabled
: '&cDisabled'
  # Value returned by %animatedscoreboard_enabled% when they have the scoreboard enabled
  enabled
: '&a&lEnabled'
  # Value returned by %animatedscoreboard_scoreboard% when they have no scoreboard active
  none-active
: '&7None'

Other improvements and bug fixes:
- Placeholders inside of the gradient tag now update correctly.
- Fixed a long-time issue with Paper and triggers enabled where it would sometimes disconnect players during their login process.
- Fixed an issue where it would lose track of a player if there was a cancelled kick attempt.
- Improved compatibility with other plugins using fake players with the same name.
- Added permissions to /asb help and /asb info which are animatedscoreboard.help and
animatedscoreboard.info respectively.
- Fixed an issue where in certain situation it would try to remove the scoreboard while it was ticking resulting in an error.
- If no score was provided for a line, then it would calculate the incorrect score for that line; this has been addressed in this update.
----------, Feb 12, 2021

Gradient improvements:
- You can now use all chat colours and formatting effects inside of a gradient tag.
- Use &r to reset the colour and formatting back to the default gradient tag.
- This makes lines like this possible:
[​IMG]
Code (YAML):
"<gradient start=&#ff0000 end=&#0000ff>Long line of text that has a &n&l&ogradient&r starting from &lff0000&r all the way to &l0000ff&r. &7+&r It also supports &nnormal&r coloring!</gradient>"


Placeholder error handling:

- If a placeholder in a line causes an error then the plugin will now give a better explanation about what caused it and exactly which line caused it for which player.
- Whenever a placeholder in a line causes more than two errors that line will no longer attempt to replace the placeholders and the placeholder will appear as plaintext to avoid one placeholder filling up the entire console with errors.
Code (Text):
[AnimatedScoreboard] PlaceholderAPI caused an error while parsing line "&c&lWelcome %player_null_test%" for JasperJH. This is not an issue with AnimatedScoreboard and should instead be fixed by the maintainer of the placeholder pack you are trying to use.
java.lang.NullPointerException
    at com.extendedclip.papi.expansion.player.PlayerExpansion.onRequest(PlayerExpansion.java:139)
    at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:234)
    at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:375)
    at me.jasperjh.animatedscoreboard.core.PlaceholderHandler.replacePlaceholderAPI(PlaceholderHandler.java:68)
    at me.jasperjh.animatedscoreboard.core.PlaceholderHandler.replaceBoth(PlaceholderHandler.java:62)
    at me.jasperjh.animatedscoreboard.core.PlaceholderHandler.replacePlaceholdersThrows(PlaceholderHandler.java:38)
    at me.jasperjh.animatedscoreboard.objects.PlayerScoreboardLine.update(PlayerScoreboardLine.java:123)
    at me.jasperjh.animatedscoreboard.objects.PlayerScoreboard.update(PlayerScoreboard.java:96)
    at me.jasperjh.animatedscoreboard.objects.ScoreboardPlayer.tickScoreboards(ScoreboardPlayer.java:417)
    at me.jasperjh.animatedscoreboard.core.PlayerScoreboardHandler.lambda$init$1(PlayerScoreboardHandler.java:174)
    at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftTask.run(CraftTask.java:99)
    at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54)
    at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)
[AnimatedScoreboard] PlaceholderAPI caused an error while parsing line "&c&lWelcome %player_null_test%" for JasperJH. This is not an issue with AnimatedScoreboard and should instead be fixed by the maintainer of the placeholder pack you are trying to use.
java.lang.NullPointerException
    at com.extendedclip.papi.expansion.player.PlayerExpansion.onRequest(PlayerExpansion.java:139)
    at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:234)
    at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:375)
    at me.jasperjh.animatedscoreboard.core.PlaceholderHandler.replacePlaceholderAPI(PlaceholderHandler.java:68)
    at me.jasperjh.animatedscoreboard.core.PlaceholderHandler.replaceBoth(PlaceholderHandler.java:62)
    at me.jasperjh.animatedscoreboard.core.PlaceholderHandler.replacePlaceholdersThrows(PlaceholderHandler.java:38)
    at me.jasperjh.animatedscoreboard.objects.PlayerScoreboardLine.update(PlayerScoreboardLine.java:123)
    at me.jasperjh.animatedscoreboard.objects.PlayerScoreboard.update(PlayerScoreboard.java:96)
    at me.jasperjh.animatedscoreboard.objects.ScoreboardPlayer.tickScoreboards(ScoreboardPlayer.java:417)
    at me.jasperjh.animatedscoreboard.core.PlayerScoreboardHandler.lambda$init$1(PlayerScoreboardHandler.java:174)
    at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftTask.run(CraftTask.java:99)
    at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54)
    at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)
[AnimatedScoreboard] Because the placeholder(s) in this line have exceeded the maximum number of exceptions AnimatedScoreboard will not attempt to load the placeholders anymore!


Other improvements:
- Previously the messages.yml file would only be populated whenever a message from that file was used. This is now fixed and the file will properly generate whenever the server is started for the first time.
- Added some missing permissions to the plugin.yml.

----------, Nov 23, 2020

General improvements:
  • Titles are now no longer limited to 128 characters on 1.13 and have support for unlimited characters just like all of the other lines
  • Added support for MVdWPlaceholderAPI so those placeholders can now be used as well

New gradient tag:
  • This new tag can only be used on 1.16+ servers because it makes use of the hex colours that were added in Minecraft 1.16
  • <gradient start=&#ff0000 end=&#0000ff>text</gradient> will create a gradient starting from color ff0000 for the first character and slowly transition to 0000ff for the last character
  • It will automatically scale according to the number of characters that are used in that line as shown in the image below

[​IMG]

Command improvements:
  • All commands can now be executed by the console as well​
  • The toggle and switch subcommands now both support a target player​
  • Below is a picture of all of the commands. Square brackets mean that the argument is optional and can be left out if you don't need it. Angle brackets mean that the argument has to be there otherwise, the command cannot execute.​
[​IMG]
----------, Oct 17, 2020

Full 1.16 support:
- Every version of 1.16 is now fully supported and this brings some awesome features such as RGB support.
- The RGB colours are represented by their hex value prefixed by a &. So if we want to represent red we use: &#ff0000Red text. This is of course not limited to red, simply look up the hex colour of a colour you like and put a & in front of it to use it on the scoreboard!
- With a little bit more time you can create awesome gradients like this:
[​IMG]


Scoreboard switching based on permission changes:
- Whenever a permission that is assigned to a scoreboard is granted to a player they will automatically switch to that scoreboard if it has a higher priority than the currently displayed scoreboard. And they will switch off a scoreboard whenever the permission required to view that scoreboard is revoked.
- AnimatedScoreboard currently detects permission updates from LuckPerms, GroupManager and zPermissions and more will be added on request.

No more line length limit on 1.13+:
- Removed the line length limit entirely on server version 1.13 or newer. This means that you can now create lines that span across the entire screen.
[​IMG]

Add multiple GLOBAL scoreboards:
- You can now set up multiple GLOBAL scoreboards instead of being limited to just one. They also support permissions just like any other scoreboard! This means that a setup as shown below is now valid. If a player is in the creative world they will get the creativescoreboard. But when they are in any other world they will get the best fitting scoreboard that is listed as a global scoreboard.
Code (YAML):
worlds:
  global
:
 - ownerscoreboard
  - adminscoreboard
  - defaultscoreboard
  creative
:
 - creativescoreboard
permissions
:
  ownerscoreboard
: animatedscoreboard.owner
  adminscoreboard
: animatedscoreboard.admin

Other notable improvements:
- Scoreboards will now use a lot less bandwidth and only resend lines if something has changed
- On older versions there could be a small flicker whenever a scoreboard switched, this has now been removed entirely
----------, Sep 2, 2020

Bugs fixed:
  • Fixed '/asb reload' not resending the scoreboards after it was done reloading
  • Fixed an issue where joining would sometimes throw an error

Improvements:
  • When something causes an error the plugin will now try to resend the scoreboard

New ideas or feedback is always welcome!
----------, May 17, 2020

AnimatedScoreboard is now fully compatible with other plugins (e.g. Nametag or Tablist plugins):
  • Reworked a big part of the scoreboard handling to make it fully compatible with other (scoreboard) plugins. Other plugins will no longer interfere with the scoreboard of this plugin and vice versa.

Added possibility to hide messages:
  • Messages that are empty in the messages.yml file will now no longer be sent to the player
  • Example: when you use '/asb switch <scoreboard>' it will no longer send the player a message if you leave the message empty in the config:
Code (YAML):
switch :
  # No switch message will be sent to the player
  success
: ''

Ideas you would like to see and feedback are always welcome!
----------, May 17, 2020

Bugs fixed:
  • Combining the force-legacy mode of ASB with ProtocolSupport would result in the scoreboard not showing some characters in the middle of the line for Minecraft clients under 1.13. This issue has now been resolved.
----------, May 5, 2020

Added force-legacy option:
  • You should only enable this option if you're using a >1.13 server.jar but use a protocol changing plugin (e.g. ProcotocolSupport) to allow legacy clients (<1.13)
  • Enabling that option will force the plugin to use a scoreboard that is compatible with all Minecraft client versions (1.8 - 1.15).
  • This option is disabled by default but can be enabled in the config.yml
Code (YAML):
#Here you can set per world scoreboards <worldname>:<filename>
#If you don't add a world here in will not have a scoreboard in that world!
#World has 2 scoreboards, it will activate them based on how the are
#listed, in this example it will first look if players can have adminboard and if
#not switch to defaultscoreboard
worlds
:
  global
: globalscoreboard
  world
:
 - adminboard
  - defaultscoreboard
  world_the_end
: endscoreboard
  world_nether
: netherscoreboard
#Now only players with the permission animatedscoreboard.test will get the scoreboard
permissions
:
  adminboard
: animatedscoreboard.test


#If this is set to true it will try to use PlaceholderAPI placeholders
placeholderapi
: true
#If this is set to true it will check on SpigotMC if there is a new version available for the plugin and notify you!
check_updates
: true
#When this is true it will send info messages to the console, this is more usefull if something is going wrong
debug_mode
: false
#If this is disabled it won't check for updates on spigot
check_updates
: true
#This will enable the event triggers, if this is set to false the event triggers won't work
enable-triggers
: false

# What data storage should we use:
# - YAML     : stores the player data in human readable form in playerdata.yml
# - SQLITE    : stores the player data in a local SQLite database called playerdata-sqlite.db
player-storage
: SQLITE

# Only enable this if you're running a 1.13+ server.jar but still accept clients below 1.13
force-legacy
: false

Other improvements:
  • Fixed an issue when players joined before the plugin was fully loaded. It will now work as intended.
  • Fixed an issue when enabling triggers by using /asb reload
  • Fixed a warning that would appear when using this plugin on PaperMC
----------, May 5, 2020

Trigger improvements:
  • If a trigger is active and another trigger is called the plugin will now switch correctly to the new trigger.
  • The trigger.yml file is now only ignored if it is the default file. Before it was always ignored causing some people to think the triggers were broken.
  • Triggers with a -1 stay time will now stay until another trigger is called or till the player switches worlds.
  • Added a reset-on-trigger option in the trigger files. This option is useful when you want to change how the scoreboard interacts when a trigger scoreboard is active and the SAME trigger is called again. Setting it to true will reset the entire scoreboard (starting from 'frame 1') while setting it to false will simply reset the timer.
  • Triggers now support asynchronous events.
Example of what is possible with the new trigger system:
[​IMG]


New default trigger scoreboard:
Code (YAML):
#The event that will trigger this scoreboard with full package name and classname
event
: org.bukkit.event.player.PlayerJoinEvent

#It will look for this method when getting the player to target, so if the player method is getPlayer() you put getPlayer
#You are able to find the method in the javadoc of that plugin, most of them will just use getPlayer as method
target-player
: getPlayer

#This is the scoreboard that will be displayed when the trigger is called
trigger-scoreboard
: joinscoreboard

#For how long will the triggered scoreboard be displayed in ticks. 20 being 1 second
stay-time
: 200

#If the event is trigger more than once during the stay time should it reset the entire scoreboard:
# true will reset the entire scoreboard (starting from frame 0 again)
# false will just reset the timer
reset-on-trigger
: false

Ideas you would like to see and feedback are always welcome!

----------, Feb 25, 2020

Quick bugfix 0.1.4:
  • Scoreboards would load out of order resulting in the wrong scoreboard being chosen.


Update 0.1.3:
  • Added full support for Spigot versions 1.8 - 1.15, this includes scoreboard text up to 128 characters per line for 1.13+
  • Improved performance, the plugin will probably not even show up in /timings.
  • Updated bStats to the latest version
  • Added player data storage options in the config. You're now able to choose if the player data should be stored in a YAML file or in an SQLite database, this can be changed in the config.yml
  • Added tab completion to the /asb command
  • Bugfix: Scoreboard wouldn't always show up correctly when players joined, this is now fixed
  • Bugfix: '/asb switch' now detects the correct active scoreboard
  • Bugfix: Colours would sometimes not appear around the 16 character mark, this has been fixed
  • Bugfix: Multiple scoreboards with the same name in different worlds wouldn't work correctly when using /asb switch, this issue has been fixed in this version

It's been a while since I updated this plugin but I am glad to be back! If you encounter any issues or want to request new features, just PM on here and I will get back to you!
----------, Jan 28, 2020

Update:

  • Added full support for Spigot versions 1.8 - 1.15, this includes scoreboard text up to 128 characters per line for 1.13+
  • Improved performance, the plugin will probably not even show up in /timings.
  • Updated bStats to the latest version
  • Added player data storage options in the config. You're now able to choose if the player data should be stored in a YAML file or in an SQLite database, this can be changed in the config.yml
  • Added tab completion to the /asb command
  • Bugfix: Scoreboard wouldn't always show up correctly when players joined, this is now fixed
  • Bugfix: '/asb switch' now detects the correct active scoreboard
  • Bugfix: Colours would sometimes not appear around the 16 character mark, this has been fixed
  • Bugfix: Multiple scoreboards with the same name in different worlds wouldn't work correctly when using /asb switch, this issue has been fixed in this version

It's been a while since I updated this plugin but I am glad to be back! If you encounter any issues or want to request new features, just PM on here and I will get back to you!
----------, Jan 28, 2020

Update:

  • Fixed NullPointerException when doing /asb list when the triggers were disabled
  • The stay attribute of the update tag now automatically uses the line's interval if it is not set
  • Added a new tag: health
Tags:
  • The health tag comes with 4 arguments: full (default: &4, half (default: &c), empty (default: &f) and update (default: 5). Full indicates the part of the healthbar that is still full. If there is half a hearth than half will be the color of that character. When the health is empty the color of empty will be used. Update indicates how often the health bar will refresh.
  • If you use the default health arguments:
    Code (YAML):
    <health>❤</health>
  • It will display the following on the scoreboard:
  • ❤❤❤❤❤❤❤❤❤❤ (when full)
  • ❤❤❤❤❤❤❤❤❤ (when you have 7.5 hearts, notice the two white ❤ at the end)
----------, Jan 26, 2018

Bug fix:
  • Fixed a bug where disabling the trigger would throw an error when reload the plugin and/or server!
V 0.1.0 Update:

  • The EventTriggers are now fully functional, without interfering with any other plugin such as PermissionsEx or WorldEdit!
  • Added bStats to see how many servers use my plugin, along with if the server has event-triggers and placeholderapi enabled.
  • Update the version check to spigot's new api
  • Added a new tag: Repeat
  • The scoreboard now correctly works along side other scoreboard plugins like MCMMO who temporarly replace the scoreboard.
  • A lot of different bugfixes
  • Added an extra information command to see which version your server is running
  • The tags will now automatically refer to a default value when a certain attribute is not set
  • Placeholders can now also be used as tag attributes, as long as they represent a number as a placeholder. (e.g. : %player_health%)
  • The score of a line can also be a placeholder that represents a number
  • You can now disable the use of PlaceholderAPI even when it is an active plugin on the server
  • Added a GLOBAL keyword, this is the scoreboard that will be used when there is no other scoreboard active in that world. You can also switch to it by doing '/asb switch '<global_scoreboard_name>''. This scoreboard can be set just like any other scoreboard, instead of the world name you just use 'global' and it will automatically assign it
  • Added an API for other plugins to use, with this api you can replace lines, switch scoreboards, add a custom tag to the scoreboard and much more!
  • Changed a lot about how scoreboards and lines load from the config.
Bug fixes:

  • Fixed a bug where lines with the same score wouldn't show up
  • Fixed a bug where empty lines wouldn't show up
  • Fixed a bug where some random scoreboard lines would show directly after a restart
  • Fixed a bug where it would take a couple of seconds for the scoreboard to show up after a restart
  • The reload command now does what it is supposed to do. Reloading all triggers and scoreboards
  • Fixed a bug where triggers wouldn't work after a restart


Tags:

  • There is now a repeat tag that comes with just one attribute: times, which indicates how many times it should repeat the text.
  • The update tag now has two attributes: ticks and stay. The new stay attribute indicates how long the line should stay before going to the next line!
The new API:
Code (Java):
AnimatedScoreboardAPI api = AnimatedScoreboard. loadAPI (pluginInstance ) ;

//It will always return an optional and the developer has to check if the ScoreboardPlayer or PlayerScoreboard object is returned!
Optional <ScoreboardPlayer > sp = api. getScoreboardPlayer (player. getUniqueId ( ) ) ;
Optional <PlayerScoreboard > ps = api. getPlayerScoreboard (player. getUniqueId ( ) ) ;

//Checking if the scoreboard is present
...
//After making sure that they are both present you can change some things in the scoreboard or switch the scoreboard completely!
PlayerScoreboard playerScoreboard = ps. get ( ) ;


/**
     * Replaces or adds a line to the scoreboard of this player. It will replace
     * a line with the same score or when there is no line with that score it
     * will add a new line
     *
     * @param score
     *            The score of the line you want to replace or add as an extra
     * @param text
     *            The text you want to new line to display, this can also be
     *            tags
     * @param update
     *            How often you want to line to update in ticks
     * @param time
     *            For how long you want this line to stay in ticks
     */

playerScoreboard. replace ( int score, String text, int update, long time ) ;
   

    /**
     * Replaces or adds a line to the scoreboard of this player. It will replace
     * a line with the same score or when there is no line with that score it
     * will add a new line
     *
     * @param line
     *            The line you want to replace
     * @param text
     *            The text you want to new line to display, this can also be
     *            tags
     * @param update
     *            How often you want to line to update in ticks
     * @param time
     *            For how long you want this line to stay in ticks
     */

playerScoreboard. replace ( Line line, String text, int update, long time ) ;
 

  /**
     * Replaces or adds a line to the scoreboard of this player. It will replace
     * a line with the same score or when there is no line with that score it
     * will add a new line
     *
     * @param line
     *            The line you want to replace
     * @param tag
     *            The line will be added/replaced based on what the tag is
     * @param update
     *            How often you want to line to update in ticks
     * @param time
     *            For how long you want this line to stay in ticks
     */

playerScoreboard. replace ( Line line, PlayerScoreboardTag tag, int update, long time ) ;
Let's give a simple example of replacing a certain line of the scoreboard with another line when a player interacts with a villager:
Code (Java):
    @EventHandler
    public void onInteract (PlayerInteractEntityEvent event ) {
        Player player = event. getPlayer ( ) ;
        Entity entity = event. getRightClicked ( ) ;

        if ( ! (entity instanceof Villager ) )
            return ;

        Optional <PlayerScoreboard > ps = api. getPlayerScoreboard (player. getUniqueId ( ) ) ;
        // The player doesn't have any scoreboards active at this time!
        if ( !ps. isPresent ( ) )
            return ;

        PlayerScoreboard playerScoreboard = ps. get ( ) ;
        TagAttributes tagAttributes = LineType. SCROLL. newAttributes ( ) ;
        PlayerScoreboardTag tag = LineType. SCROLL. newTag (tagAttributes, "Hello &a%player_name%&r, you interacted with a villager!" ) ;
        playerScoreboard. replace ( Line. TITLE, tag, 5, 200 ) ;
    }
----------, Jan 14, 2018

Update:

  • The EventTriggers are now fully functional, without interfering with any other plugin such as PermissionsEx or WorldEdit!
  • Added bStats to see how many servers use my plugin, along with if the server has event-triggers and placeholderapi enabled.
  • Update the version check to spigot's new api
  • Added a new tag: Repeat
  • The scoreboard now correctly works along side other scoreboard plugins like MCMMO who temporarly replace the scoreboard.
  • A lot of different bugfixes
  • Added an extra information command to see which version your server is running
  • The tags will now automatically refer to a default value when a certain attribute is not set
  • Placeholders can now also be used as tag attributes, as long as they represent a number as a placeholder. (e.g. : %player_health%)
  • The score of a line can also be a placeholder that represents a number
  • You can now disable the use of PlaceholderAPI even when it is an active plugin on the server
  • Added a GLOBAL keyword, this is the scoreboard that will be used when there is no other scoreboard active in that world. You can also switch to it by doing '/asb switch '<global_scoreboard_name>''. This scoreboard can be set just like any other scoreboard, instead of the world name you just use 'global' and it will automatically assign it
  • Added an API for other plugins to use, with this api you can replace lines, switch scoreboards, add a custom tag to the scoreboard and much more!
  • Changed a lot about how scoreboards and lines load from the config.
Bug fixes:
  • Fixed a bug where lines with the same score wouldn't show up
  • Fixed a bug where empty lines wouldn't show up
  • Fixed a bug where some random scoreboard lines would show directly after a restart
  • Fixed a bug where it would take a couple of seconds for the scoreboard to show up after a restart
  • The reload command now does what it is supposed to do. Reloading all triggers and scoreboards
  • Fixed a bug where triggers wouldn't work after a restart


Tags:
  • There is now a repeat tag that comes with just one attribute: times, which indicates how many times it should repeat the text.
  • The update tag now has two attributes: ticks and stay. The new stay attribute indicates how long the line should stay before going to the next line!
The new API:
Code (Java):
AnimatedScoreboardAPI api = AnimatedScoreboard. loadAPI (pluginInstance ) ;

//It will always return an optional and the developer has to check if the ScoreboardPlayer or PlayerScoreboard object is returned!
Optional <ScoreboardPlayer > sp = api. getScoreboardPlayer (player. getUniqueId ( ) ) ;
Optional <PlayerScoreboard > ps = api. getPlayerScoreboard (player. getUniqueId ( ) ) ;

//Checking if the scoreboard is present
...
//After making sure that they are both present you can change some things in the scoreboard or switch the scoreboard completely!
PlayerScoreboard playerScoreboard = ps. get ( ) ;


/**
     * Replaces or adds a line to the scoreboard of this player. It will replace
     * a line with the same score or when there is no line with that score it
     * will add a new line
     *
     * @param score
     *            The score of the line you want to replace or add as an extra
     * @param text
     *            The text you want to new line to display, this can also be
     *            tags
     * @param update
     *            How often you want to line to update in ticks
     * @param time
     *            For how long you want this line to stay in ticks
     */

playerScoreboard. replace ( int score, String text, int update, long time ) ;
   

    /**
     * Replaces or adds a line to the scoreboard of this player. It will replace
     * a line with the same score or when there is no line with that score it
     * will add a new line
     *
     * @param line
     *            The line you want to replace
     * @param text
     *            The text you want to new line to display, this can also be
     *            tags
     * @param update
     *            How often you want to line to update in ticks
     * @param time
     *            For how long you want this line to stay in ticks
     */

playerScoreboard. replace ( Line line, String text, int update, long time ) ;
 

  /**
     * Replaces or adds a line to the scoreboard of this player. It will replace
     * a line with the same score or when there is no line with that score it
     * will add a new line
     *
     * @param line
     *            The line you want to replace
     * @param tag
     *            The line will be added/replaced based on what the tag is
     * @param update
     *            How often you want to line to update in ticks
     * @param time
     *            For how long you want this line to stay in ticks
     */

playerScoreboard. replace ( Line line, PlayerScoreboardTag tag, int update, long time ) ;
Let's give a simple example of replacing a certain line of the scoreboard with another line when a player interacts with a villager:
Code (Java):
    @EventHandler
    public void onInteract (PlayerInteractEntityEvent event ) {
        Player player = event. getPlayer ( ) ;
        Entity entity = event. getRightClicked ( ) ;

        if ( ! (entity instanceof Villager ) )
            return ;

        Optional <PlayerScoreboard > ps = api. getPlayerScoreboard (player. getUniqueId ( ) ) ;
        // The player doesn't have any scoreboards active at this time!
        if ( !ps. isPresent ( ) )
            return ;

        PlayerScoreboard playerScoreboard = ps. get ( ) ;
        TagAttributes tagAttributes = LineType. SCROLL. newAttributes ( ) ;
        PlayerScoreboardTag tag = LineType. SCROLL. newTag (tagAttributes, "Hello &a%player_name%&r, you interacted with a villager!" ) ;
        playerScoreboard. replace ( Line. TITLE, tag, 5, 200 ) ;
    }
----------, Jan 14, 2018

Warning: PEX NOT SUPPORTED YET!

Update:
  • Added event triggers
  • Added several different messages
  • Fixed bug when the scoreboard didn't load correctly when there was a retry
The event triggers:
  • You will notice that after the first run there will be a new option in the main config.yml file called 'enable-triggers'. By default it will be set to false and the triggers won't work!
  • After setting it to true and reloading the server there will be a new folder called /triggers/. In here you will be able to find a default file. called 'trigger.yml', this file will not load as a trigger but is there just as an example!
  • This file will provide you with a basic example of how to make your own triggers
Code (YAML):
#The event that will trigger this scoreboard with full package name and classname
event
: org.bukkit.event.player.PlayerJoinEvent

#It will look for this method when getting the player to target, so if the player method is getPlayer() you put getPlayer
#You are able to find the method in the javadoc of that plugin, most of them will just use getPlayer as method
target-player
: getPlayer

#This is the scoreboard that will be displayed when the trigger is called
trigger-scoreboard
: joinscoreboard

#For how long will the triggered scoreboard be displayed in ticks. 20 being 1 second
stay-time
: 200
 

  • Here you can see all the different option of the trigger.yml file. You will now be able to copy that file, rename it to for example 'blocktrigger.yml' and change the code so it will fire when the BlockBreakEvent is called. The triggerscoreboard is just a file that is in the normal scoreboard folder with the other scoreboards
The trigger file (within the /triggers/ folder) called blocktrigger.yml:
Code (YAML):
event : org.bukkit.event.block.BlockBreakEvent
target-player
: getPlayer
trigger-scoreboard
: blockscoreboard
stay-time
: 100
The scoreboard file (within the /scoreboards/ folder) called blockscoreboard.yml:
Code (YAML):
display:
  title
:
    text
:
   - '&cBLOCK BREAK EVENT'
    - '&lBLOCK BREAK EVENT'
    random
: false
    interval
: 10
  line-1
:
    text
:
   - '                                           '
    random
: false
    interval
: 200
    score
: 15
  line-2
:
    text
:
   - You broke a block!
    random
: false
    interval
: 5
    score
: 14
 
As you can see the blockscoreboard is just like any other scoreboard you would create, the only difference is that it will only be displayed after the BlockBreakEvent happened for 5 seconds and after that it will change back to the normal scoreboard in that world!

Config:
  • There is now an option in the config to disable the triggers, this is called 'enable-triggers' by default set to false!
  • Added 4 new messages for when there is an error with the new event trigger
----------, Jun 8, 2017

Update:
Added debugmode, this is set to false by default. Setting it to true will give you information about scoreboard loading and creating
Fixed bug where the scoreboard wasn't created when the player joined
Fixed bug where the /asb reload command didn't reload the scoreboard correctly
Fixed several other bugs
Added new tag: scroll!


Tags:
  • The scroll tag comes with tree arguments: space, width and update. Space indicates how many spaces there are between different lines, defaulting to 1. Width is how many characters there are displayed every update, default is 16. And update is for how often the line goes to the next frame, if set to 20 it will update every 1 second.
  • Currently DOES NOT display placeholders correctly!
Code (YAML):
display:
  title
:
    text
:
   - '&lAnimated Scoreboard'
    random
: false
    interval
: 2
  line-1
:
    text
:
   - <scroll space=5 width=12 update=10>&aHello, there</scroll>
    random
: false
    interval
: 1
    score
: 1
This scroll line will have five spaces: So when the 'Hello, there' is over it will display 'Hello, there' again after 5 spaces.
The width will be 12 characters long, EXLUDING color codes.
It will update 2 times a second.

Code (Text):
Using 'Hello, there' as an example!

Hello, there
ello, there
llo, there
....
there     H
----------, Jun 5, 2017

UPDATE:
Fixed a bug when players had a long name that it couldn't create a new scoreboard
Fixed a NoSuchElementException
----------, Apr 28, 2016

Update:
Fixed a nullpointerexception
Fixed the bug when switching worlds and the scoreboard not disabling if there wasn't a scoreboard set for that world​
----------, Apr 27, 2016

Update:
Multiple Scoreboards per world possible
Permission based scoreboards now implemented
Fixed the bug when it couldn't find a world, now it will retry once
Fixed a nullpointer exception
Added 2 new commands
Added 2 permission for the command
New messages for the new command


Commands:

list will give you a list of all the loaded scoreboards, if you click on them you will switch to them. Permission: animatedscoreboard.list
Switch allows you to switch between multiple scoreboards in that world. Permission: animatedscoreboard.switch ​


Permissions:
animatedscoreboard.list allows you to get access to the /asb list command
animatedscoreboard.switch allows you to do /asb switch <scoreboard>​
----------, Apr 26, 2016

Update:
  • Added the animatedscoreboard command!​
  • Added 2 new configs, 1 for changing messages and one where the plugin stores who has the scoreboard enabled and who disabled​
  • Fixed the bug with an empty string as line​
  • Added 2 new permissions​


Commands:

  • The new command is /animatedscoreboard, it has three aliases: as,animatedsb, asb.
  • It is the main command and has 3 subcommands for now: help, reload and toggle
  • Help give you a showcase of what the commands are and if they have arguments
  • Reload will reload all the configs and the scoreboard so you don't have to reload the whole server if you change something in the config
  • Toggle allows you to toggle the scoreboard on and off


Permissions:
  • animatedscoreboard.toggle allows you to get access to the /asb toggle command
  • animatedscoreboard.admin allows you to do /asb reload


Config:
  • The new messages config allows you to changes nearly all the messages that the plugin will send!
  • PlayerData stores the current state of the scoreboard toggle so there is not need to change anything in there
----------, Apr 24, 2016

Update:

  • Fixed the ConcurrentModificationException when reloading or stopping the server
  • Fixed the bug with world scoreboards not loading the right way
  • Added <stay ticks=x>text and placeholders</stay> x being in ticks
  • Added <update ticks=x>text and placeholders</update> x being in ticks
  • Added an automated updater that will look on spigot if there is a new update available! you can disable this in the config!

Tags:

  • The update tag comes with one argument that is ticks, ticks is in server ticks 1 second being 20 ticks. The update tag will update the line when it is display on the scoreboard
  • The stay tag comes with one argument as well, ticks is in server ticks 1 second being 20 ticks. The stay tag will let the line stay for a certain amount of ticks disregarding the update time set for that line
The first line will update every ticks, it will stay 60 ticks but will update 60 times during that. The second line will update every 5 ticks and will just stay for 60 ticks. The third line will not update and will just show the same text 60 ticks.​
Code (YAML):
   line-1:
      text
:
     - '  <update ticks=1>&bX: %player_x% Y:%player_y% Z:%player_z%</update>'
      - '  <update ticks=5>&bX: %player_x% Y:%player_y% Z:%player_z%</update>'
      - '  &bX: %player_x% Y:%player_y% Z:%player_z%'
      random
: false
      interval
: 60
      score
: 1
The last line will stay on the scoreboard for 100 ticks, disregarding the interval of that scoreboard line!
Code (Text):
   scoreboard:
    line-1:
      text:
      - '&lA'
      - '&lAn'
      - '&lAni'
      - '&lAnim'
      - '&lAnima'
      - '&lAnimat'
      - '&lAnimate'
      - '&lAnimated'
      - '&lAnimated '
      - '&lAnimated S'
      - '&lAnimated Sc'
      - '&lAnimated Sco'
      - '&lAnimated Scor'
      - '&lAnimated Score'
      - '&lAnimated Scoreb'
      - '&lAnimated Scorebo'
      - '&lAnimated Scoreboa'
      - '&lAnimated Scoreboar'
      - '&lAnimated Scoreboard'
      - '&c&lAnimated Scoreboard'
      - '&lAnimated Scoreboard'
      - '&c&lAnimated Scoreboard'
      - '&lAnimated Scoreboard'
      - '&c&lAnimated Scoreboard'
      - '<stay ticks=100>&lAnimated Scoreboard</stay>'
      random: false
      interval: 2
      score: 1
----------, Apr 6, 2016

- The config doesn't go back to the default config if the user changes the data
----------, Mar 29, 2016

Resource Information
Author:
----------
Total Downloads: 458,045
First Release: Mar 28, 2016
Last Update: Jun 13, 2024
Category: ---------------
All-Time Rating:
188 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings