Skip to content

Instantly share code, notes, and snippets.

@Patbox
Last active March 24, 2024 05:11
Show Gist options
  • Save Patbox/e44844294c358b614d347d369b0fc3bf to your computer and use it in GitHub Desktop.
Save Patbox/e44844294c358b614d347d369b0fc3bf to your computer and use it in GitHub Desktop.
Why you shouldn't use cardboard, banner or any other "hybrid" server

By looking that you are here you most likely use Cardboard/Banner/some other weird bukkit + Fabric project (or just someone linked to it).

Don't do it, it will cause more harm/instabilities to your server than good. But let's start at the beginning.

Few definitions before we start:

  • Bukkit - It means bukkit, spigot, paper and any forks of these,
  • Cardboard - mod by IsaiahPatton that tries to port bukkit ecosystem to fabric.
  • Banner - another mod trying to make plugins work with Fabric, similar to Cardboard.
  • Fabric - a Minecraft modding platform, includes Fabric Loader and Fabric API, everything written in this gist also applies to Quilt.
  • Mods - Mods designed for fabric and compatible platforms
  • Plugins - Mods/plugins designed for bukkit/spigot/paper or their forks.

Why bukkit + Fabric will never work well

Mods being mods, they can modify game in substantial way. New blocks, items, mobs, etc. Possibilities are more or less endless as long as there is good enough programmer behind it. However, most mods still are kept compatible with each other, as they use tools designed for that (including Minecraft's internals, which allow for quite good compatibility) and having many gameplay mods is a norm.

Bukkit plugins on the other hand, while also normally compatible with each other, aren't really designed for custom blocks/items/etc. There are plugins that try to emulate mods with custom items/blocks/etc (for example Slimefun or ItemAdder), but they are mostly facade over vanilla items with some additional nbt. Because of that there are no issues most of the time (until other plugins don't try to use these items that is, as they see them as vanilla ones).

However, when you start mixing bukkit with fabric, bad things can easily happen. Fabric is close to Minecraft internal code (which has lots of nice and powerful stuff), while Bukkit is mostly an API which most of it's parts and design not being updated since 1.7. This means, you might need to make lots of conversions (with some not really possible without losing some functionality, for example messages in bukkit are just strings using legacy formatting, but mods use vanilla's more advanced json text for formatting). And if you start including things like non vanilla items, blocks and entities, it starts to break even more. Bukkit based server software is also known to break datapacks, which makes it even more likely to not work with mods (as a lot of them use and expend datapack funtionality).

Why Cardboard won't work

Cardboards approach is more or less taking bukkit code and hitting it with a hammer until it starts to barely works. It uses lots of hacks, code overriding entire methods in Minecraft (breaks lots of mods mixing into them!) and breaking vanilla behaviour. It's also questionable license wise, as GPL isn't really compatible with Minecraft code (and for this reason spigot and others use workarounds to bypass it). Additionally, it needs to modify some plugin on runtime to make them work, which only shows how bukkit wasn't designed for that usage. This mod will never be in a state stable enough to work with more advanced plugins while also not causing other mods to break or straight up crash. Most of the time developers of incompatible mods and plugins won't support it anyway as these mixed environments were always hacky and problematic, so it's safer and stabler to just use fabric alternatives.

Why Mohist/Banner won't work

