[HN Gopher] PaperMC/Paper: The most widely used, high performanc...
       ___________________________________________________________________
        
       PaperMC/Paper: The most widely used, high performance Minecraft
       server
        
       Author : notamy
       Score  : 79 points
       Date   : 2024-03-10 19:55 UTC (3 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | caladin wrote:
       | Are there any recommended open source projects for handling the
       | management of a Minecraft server? So maybe some kind of control
       | panel, automated backups, etc.?
       | 
       | I specifically mean some kind of all-in-one solution rather than
       | a hodgepodge of tools and bash scripts.
       | 
       | Something that gets one close to the Minecraft Java Realms
       | experience + mods, which one can just provision on their EC2
       | instance or wherever they may run the Minecraft server.
        
         | jallasprit wrote:
         | Yeah, a lot of people setup https://pterodactyl.io/ on their
         | servers and use that to provision and manage game servers.
        
           | teekert wrote:
           | Looks nice! I have a comprehensive docker compose file with
           | itzg's image [0] repeated a dozen times.
           | 
           | [0] https://github.com/itzg/docker-minecraft-server
        
         | ChiptuneIsCool wrote:
         | https://pterodactyl.io/ Something like this maybe?
        
         | ro_bit wrote:
         | Pterodactyl is a commonly used one as the other comments say,
         | but just to give some background, Pterodactyl itself, rather
         | than being a minecraft server hosting software, is actually a
         | generic server hosting software that can be used pretty
         | effectively with a lot of games or even webservers. The base
         | configuration of a pterodactyl managed instance is an egg,
         | which is basically a docker image wrapped in a bunch of
         | configurations[1]. This means you can run any docker container
         | in pterodactyl and manage it all through a fairly slick web
         | panel[2] which allows you to easily tweak things like memory
         | allocation, send commands directly to the console, and share
         | access with other accounts. There's lots of eggs already
         | configured for minecraft and other games like Rust (not the
         | programming language), so a lot of the complexity of setting up
         | a docker container is abstracted away and for a non-advanced
         | user its a pretty nice balance between the ease of use for a
         | realm and the extensibility of a full server.
         | 
         | [1]
         | https://pterodactyl.io/community/config/eggs/creating_a_cust...
         | 
         | [2] https://streamable.com/hlscux (an example of a panel for a
         | server I administer)
        
           | MiguelX413 wrote:
           | Holy shit I need to use this now.
        
       | eikenberry wrote:
       | What are their competitors? Do these unofficial servers work for
       | both the Java edition and the MS C++ addition?
        
         | notamy wrote:
         | Paper is for Java edition only, as it's a series of patches on
         | top of the official Java edition server.
        
         | galleywest200 wrote:
         | They only work for Java Edition.
         | 
         | As for competitors...well it is not really a competition -- it
         | just depends on what you are focused on for your player-base.
         | Paper is a performance-focused fork of Spigot which is an, to
         | very loosely describe, "interface" for Bukkit. Bukkit itself is
         | an API for Minecraft that interfaces with plugins/mods. If
         | someone is running "modded" Java Minecraft, they are likely
         | touching one of these, or even a fork of Paper.
         | 
         | Paper adds some features/tweaks on-top of Spigot and if your
         | server is having some performance issues or you want a specific
         | feature that Paper offers then you would utilize Paper. If you
         | are fine on Spigot, you use Spigot.
         | 
         | Personally I have always used Paper when hosting servers, as
         | performance (less "rubber-banding" with higher player-counts)
         | was my focus in that time. As well Paper offered the
         | configurable option of "per-player" mob spawning, so we did not
         | have a single player that stood above a cave hogging all of the
         | mob spawns.
        
         | mastazi wrote:
         | I have done some research about this topic some time back,
         | these are the links I had gathered back then.
         | 
         | I was researching Java edition specifically, however among the
         | ones linked below, at least one (Nukkit) has a Bedrock (C++)
         | edition.
         | 
         | Many of these are related, e.g. Paper is based on Spigot which
         | in turn is based on Bukkit.
         | 
         | Paper seems to be the most widely used currently.
         | 
         | Paper https://papermc.io/
         | 
         | Spigot https://www.spigotmc.org/
         | 
         | Bukkit https://dev.bukkit.org/
         | 
         | Nukkit https://cloudburstmc.org/articles/
         | 
         | Folia (mod for Paper) https://github.com/PaperMC/Folia
         | 
         | PaperBin (mod for Paper) https://github.com/x4e/PaperBin
        
           | pityJuke wrote:
           | Folia is probably the most interesting on this list - it's a
           | mod by the makers of PaperMC to parallelize Java Edition
           | while still maintaining a working survival experience. It's
           | best known for powering 2b2t, a anarchy server with a current
           | player count of 633 on a single survival world, with the
           | world being roughly as old as Minecraft multiplayer itself
           | (servers that are effectively multiple servers chained
           | together have hit CCUs of 216k).
        
           | charcircuit wrote:
           | Bukkit is the name of the API for the server software
           | Craftbukkit. Bukkit itself is not server software. Plugins
           | targeting the Bukkit API can run on Craftbukkit, Spigot,
           | Paper, etc. Plugins targeting Spigot API only run on forks of
           | Spigot (if they use the parts of Spigot API that are not in
           | Bukkit), but not Craftbukkit.
        
             | unleaded wrote:
             | CraftBukkit isn't really server software anymore either,
             | you can still download it for latest MC but it's really
             | just Spigot with some features disabled.
             | https://madelinemiller.dev/blog/stop-using-craftbukkit/
        
         | DefineOutside wrote:
         | https://bstats.org/global/bukkit
         | 
         | Minecraft server software marketshare is tracked with bstats.
         | Paper (58.3%) is a fork of Spigot (21.3%) and is more open to
         | contributions and has a lot more performance enhancements.
         | Spigot continues CraftBukkit which implements the Bukkit API.
         | Spigot only really exists to update to the latest game version
         | and no longer receives performance enhancements. Purpur (10.1%)
         | also exists and forks paper, and add gameplay features that
         | couldn't be forked into Paper.
         | 
         | The largest non-bukkit competitor is Fabric, which is nice
         | because by default it changes no gameplay behavior. Spigot and
         | all forks change gameplay behavior to improve performance and
         | make implementing the API easier in subtle ways. Paper is more
         | suitable for a public server as it patches exploits by default
         | while Fabric is better for a more technical or private server
         | as it doesn't break vanilla behavior .
         | 
         | Bukkit-based servers can be made compatible with Bedrock
         | edition with the Geyser plugin
        
           | kosma wrote:
           | Note that bstats only tracks Bukkit-compatible servers. It
           | doesn't track Vanilla/Fabric/Forge/etc. installations, so
           | take these numbers with a grain of salt.
        
         | kosma wrote:
         | There are several primary ways to run a Java Edition server:
         | 
         | 1. Pure vanilla server.jar. Has horrible performance, little
         | flexibility, but in the end, it Just Works. This is the server
         | that Realms (Mojang's paid hosting service) uses. In recent
         | versions, some modding is possible via datapacks.
         | 
         | 2. Fabric Loader and some vanilla-compatible mods like Carpet
         | etc. Here, "vanilla-compatible" means that a vanilla client can
         | still connect. This is the preferred way of playing for the TMC
         | (Technical Minecraft) community since the underlying server
         | stays mostly vanilla, down to the smallest details and bugs,
         | and no behaviors are changed. The TMC community becomes very
         | agitated when someone tries to "fix" some bugs - they rely on
         | those bugs.
         | 
         | 3. Forge/Fabric with mods that change the gameplay, and require
         | the mods to be present on both client and server. This is the
         | traditional "modded" experience, as seen on TV.
         | 
         | 4. Bukkit/Spigot/Paper/Purpur, various generations of server
         | software that _heavily_ patches the vanilla server, fixing
         | bugs, adding new functionalities, and presenting a very
         | comprehensive Plugin API, while still allowing vanilla clients
         | to connect. This is the software used by servers that implement
         | custom gamemodes, public servers that need griefing
         | /duping/exploit protection. Many high tech farms don't work on
         | Paper because of how many things it "fixes".
         | 
         | 5. Folia - a fork of Paper that has multithreading support. It
         | comes with its own can of worms.
         | 
         | Performance-wise, Fabric+Lithium is probably the most
         | performant in the default configuration, though if you're
         | willing to remove functionality, you can probably get better
         | performance out of Paper (at the cost of losing gameplay
         | features).
         | 
         | As for Bugrock Edition: well... there is Geyser that lets you
         | connect to a Java Edition server with a Bedrock client. ;)
        
           | atomicnumber3 wrote:
           | Adding on to yours, since right now you have the most
           | complete background answer.
           | 
           | There's some history in the "Bukkit" family that might make
           | their chaos make more sense.
           | 
           | In the beginning, there was Bukkit, which was a plugin API.
           | And there was its reference implementation, CraftBukkit. It
           | was very popular, Bukkit was the de facto API for server-side
           | modding, and I made 50 bucks off of advertising revenue share
           | for downloads of my plugin, which was a lot for me as a high
           | schooler with one (1) year of java experience. Times were
           | good. Where was I? Oh yeah.
           | 
           | So, for a long good while, times were swell. Then iirc
           | Microsoft announced they were acquiring Mojang (I think this
           | was the precipitating event? Someone correct me if not). And
           | the main Craft/Bukkit guy threw in the towel and pulled a
           | very clever poison pill: he DMCA'd his own repos. You see,
           | Mojang essentially didn't care about server.jar distribution
           | because they were a cool indie company. So CraftBukkit just
           | included it. Which meant it was always in violation of
           | Bukkit's GPL license since that code wasn't open source.
           | 
           | So anyway, CraftBukkit explodes in a supernova and the
           | resulting stellar nursery produces Spigot which pioneered the
           | distribution strategy that all successors would then use -
           | they distribute a decompilation map and their source, then
           | you run a jar that downloads server.jar and performs the
           | unholy mixing of licenses on your machine.
           | 
           | This is where I left the scene so I only have a summary from
           | here on out. Spigot is the main go-to for a while, but the
           | stellar nursery is still hot, and so various creative
           | differences produce Paper, which seems to have mostly caught
           | on to replace spigot though it seems like spigot is still a
           | nontrivial player as well. And these all still implement the
           | same ole GPL licensed Bukkit API.
        
         | nightpool wrote:
         | The major competitors include Fabric and Forge, with each being
         | distinguished primarily by the type /amount of extensibility
         | they offer. Paper is focused on "backend only" modding
         | (plugins), as opposed to the "full spectrum" modding supported
         | by Fabric and Forge that often (but not always) require users
         | to download the mods on their computer as well.
         | 
         | From that perspective, Paper is much more commonly used by
         | commercial server owners (since they're catering to the very
         | large audience of casual users who don't want to install mods)
         | and casual users paying for a server host for their friends who
         | just want a couple of small tweaks, while Fabric and Forge are
         | generally used more by smaller groups of dedicated power users
         | who want a lot of extra mods
         | 
         | Paper and Forge both focus primarily on providing a large
         | extension API through modifying the decompiled Minecraft source
         | code, while Fabric takes a different route by providing
         | primarily an extensive dynamic Java bytecode modification
         | library that allows developers to effectively "build their own
         | API" by modifying the vanilla Minecraft classes at runtime.
         | This means Fabric is generally much faster and easier to update
         | to newer versions, and most smaller mod developers have adopted
         | it as their preferred platform of choice due to the more
         | powerful tools, and use open source libraries to make up for
         | the lack of a built in API. (These are generalizations, of
         | course, and Forge and Fabric have experienced a fair amount of
         | convergent evolution at this point as well.)
         | 
         | On the performance side, there's a new experimental Paper-like
         | server called Folia from some of the core developers aimed at
         | providing radical parallelism. Normally, all Minecraft servers
         | run their main gameloop on a single thread, and the largest of
         | server operators deal with the issue by providing front end
         | proxies that shard users to different servers, which limits
         | interactivity. From a technical complexity level, you could
         | almost compare it to a GIL-less server reimplementation. All,
         | again, built as patches onto the decompiled Minecraft source
         | code. It's gaining more stability and has been used in some
         | very exciting public tests
        
       | nor-and-or-not wrote:
       | So, how compatible is this to the vanilla server?
       | 
       | Does anyone have experience with this?
        
         | ro_bit wrote:
         | Paper itself is a series of patches over the official vanilla
         | server implementation. You can convert a vanilla server to a
         | paper server just by replacing the vanilla server.jar file with
         | a paper server.jar one, and converting back to a vanilla server
         | can be done fairly easily (but a bit more difficult than
         | dropping in)
         | 
         | It's much, much more performant, and able to handle a lot more
         | players/chunks loaded/etc on the same setup compared to a
         | vanilla server. Along with significant performance improvements
         | out of the box, it also adds more configurations (vanilla has
         | server.properties, but papermc adds paper.yml) which allow you
         | to hand tune optimizations[1], from things like disabling
         | player collisions, disabling block updates for certain laggy
         | blocks, etc. These changes are configurable because they trade
         | off expected vanilla behavior for better performance.
         | 
         | The real strength of paper though is that they do all this
         | while also implementing the spigot API, which enables paper
         | server owners to use a wide variety of server mods[2] that can
         | allow you to add things like minigames, anticheat, etc while
         | still being compatible with unmodified clients.
         | 
         | [1] https://www.spigotmc.org/threads/guide-server-
         | optimization%E... (outdated but a bit more succinct)
         | https://paper-chan.moe/paper-optimization/ (more technical)
         | 
         | [2] https://www.spigotmc.org/resources/categories/spigot.4/
        
       | oldkinglog wrote:
       | Paper can't provide binaries as it would infringe Mojang's
       | copyright. Users must "build" the server by downloading the
       | official binary and applying local patches. This is well-
       | automated for users.
       | 
       | Licensing wasn't so much a problem in the early days of
       | Minecraft. The first really popular server mod (CraftBukkit) not
       | only provided binaries, but deopfuscated server code on a GitHub
       | repo (since DMCA'd): http://github.com/bukkit/craftbukkit. That
       | repository was ostensibly licensed as LGPL, but no one really
       | believed that, given it was derived from Mojang's proprietary
       | binaries.
       | 
       | Mojang eventually acquired CraftBukkit and hired their devs. And
       | there's an interesting footnote: for several months, Mojang
       | didn't tell anyone they'd acquired CraftBukkit, and they kept
       | making releases to the public GitHub repository. Given it was
       | Mojang making these pushes, I believe (IANAL) that they are
       | officially-licensed LGPL versions of the Minecraft server, albeit
       | ~10 years out-of-date now.
        
         | ro_bit wrote:
         | Interestingly enough, CB wasn't DMCAed by Mojang, but actually
         | from one of its contributors, who was angry that he had been
         | contributing free labor to a project that was secretly owned by
         | Mojang (there was no CLA so he was legally able to take down
         | the project by not authorizing his contributions to be used).
         | There was a whole lot of drama and conflicting viewpoints
         | around about this, but here's a post about it that I think
         | stays pretty close to just the facts.
         | https://blog.jwf.io/2020/04/open-source-minecraft-bukkit-gpl...
         | (not associated with the author)
        
       | tadhunt wrote:
       | I run a company that provides Minecraft server hosting for
       | businesses (i.e. after school programs, summer camps, Code
       | Ninjas, E-Sports leagues etc) and produces fun and educational
       | events using Minecraft (i.e. 10-15 elementary school kids in an
       | event space at a library learning physics by building roller
       | coasters in the game).
       | 
       | We've switched entirely over to Paper for everything because it
       | works so much better than vanilla, and it also enables us to put
       | it behind a Velocity proxy (Minecraft Java Application layer
       | proxy also developed by the same group that develops Paper) for
       | better scalability, more secure infrastructure, and some cool
       | features like enabling any version of Java edition to join the
       | same server (mad props to the ViaVersion & ViaBackwards plugin
       | teams that make this possible!). This is impossible to do with
       | Vanilla. We do all of our own content development creating the
       | activities the kids do during the events, and the plugin
       | ecosystem that someone else mentioned is hugely helpful for this.
       | I especially want to call out how awesome the Geyser and
       | Floodgate plugins are -- they make it possible for Java and
       | Bedrock clients to play together in the same world, which makes
       | our customers lives so much easier.
       | 
       | We're hiring part time / contract developers, event hosts, and
       | technical support personnel. If this sounds interesting, please
       | reach out. My contact info is in my profile.
        
         | jbm wrote:
         | Another point for Geyser and Floodgate.
         | 
         | I have Minecraft on iOS, as well as two Java licenses. You can
         | have both mixed on the same server if you are using Paper with
         | Floodgate and Geyser. It's great; my younger child can use iOS,
         | while my elder kids can use the java licenses on their
         | computers.
        
           | siegecraft wrote:
           | Constantly updating geyser to keep it up to date with the
           | most recent bedrock versions is quite a pain. Maybe paper has
           | tools to automate these updates (I use fabric) but it seems
           | unlikely.
        
       | freetime2 wrote:
       | Can this be used with "bedrock edition" of Minecraft? Or only the
       | java version?
        
       ___________________________________________________________________
       (page generated 2024-03-10 23:00 UTC)