Minecrell/ServerListPlus

Alternatives for ServerListPlus

stephan-gh opened this issue ยท 27 comments

Realistically speaking, ServerListPlus has been semi-abandoned for a while. I try to reply to some issues here on GitHub occasionally, but it's unlikely I will ever get back to implementing any new feature requests. This is because my interests changed and I haven't played Minecraft for years now.

This issue exists to allow discussing possible alternatives that are more actively maintained. You can comment with possible alternatives that you found and share what you find good or bad about them.

We are currently using ServerListMOTD which is a resurrection/continuation of this one. It has 300+ downloads (the original had 1800). It has full PAPI support. It's only 6 months old, but the developer seems committed. He supports only two plugins, both of which he resurrected. You can read about him at the bottom of the Overview page.

Here are some other plugins I know of and their pros and cons (personal opinion):

  • MiniMOTD (Source)
    • + Support for MiniMessage in the MOTD
    • + Supports Spigot/Paper, BungeeCord/Waterfall, Velocity and Fabric
    • + Multiple MOTDs
    • + Multiple (random) Favicons
    • + Playercount can be hidden (Set to ???)
    • + Pair MOTD and Icons together
    • + Enable/Disable Features
    • - No Hover for player count
    • - Uses HOCON configuration (More difficult configuration?)
  • PistonMOTD (Source)
    • + Support for MiniMessage in the MOTD
    • + Separate RGB support through &#ffffff format
    • + Supports Spigot/Paper and BungeeCord/Waterfall
    • + Multiple MOTDs
    • + Multiple (random) Favicons
    • + Playercount can be hidden (Set to ???)
    • + Hover text support
    • + Custom "Out of date" message
    • + Enable/Disable features
    • - Uses %newline% placeholder for new lines... (Why?)
  • ServerListPlus (Fork) (Source)
    • + Support for MiniMessage in the MOTD
    • + Exact same features as original SLP.
    • +/- Different RGB Color Code format &#ffffff& (Not as user friendly?)
  • AdvancedServerList (Source)
    • + Support for MiniMessage in all the text options (Except favicon option) with MOTD also allowing Hex colours and gradients.
    • + Support for Spigot/Paper, BungeeCord/Waterfall and Velocity
    • + Supports all features SLP offers, meaning
      • MOTD
      • Favicon
      • Hiding player count (Setting it to ???)
      • Hover text on player count
      • Overriding the player count text itself
      • Setting the max player count
      • All options can be set multiple times using a profiles section, which goes through them randomly
    • + Allows to display max players as <online> + n with n being a configurable number.
    • + Multiple files can be used with conditions and priority to determine what to display under what conditions.
    • + Support to migrate existing SLP configuration over to the plugin.
    • + PlaceholderAPI support including proxy (Requires PAPIProxyBridge)
    • - No support for Sponge or Fabric
    • - No random combinations of the different options. Only randomized pairs work (or profiles entry + global entry of other options)

@Andre601 @SlimeDog Mainly just curious, aside from having a rather inactive maintainer, what are the main features that ServerListPlus is missing? I could think of PlaceholderAPI support and hex colors, is there any other major feature that was introduced with some Minecraft update?

You have arrived at the "missing features" list. I don't personally care about hex colors, but others may do. PAPI support is essential.

@Andre601 @SlimeDog Mainly just curious, aside from having a rather inactive maintainer, what are the main features that ServerListPlus is missing? I could think of PlaceholderAPI support and hex colors, is there any other major feature that was introduced with some Minecraft update?

For me, something like "predicates" or "conditions" to display different MOTDs based on those is something that isn't just missing from SLP alone but many different MOTD plugins.
So many out there only offer randomized MOTDs and icons at most but not really any "if X show MOTD Y with Icon Z". Like displaying a specific MOTD if the player in question is banned to tell them where to appeal.

I btw added the SLP Fork from Minebench (https://github.com/Minebench/ServerListPlus) here as it also adds RGB support while keeping SLPs main features intact.

Predicates would be nice. I would probably make use of them. Perhaps you should add that as a feature request on ServerListMOTD. :)

Predicates would be nice. I would probably make use of them. Perhaps you should add that as a feature request on ServerListMOTD. :)

I have no use for this plugin. So why don't you make one? xD

Oh. I misunderstood. I thought you were looking for alternatives to SLP that supported PAPI and might implement new features.

For me, something like "predicates" or "conditions" to display different MOTDs based on those is something that isn't just missing from SLP alone but many different MOTD plugins.

Yeah agreed, this would have been exactly the "trigger" concept in ServerListPlus 4.0.

Basically, instead of having fixed Default, Personalized and Banned "profiles" you could have created an arbitrary number of profiles and enable them either permanently or based on a trigger. This would then have been similarly easy to extend as placeholders, which would have significantly simplified implementing feature requests for new kinds of triggers. This is why I started labeling issues with "trigger" long ago: https://github.com/Minecrell/ServerListPlus/issues?q=is%3Aopen+is%3Aissue+label%3Atrigger

I was playing with some ideas here https://gist.github.com/Minecrell/8470683b0f710fbf5d46044a1a17607e although I never figured it out fully because it's kind of tricky to find a compromise between flexibility and complexity.

To be honest, I kind of regret never finishing up SLP 4.0, I had nice ideas for it. :)

Don't we all?
I personally regret never working on PingNachricht anymore, but I don't feel like working on it anymore, especially since I dislike working with ProtocolLib.

