[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)