Hacker News new | past | comments | ask | show | jobs | submit login
Cuberite – A lightweight, fast and extensible game server for Minecraft (cuberite.org)
134 points by sphinxc0re on Aug 22, 2017 | hide | past | favorite | 25 comments

The multiworlds support looks very interesting. Currently I host about 4 worlds on my Mac for my kids and their school friends. I have 4 instances of the server running on my Mac, each running over different ports, with port-forwarding configured on the home router. This looks rather less cumbersome. Cheers!

Cuberite is awesome! I used it as an excuse to write something in lua. I totally overhauled the portals plugin.

It's nice if you want to run a server on a pi

Does anyone know a similar project but for the client side? I've always thought using c++ instead of java would improve performance a lot.

There is a list of clients here: http://wiki.vg/Client_List

The Windows 10 version of Minecraft uses C++

Minetest ?

I'm impressed this is a Minecraft Server I can run from my Android, and it seems reasonably polished!

What makes this a goos alternative? How does it handle ghost blocks for example?

Extensibility. Official server still doesn't have plugin API and it is closed-source so it can't be modified. Almost everyone uses spigot/bukkit/sponge because vanilla server lacks many features, but these are dirty hacks based on disassembly.

Does your new server have the ability to support these old plugins at all? Doesn't look like it does.

The server doesn't support java plugins for bukkit/spigot. Because none of the internals are shared any interface layer would be needlessly complex and a drag on maintenance.

The lua plugin system is well-developed and documented [1] so most plugins could be changed over easily.

[1]: https://api.cuberite.org

Some popular plugins are already ported over like

- WorldEdit: https://forum.cuberite.org/thread-870.html

- Essentials: https://forum.cuberite.org/thread-1840.html

But also minigames like

- SkyBlock: https://forum.cuberite.org/thread-1508.html

- HungerGames: https://forum.cuberite.org/thread-1456.html

Yeah, but that doesn't help with _client_ side mods, which are still stuck with the old client internals.

At that point, why not just switch over to Minetest? Given enough work, it could eventually be an attractive and feature-complete clone — and be nicely extensible too.

Currently there is a PR on GitHub to implement the Forge handshake protocol and the server side mod API of Forge. That means sooner or later you might be able to write Forge backends for your client-side mods

I'd say it could easily be better even if the only reason is that it's not going to break mods on every release.

The performance of the official server implementation is pretty awful. Notch was never a good programmer by any stretch of the imagination (go check out old tree decay code) so you have pretty much nowhere to go but up, especially when you're rewriting the server in a language that allows you to more manage memory more precisely.

You know I see this a lot, and I respectfully disagree. He was clever. And he engineered himself out of many, many corners. He may not be a computer scientist, or a software engineer, but the man can make a game.

The fact that Minecraft ran so well on so many machines enabled it's huge success. I don't think most programmers are capable of that feat.

Don't get me wrong, he did a lot with what he knew. That doesn't mean his work couldn't benefit from a re-implementation from a team with a deeper understanding.

You have to remember that Minecraft's world format, server-client architecture, and username system all underwent massive changes, all of which could have been avoided in the first place. It's also worth mentioning that Minecraft runs well (which I would contest) on modern hardware in the same way DOOM does; not asking for much in the first place doesn't absolve your work from horrid inefficiencies/long running bugs.

Hard to argue that a hypothetical clean original architecture beats a "good enough" implementation that evolved to a multi-billion-dollar business.

If he had waited and engineered a solution suitable for a billion-dollar business up-front, would it ever have shipped and become a billion-dollar business?

I'd say notch shipping his game early and updating the game frequently is what made the game incredibly successfull. I started playing the game when he was incrementally adding multiplayer functionality. He used to release a few features one at a time every week. I always looked forward to see how the game would improve next week. If he hadn't written the game in java modding support would turn from a merely hard problem to an impossible one. The first mods were written in obfuscated java code but minecrafts coders pack (MCP) enabled a mechanism to map obfuscated names to "reverse engineered" names which can then be applied to newer versions of minecraft. With C++ you could probably get away with manually decompiling points of interest which would easily take more than 10 times the effort and still create mods but as soon as the next update is released all that work will be for naught and you'll have to do everything over again whereas with java the decompilation is mostly automated.

The challenge of modifying the game is a problem that would have been mitigated by the game having a proper API. MCP was and is a crutch trying to minimize the underlying issue of the API being held off for over five years now.

There are people who run Minecraft game servers as a small business. A more efficient implementation lets them make more money, so for them this could beat Mojang's server.

Currently the server doesn't do collision checks with Players, so you wouldn't notice ghost blocks. It does make it allot easier for hackers though.

What makes it a good alternative is that it's reasonably lightweight. We currently have a server running on a RasPi 1 B where people can build structures for the world generator: https://forum.cuberite.org/thread-1372.html

Can't find information how much feature-complete it is.

There is a forum post which has a rough list of what is supported and what not: https://forum.cuberite.org/thread-499.html

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact