Onlyreon
magmaguy from patreon
magmaguy patreon

Minor announcement - NMS code (blogpost)

🕑 Added 2023-03-23 16:32:50 +0000 UTC

Comments

MagmaGuy

Great question. Let's talk about discoverability, barrier to entry and the state of Paper’s documentation and support. First off, discoverability: Right now, most admins find out about EliteMobs from the recently updated section of plugins on Spigot. To the best of my knowledge, though alternatives exist, Spigot remains the one of the biggest and most widely known platforms. Most admins that use other platforms also use Spigot, and few admins that use Spigot use other platforms. Depending on PaperMC features may run afoul of their rules, and simply does not feel right to post projects that rely on PaperMC features on the Spigot plugins. PaperMC does not provide a platform for posting plugins. Secondly, barrier to entry: According to Bstats Spigot accounts for 25% of servers out there, and paper accounts for 58%. These stats are actually massively biased, as only Spigot servers that use plugins which use Bstats contribute towards the Spigot count, whereas PaperMC ships with Bstats integration natively. If I had to guess what the actual numbers are, I would guess that Spigot is actually ahead by maybe 5-10%. But even if the 25% number is correct, that is 1 in 4 servers that uses Spigot. The question then becomes: do I want to exclude 25% (or 60% in my estimates) of servers because they use a version which has a slightly less complete API, when I am able to implement these features myself? Asking tens or hundreds of thousands of servers to switch to PaperMC is not only a massive waste of time but also something a lot of people wouldn’t be willing to do just to try an unknown plugin out. Thirdly, documentation: While PaperMC offers Javadocs, which I would say is the bare minimum, very few community-made resources are out there to guide you through some complex implementations. This means that if I get stuck trying to figure out the details of how something is meant to work, if I search it online, finding a solution to my question will be an exceedingly rare event. This is not the case with Spigot; the community – including myself – has, throughout the years, asked and answered questions on forums and provided guides on how to implement particularly tricky systems – and this includes guides on how to pathfind with NMS, although those guides are hopelessly outdated now, which is something I am seriously considering contributing to offset that. And finally: support. PaperMC has an active discord, but getting straight answers to complex questions is not easy. The universe of people who has ever done complex implementations of the pathfinding solutions PaperMC provides in their API is almost certainly under 50 people; of those people, only a fraction has done anything like what I might need an answer to, and the odds one of those people is looking at the PaperMC chat when I ask a question and is willing to answer is reduces this pool of people to 0, more often than not. As an example, when I was working on EternalTD, I could not get the pathfinding for most flying entities to work. I asked on their support several times, but at the end of the day very few people – if any ! – have every come up with custom pathfinding for flying entities in Minecraft using the PaperMC API. Obviously, if I was the one who made the system in the first place, I won’t need any support. The initial time investment to reverse engineer the NMS implementation may take a little while, but once I provide an API over that I will never need any further help, and I can adapt the API to fit any of my needs without being restricted by an API.

thank you very much for this explanation, I really like the direction that the project is taking, I think it is becoming more solid and you can create very customizable things. The only thing I don't fully understand is why not stop using spigot, being able to use the Paper API, paper servers are already a majority and as you say maybe it would give you less trouble in the long run using the paper API, then I don't see why not use it and leave spigot, it is a difficult decision but I think it can be understood.


More Creators