I personally regret never working on PingNachricht anymore, but I don't feel like working on it anymore, especially since I dislike working with ProtocolLib.

IMO at this point, the extended ServerListPingEvent I contributed to Paper (see PaperMC/Paper#980) should really be preferred over using ProtocolLib for server list stuff. And if some of the alternatives don't have support for that, you might want to ask them to add it. :)

Without the Bukkit drama something like this might have existed years before... Actually I had a PR open for server list stuff on the Spigot repository when the DMCA drama happened. Similar code became part of Paper eventually, but many years later.

Does ServerListPingEvent exist in Spigot, or only Paper? If only Paper, then it's not really useful for Spigot plugins.

Does ServerListPingEvent exist in Spigot, or only Paper? If only Paper, then it's not really useful for Spigot plugins.

It exists only in Paper. I stopped contributing to Spigot after the Bukkit drama, because of their weird source hosting, CLA and general approach to PRs. Paper was much more friendly to work with.

Anyway, given that the original API (Bukkit) + implementation (CraftBukkit) is dead now you can decide which implementations you want to support. ServerListPlus supports the Paper event optionally (in addition to the old ProtocolLib implementation).

It exists only in Paper. I stopped contributing to Spigot after the Bukkit drama, because of their weird source hosting, CLA and general approach to PRs. Paper was much more friendly to work with.

Well, I don't know if anyone tried bringing it to Spigot (although I doubt it). Anyone is free to take the code and suggest it for Spigot. Or whatever is considered as the main implementation nowadays :)

"Main" is a squishy concept, but Paper and its many derivatives still consider Spigot the "upstream". And Paper makes the explicit claim that any Spigot plugin will work on Paper (despite some evidence to the contrary). The reverse is obviously not true. If a developer wants their plugin(s) to work across the Minecraft derivatives, then they must account -- as you did -- for the differences (ie., enhancements that have not been incorporated into Spigot).

Alright... Quickly clearing stuff up

Does ServerListPingEvent exist in Spigot, or only Paper? If only Paper, then it's not really useful for Spigot plugins.

It exists only in Paper. I stopped contributing to Spigot after the Bukkit drama, because of their weird source hosting, CLA and general approach to PRs. Paper was much more friendly to work with.

Nope. The ServerListPingEvent does exist in Spigot. See here.
What you're referring to is the PaperServerListPingEvent which has the enhancements.

Anyway, given that the original API (Bukkit) + implementation (CraftBukkit) is dead now you can decide which implementations you want to support. ServerListPlus supports the Paper event optionally (in addition to the old ProtocolLib implementation).

I wouldn't call it dead. While it's true that Paper does provided a lot of wanted features does it not make sense to only support them.
Spigot still makes 42.3% (68.8k Servers) of over 204,000 servers so it's still a big thing and still receives updates.

This would be like if I would make OneVersionRemake only support Waterfall and/or Velocity, but intentionally deny BungeeCord.

"Main" is a squishy concept, but Paper and its many derivatives still consider Spigot the "upstream". And Paper makes the explicit claim that any Spigot plugin will work on Paper (despite some evidence to the contrary). The reverse is obviously not true. If a developer wants their plugin(s) to work across the Minecraft derivatives, then they must account -- as you did -- for the differences (ie., enhancements that have not been incorporated into Spigot).

Yep. That's one issue and a main reason as to why Paper offers a library for this, that tries to use Paper's enhancement while providing gracefully fallback support for Spigot.
But if people don't use this do they often need to do things like using Class.forName("io.papermc.blablabla") to see if Paper is used or not.

Also, I think this becomes kinda off-topic and no longer about the issue's main purpose, so shouldn't we move it to somewhere else? Unfortunately does this repo not use Discussions (And I don't think it's worth enabling that) to say "Let's go to a discussion for this"

Unfortunately does this repo not use Discussions (And I don't think it's worth enabling that) to say "Let's go to a discussion for this"

FWIW I enabled them, but mainly because I was curious how they look or what that even is (never used it). I will now hide all unrelated comments I guess :)

Unfortunately does this repo not use Discussions (And I don't think it's worth enabling that) to say "Let's go to a discussion for this"

FWIW I enabled them, but mainly because I was curious how they look or what that even is (never used it). I will now hide all unrelated comments I guess :)

They're essentially like StackOverflow (You can select answers, if enabled, and up/downvote responses)

In fact, I think this MOTD plugin is also very good:
CleanMOTD(Source)

I used to use PistonMOTD.

A while ago I made a plugin that aims to provide what SLP does called AdvancedServerList.

Benefits are multiple profiles with priority and conditions.
Downside is no Sponge v8 support (yet).

Kinda wondering if this is still relevant to the current state of SLP, or if things have changed...

Irrelevant to me. I have been using ASL for some time now.

The status of SLP has not really changed. I did make a release with the new features that have accumulated over the years but still don't plan to have major new functional changes. I think it's fine to continue using SLP for people who are fine with the current state, but if someone is looking for new features or actively handled feature requests switching to a different plugin is probably better.

I am wondering if it would be worth it to pin this issue, so that people know about the plugins state as of currently and what possible alternatives there are...

I recommend putting the information in places where people are likely to stumble across it: SpigotMC resource page, Github code README, and the like. Putting it here is fine too, but not as likely to be found by casual passers-by.