Distribution change
The first major change is distribution change.
Right now, the plugin is divided into free and premium version with just one flag in code changed. Since the plugin is opensource and website like blackspigot existing, people had an easy time getting the premium version for free anyway. It was also annoying to maintain, since every time I compiled the plugin I had to check who am I compiling it for (in case of bug reports and such) and change flag appropriately, sometimes forgetting which resulted in hours of wasted time on debugging the cause. We also got several users complaining scoreboard isn't working after updating, turned out they downloaded free version.
With the new update,
the plugin is premium only with free download on github. There will is no free/premium version, there will only be the plugin with everything it has. This will help spread previously premium-only features towards wider audience and ending the dark age of paid scoreboard plugins (evil laugh). This is also directly related to discord support changes, see below.
This will have several advantages:
- All users will have access to more features by default, possibly spreading the plugin to more users
- People who want to test the plugin before buying to make sure all advertised features are actually present are now able to do it easily
- Less headache for me from discord tickets, as well as more time to work on the plugin
The only possible disadvantage of this would be lower income from those who would buy it if they didn't have free access. However, they are already able to do so right now, either by compiling source code or using websites like blackspigot to get it. Because of that, I don't think (much) less people will be buying it.
Because of this change, buyers will actually need some advatanges to have a reason to buy the plugin (since only relying on donations just doesn't work):
- High quality discord support
- Access to pre-releases
- Access to bug reports/feature requests without being ignored
- More? Any ideas?
Discord support
Right now, support is provided to everyone with support for premium version only provided to buyers. This results in many issues:
- Many people come asking for help before reading wiki and even if they receive direct wiki link answering their question, they don't read it and just say it didn't work, resulting in wasting my time spoonfeeding them. More than once I delayed my sleep due to an active ticket from someone refusing to read the wiki. Once in the middle of september we got 3 tickets during night who sent a message about 30 minutes after ticket creation that they solved their issue. If they managed to do it without help, others can as well.
- Some of them then say they don't speak english well, which I don't find as a fair reason to waste my time I could spend improving the plugin for everyone. If they don't speak english well, they are very likely not old enough to be capable of running a serious server.
- Many of those who decide to get the plugin from blackspigot have no shame asking for help with premium version. They then say they bought it, but "can't verify right now, just help me quick pls I just want this little thing", their server owner bought it, who will never verify, or straight up leave the server after being asked to verify. With MC-Market's verification bot they'll have no one to beg and waste time of.
- Some say they compiled the plugin themselves and ask for help, despite readme saying they won't get any. Really not any better than the point above.
- Some have noticed the premium mark in debug output and instead of sending a screenshot from game when asked they paste console output, but remove "Premium" from version, thinking how great hackers they are, to then just get caught by secret marks of the debug output. Then, they either go back to previous steps or say they aren't asking for help with premium features so what's wrong with it. Disrespecting me and yet demanding my time. That's what is wrong.
- Currently, I spend about same amount of time providing support as developing the plugin, which is completely unacceptable since wiki exists. Imagine where would the plugin be if my time spent on it was double. Yes, helpers exist, but they are doing it for free in their free time. I can't tell them to be available 24/7 for support.
- Many users ask for help and then don't respond back with results after they were answered, sometimes for days and even weeks. This just makes it harder to manage tickets and we must ping users to get any feedback from them. Often after a week of pinging them every day they asking if the wiki page we sent them / them hints we gave helped to solve their problem they just say "no" and we can go back to the beginning. Premium users do this as well, but it's way more common for free users.
With new version, I will mute community support channel and tickets will only be available to buyers. Until then, mc-market will (hopefully) finish their discord verification bot, which they cannot try to fool/beg in any way (saying they don't want to fill discord on mcm profile, saying it doesn't work etc etc). Wiki will also be improved to contain everything users may need. Often I can feel my brain cells dying when talking to some users and when I explain something to my friends, they ask why do I explain it like they were complete idiots. I don't know, I am used to it "for some reason". There also has to be a reason for users to actually buy the plugin, since they can get it for free now.
Now, those who did not buy it will not get support and they will want it. They also won't have access to bug report/feature request channel on discord and will not have access to pre-releases. This will be easier for me, as well as motivate users to buy the plugin.
Someone reacting to this change said he is fine with it, because he doesn't need support anyway. He said this after 5 tickets and 265 messages in public channels. Not sure about that one.
API rework
The API is reworked to offer a lot more options and generally be cleaner, such as having to go through scoreboard manager interface which is null if scoreboard feature is disabled instead of calling send scoreboard directly to player not knowing what will happen when it's disabled.
Configuration changes
Structure changes
Since there is no free/premium version anymore, premiumconfig file content was moved to config, as well as bossbar.yml, which felt pretty small just for that one feature. Users and groups were moved into separate files users.yml and groups.yml, which will have 2 benefits:
- It will remove `Users` and `Groups` keyword, resulting in 1 less indent (2 less spaces) and keyword gone, resulting in lower chance of users making it to discord pasting their syntax error after they removed Groups keyword for some reason or didn't respect spacing.
- When a command is ran to alter config (altering groups/users), it will result in all comments of config disappearing. This increases the chance of users making it to our discord asking what an option does, despite first line of their config containing wiki link. Altering another file and not the main config will avoid this issue.
Config structure was also changed. Related config options are now grouped together with a switch to toggle the whole feature on/off, helping users recognize which options affect others, such as disabling nametags will disable sorting as well.
Configuration files will automatically be converted to new format.
Scoreboard
The whole idea of scoreboard chaining using "if-condition-not-met" was removed in favor of a much easier solution which will not confuse new users. Default-scoreboard option was removed as well as defining next scoreboard in chain. Now, scoreboard priorities are defined by their order in config. If a condition for the first one isn't met, second scoreboard is checked etc.
Per-world section was also removed, since you can simply use `display-condition: "%world%=worldname"`
Bossbar
Just like with scoreboard, per-world section was removed, use `display-condition: "%world%=worldname"` instead.
default-bars option was removed as well, all bossbars will now be displayed (if display condition is met). For bossbars not enabled by default give `announcement-bar: true` property to it.
Sorting
The idea of multiple sorting elements was extended and now allows more than 2 (since previously you could only define 1 sorting placeholder), however, keep in mind there's a limit (
https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Sorting-players-in-tablist#additional-info).
New features
MySQL Support
First major addition is MySQL support. This will store users and groups, instead of using the files. It can be enabled in new config section for mysql. Conversion is currently not available, but might be in the future.
Layout
Ability to create a layout with 4 columns (less not supported currently) with conditions for each section, as well as completely different layouts per conditions. Obviously full placeholder support and extremely optimized.
RedisBungee support
Support for cross-proxy player processing - tablist name formatting, nametags, belowname, online counts in online placeholders etc.
Placeholder changes
Some placeholders were changed / removed. For removed placeholders look for their PlaceholderAPI alternative.
- removed `%money%`, use `%vault_eco_balance_formatted%`
- removed `%deaths%`, use `%statistic_deaths%`
- removed `%xPos%`, use `%player_x%`
- removed `%yPos%`, use `%player_y%`
- removed `%zPos%`, use `%player_z%`
- removed `%essentialsnick%`, use `%essentials_nickname%` - this in default config resulted in users copypasting this bukkit-only placeholder to bungeecord and complaining it doesn't work there
- added `%vanished%` showing vanish status from other plugins, originally added for internal use, but literal output is not used, so it can be freely altered with placeholder output replacements
- added `%mspt%` showing average tick time (requires paper core)
- `%afk%` no longer supports plugins which no one uses / have placeholderapi placeholders. Now only supports Essentials, Purpur and AntiAFKPlus. It no longer has directly configurable output in config (previously `afk-yes` and `afk-no`), since placeholder output replacements are now available to everyone
- `%online%` was removed and `%canseeonline%` was renamed to `%online%`
- `%staffonline%` was removed and `%canseestaffonline%` was renamed to `%staffonline%`
- `%world%` placeholder is now available on bungeecord as well with bridge
- removed `%rank%` and added `%group%` showing primary group, for customization see placeholder output replacements
Other changes
Just like with every update, various minor changes/fixes are present as well:
- 1.18 support
- Fixed issues when bossbar announce command was used several times at once for the same bossbar
- Sync placeholders will now show as red in /tab cpu to warn about them, since they slow down the server
- Added world forwarding to bungeecord (requires bridge update), allowing all kinds of per-world settings on bungeecord
- Significantly reduced CPU usage and drastically reduced memory allocations (when testing animations I was able to get 100x lower memory allocations with same configuration)
- Added support for CatServer and Fabric (with cardboard mod)
- Added missing options to tabcomplete
- Added `/tab scoreboard show [player]` command sending specified scoreboard to player
- Improved /tab cpu output with more detailed info on which part of each feature is sending packets
- Belowname is now disabled by default
- Added geyser hook to show scoreboard line values as 1-15 for bedrock users instead of 0s to fix line order
- Fixed placeholders only used in tab expansion not refreshing
- Fixed gradient text being black if output is only 1 character long
- Fixed global playerlist sometimes not working properly with vanish plugins
- Added config option to disable scoreboard detection from other plugins
- Fixed a lot of random errors
- Added compensation for rare bug in unlimited nametag mode making armor stands not appear
- Global playerlist now updates latency of players on other servers (can be disabled)
- Added support for nested placeholders
- Bossbar and scoreboard now require permission to toggle instead of having an option (`tab.bossbar.toggle` and `tab.scoreboard.toggle`)
- Improved yaml error assistant
- Bossbar and scoreboard now require permission to toggle
- `_OTHER_` group keyword was renamed to `_DEFAULT_` for a more accurate reflection of it's functionality
- Changed parse command syntax to `/tab parse `
- Fixed bossbar visibility issues on 1.8
- Conditions will now have automatically chosen refresh interval based on fastest nested placeholder (permission checks count as 1000ms) instead of using values from config
- Fixed rare bungeecord error leading to a kick
- * Added detection for name changes with nick plugins to properly apply nametags & sorting
- Reworked command messages, file is now called messages.yml and contains even more messages to customize
- Added support for CMI's {#RRGGBB<>} shortcut in gradients
- Added <#RRGGBB> RGB format
- Configuration files should automatically come with UTF-8 encoding
- Scoreboard line numbers will now update correctly when a line hides and use-numbers is set to true
- Changed `tab.togglebar` permission to `tab.bossbar.toggle` and `tab.togglescoreboard` to `tab.scoreboard.toggle`
- Fixed scoreboard not visible when joining into disabled world/server and switching to enabled
- Added %tab_scoreboard_name% placeholder returning name of currently visible scoreboard