In similar way of cardboard, to support bukkit api and plugins using it, it needs to make a lot of invalive changes to make things work. Which will also break a lot of mods (and plugins). It also is known to modify/swap plugins to make them work, so it's not even doing it's job properly (see https://essentialsx.net/do-not-use-mohist.html)

Why bukkit based software shouldn't really be around anymore

This is more of my own opinion (through it's shared by many), that bukkit based plugins and servers should be thing of the past. Bukkit (or Spigot and Paper) never fully adapted to modern Minecraft, as their goal of forever backwards compatibility limited how they could evolve. Bukkit was originally created for early Minecraft Betas and it's api was kept mostly the same. It was extended with new functionality, but it never fully adapted to modern versions. Lack of nbt api's, lack of support for datapacks as parts of plugins (which both non-bukkit platforms have supported for long time), it limits what could be done with server mods. Nearly all plugins that do something more advanced, require usage of non-bukkit Vanilla classes, either via another library or own code (and a lot of reflections and jvm hacks). For bigger servers that want to extend gameplay in their own ways, it's more common to just fork Bukkit/Spigot/Paper instead and add things in same ways as modders do.

OK, what should I do?

You should check out this list of server side fabric/quilt mods. There is lots of alternatives to pick, with even more being actively created!

If you are create mods or plugins you are also free to ask me about anything related, as I'm always happy to help people expand Fabirc/Quilt server side ecosystem :)

You should also checkout these server side communities:

Or modded ones in general:

@cosmicdan
Copy link

cosmicdan commented Jul 29, 2023

The issue here is that these guys are just full-on hating

You say this, but then previously you said:

no, im not a mohist dev, im an user that doesnt know how to code almost

...let me explain this to you so that a non-dev user will understand.

Forge MODIFIES the original Minecraft server. It injects a lot of new code for Events, particularly. Bukkit/Paper/etc. also do the same.

Forge and Bukkit can go "outside the API" via Mixins for example - this is where the REAL modding happens these days. But the problem here is that a dev for Forge and Bukkit is working against Forge and Bukkit proper, not Mohist. Mohist has additional changes to the Minecraft code that an individual Forge or Bukkit dev will likely not be aware of, because the dev themselves aren't working against Mohist (why would they bother).

Also, now that Forge is "dead" and essentially replaced with NeoForged, "coremodding" and Mixins are no longer naughty - so this problem is only going to get much worse for Mohist.

The latest server from the Paper team, Folia, touts itself as a fully-multithreaded version of Paper fork, but it can't even support datapacks IIRC, let alone have support for literally any custom content... the Bukkit-side has dug itself into the ground, giving the outward appearance of Minecraft "purists" as far as I'm concerned; and I think this is a self-destructive attitude to take considering that their community doesn't actively adopt newer Minecraft versions. It's like they're literally living in the past, refusing to adapt to the changing times.

As a dev myself, Fabric/Quilt honestly seems to be the way of the future.

As only a user, I am puzzled as to why you support Mohist when it literally gives you zero advantage. The official Minecraft server might not be open source, but it is free as in cost - so why does it matter to users?

Your claim that we are "full-on hating" can just as easily be countered with the claim that you are "full-on shilling" for Mohist, tbh, but I am not making that claim - don't get me wrong.

It's just that this article is geared for mod/plugin developers in a effort to get more to join the future in Fabric or Quilt, rather than wasting their talent on dead-end "we can do better than Mojang" type attitudes.

Sooooo many of these custom servers have come and gone in the past, and Mohist is like the 3rd OSS implementation I've seen over the years. Granted it's been more successful than the others have, but history has proven that these projects just cannot last because of how much technical debt they incur by trying to bridge two completely different philosophies of Minecraft content creation.

Mohist seems to have a very limited use case - people who want to make their own server but have zero development ability. I mean what is the actual point of it from a dev's PoV, considering how easy it is to port Bukkit plugins to Fabric or Forge?

@muriplz
Copy link

muriplz commented Jul 29, 2023

...let me explain this to you so that a non-dev user will understand.

I'm a dev, im just not a mohist dev lmao, thanks for explaining me what mixin is

What you are claiming is just opinions, and I mostly share them, I dont even use mohist. Now, can you explain how this
image
has been up for more than 3 years, being proven that it is false, and it's not hate? It's literally claiming it's malware so people choose what you want rather than explaining them why they might prefer Fabric / Quilt.

A rewrite on the article (and mostly the title) would leave me with nothing to talk against witth, that's what's being discussed, I think you clearly missed the point

@Andre601
Copy link

@cosmicdan

The latest server from the Paper team, Folia, touts itself as a fully-multithreaded version of Paper fork, but it can't even support datapacks IIRC, let alone have support for literally any custom content...

Given that Folia is still a fork of Paper, it makes sense since no Datapack support has been an issue in Spigot itself.
Also, define "custom content" here. You mean like modded blocks and items? Because that's due to the rigit Material enum not allowing custom values. But with that said is Spigot currently working on a change that would get rid of this for a more dynamic system. This would then theoretically allow custom blocks and items within the server without it breaking too much.

the Bukkit-side has dug itself into the ground, giving the outward appearance of Minecraft "purists" as far as I'm concerned; and I think this is a self-destructive attitude to take considering that their community doesn't actively adopt newer Minecraft versions. It's like they're literally living in the past, refusing to adapt to the changing times.

Bukkit has been dead for years now. It's now Spigot, Paper and whatever forks there are of these two.
Also, looking at bStats, which is by far the most reliable source for Server statistics, 1.20.1 is the most used version out of all with 1.8.8 only being at 5.1% which is barely anything.
So... No. People aren't "living in the past" in my opinion.

Are plugin-based servers good? No. Absolutely not. They break vanilla behaviour and are often awful to work with depending on what you want to do here...
But in terms of ease of use are they by far the better option because with mods you have to make sure to use the right versions AND that they do not require client-side mods to even join the server. Plugins are simple, have a very stable API which stays fairly consistent across versions and it's guaranteed that Players don't need any mods to join...

Anyways, Rant over. Enjoy your day.

@Andre601
Copy link

Andre601 commented Jul 29, 2023

@muriplz

has been up for more than 3 years, being proven that it is false, and it's not hate? It's literally claiming it's malware so people choose what you want rather than explaining them why they might prefer Fabric / Quilt.

It's not claiming that. Stop putting things in that aren't there.
The only claim they made is, that Mohist detects certain plugins and then "recommends" to download modified versions which is shady af here.
They never claimed that Mohist would distribute malware. Stop making this crap up.

And why should it give explanation for why to use Fabric/Quilt when it's an article made by Spigot Plugin devs?

That's like the Optifine devs making a post explaining why Fabric and Sodium should be used over their own mod... It doesn't make sense.

A rewrite on the article (and mostly the title) would leave me with nothing to talk against witth, that's what's being discussed, I think you clearly missed the point

The title and article are fine. And if anything have the Mohist dev proven that they are morally bancrupt, because they in fact tried to turn the article into a stupid PR-stunt by making a Pull request to modify it... a lot.


Do me a favour and properly read and research stuff next time before making blatantly wrong claims. Thanks.

(Also, do note that I'm not part of EssentialsX's team. Just one person active in the plugin community that also uses the plugin and was around when all this happened.)

@cosmicdan
Copy link

cosmicdan commented Jul 29, 2023

Whoops, yes I misunderstood. You're saying that EssentialsX guys are the haters. That's fair enough, it is a bit harsh what they're saying.

What you are claiming is just opinion

Not really. Allow me to re-iterate - Forge makes changes to Minecraft code, even without any mods. So does Bukkit/Spigot/Paper/etc. When you make mods for one platform, especially coremods/mixins, that mod will be more fragile on Mohist vs the original environment. It's hard enough writing a mod against Forge + Fabric; throwing the Bukkit API into the mix at runtime (because nobody seems to care about specifically targeting a niche project like Mohist) introduces more fragility - that's objective. Whether or not it affects YOUR mods though is unknown. And that unknown is a HUGE red flag for any serious server admin.

I'm a dev, im just not a mohist dev lmao, thanks for explaining me what mixin is

You literally said "im an user that doesnt know how to code almost", though...? Eh doesn't matter, I didn't mean to be condescending is all - I was literally going on the info that you're not a dev.

EDIT: Sorry, posted too early. Final edits done.

@muriplz
Copy link

muriplz commented Jul 29, 2023

Do me a favour and properly read and research stuff next time before making blatantly wrong claims. Thanks.

The article title clearly says "It includes dangerous behaviours", and it doesn't. But yes, I see now that yall are Fabric devs, and I apologize for bringing hate discussion here. The issue is that the link is posted in the article, whether you guys are Fabric or Spigot devs doesn't matter, you are still pointing to a link that was made with hatred in mind.

I made a whole lot of research, not only i lived that when happened, but if you read above there is also more information

@cosmicdan
Copy link

cosmicdan commented Jul 29, 2023

@Andre601

A fair point regarding bStats showing 1.20.1, I was ignorant - I didn't know their servers could be updated so easily, getting new features from vanilla in their servers. And that's good that they're adding easier ways to add custom content, but yeah I guess what I should have said re: living in the past is along the lines of what you're thinking - they're just not good. "Janky" is an appropriate term IMO. But I guess that's the price they pay for making the API super stable.

Still, I'm being harsh here - obviously, they have a very successful platform, as evident by the various paid plugins out there.


With all that said, I am 100% in support of Patbox's work in regard to Polymer and other server-side modding. He has proven to be an absolute wizard that has made my choice of Fabric over Paper/Folia a no-brainer.....

...but THAT is definitely my opinion, and I'm coming to this party super late. As someone who is just starting out only now with making a public server, I can't see any reason why I'd use Paper/Folia over Fabric. I imagine there are a LOT of successful server networks out there that simply cannot afford to recreate their entire product on something other than Paper.

EDIT: Also, FWIW, I have practically never played vanilla Minecraft. Haven't even killed the Ender Dragon lol. So I'm probably very biased.

@vico93
Copy link

vico93 commented Jul 29, 2023

Also, now that Forge is "dead" and essentially replaced with NeoForged, "coremodding" and Mixins are no longer naughty - so this problem is only going to get much worse for Mohist.

W--WHAT!? What happened with Forge that i'm not aware (i switched for Fabric when i migrated my modpack to 1.19)? i didnt know about this until now.

@cosmicdan
Copy link

cosmicdan commented Jul 29, 2023 via email

@Andre601
Copy link

@vico93

W--WHAT!? What happened with Forge that i'm not aware (i switched for Fabric when i migrated my modpack to 1.19)? i didnt know about this until now.

https://neoforged.net/news/theproject/

@vico93
Copy link

vico93 commented Jul 29, 2023

Yeah I only found out about it myself about a week ago.... Bit off topic but here's all you need to know https://neoforged.net/news/theproject/

Seems like the guys are a little bit late in rebelling against that Napoleon wannabe... Anyway, the only positive contribution that that scum left for Minecraft modding was causing an impulse for the creation of Fabric (and subsequentially Quilt)...

@muriplz
Copy link

muriplz commented Jul 30, 2023

https://github.com/Patbox/StyledPlayerList/blob/1.20/src/main/java/eu/pb4/styledplayerlist/CardboardWarning.java
"Banner doesn't work with it!", that's a little a lie in most cases. Being honest is key, that's clearly not a good explanation and probably most mods work with banner. Don't wanna bring hate @Patbox , it just seems that you will do whatever you need to win this "war" that doesn't exist.

Some of the explanations in this whole conversation make sense, and yea, they can be a concern for serious server owners, obviously, as with any hybrid. But claiming directly (3 messages in case they don't see it) that it doesn't work in all your mods, I think is a little too much. Would it be too much to ask for a rewrite on the sentence so it's not lying to your user base in most cases?

Note: I'm not a Mohist/Banner protector, I'd do the same for any software or mod, there has to be fair play, and not lies. At least that's how I see it, sorry for the ping Pat

@Patbox
Copy link
Author

Patbox commented Jul 30, 2023

Well, I've checked the code and Banner will actually just crash (or just not work) once server loaded ServerPlayNetworkHandler so it is correct. And there is no war, I just don't want people to come to my discord/github and complain that things aren't working because of banner. So it's not wrong, my mods won't work propertly there (if not straight crash)

@cosmicdan
Copy link

cosmicdan commented Jul 30, 2023

Was gonna say something to that effect but Patbox doesn't need me defending him :) though I will say in response to...

it just seems that you will do whatever you need to win this "war" that doesn't exist

This is a bit dramatic and ironic. I found this gist literally because I opened up Patbox's GitHub profile, it's not like he's going around sharing this on reddit or Discord servers lol. There is no "war", just as you said - this is just self-defence against people complaining that Pat's mods are broken or low-quality; something that all mod devs seen to have to do once they start to become a little popular.

@muriplz
Copy link

muriplz commented Jul 30, 2023

I just don't want people to come to my discord/github and complain that things aren't working because of banner.

Yeah, the LOGGER.error("You won't get any support as long as it's present!"); achieves that

As with mohist, banner improves over time and solves issues, I dont think adding this to all your mods is fair play here, but that was it, sorry for bothering

@Patbox
Copy link
Author

Patbox commented Jul 30, 2023

I just don't want people to come to my discord/github and complain that things aren't working because of banner.

Yeah, the LOGGER.error("You won't get any support as long as it's present!"); achieves that

As with mohist, banner improves over time and solves issues, I dont think adding this to all your mods is fair play here, but that was it, sorry for bothering

You didn't read the first part? It won't work properly, so the first part is also true, there is no reason to change it. I'm not going to soften it because someone from likes hybrids doesn't like the message. I'm more tired by this entire cardboard-banner lineage breaking stuff than anything

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment