The next Minecon is coming up and you can suggest topics for a panel. I personally always thought there was/is a lack of 'professional content'. Or at least I have never seen or heard of a panel/event that had a more technical/programming/code-design slogan (granted I was never there and only see what the internet provides). There are more than 140.000 minecraft servers running just for the pc version without realms and there is no panel for code-structure, optimization, general guidelines?
Even if we look at the reasons why Microsoft bought Minecraft it would make sense to me to have a discussion about the tools, techniques and design patterns that can improve the quality of projects in general. At least the overall goal should be to keep the modding community growing, as it is driving the whole thing.
Now realistically I don't expect something like this to happen at a Minecon. As far as i can tell from the YouTube-Videos and Twitch-Streams the general content is very...basic.
Still I wanted to make an effort and at least push this idea into their direction maybe this can achieve more than just a panel.
Well, what to do?
Send Mojang a video suggestion!
With some reasons why nurturing the 'professional' community can help (*)
How to stand out?
There are probably a lot of suggestions and most of the panels are pre-planned. I´d argue only a handful panels are not yet decided. So we have to do something that stands out to even get noticed and in addition to that our goal here is hard to accomplish as a panel (or something similar) of this type was never (to my knowledge) at Minecon.
Let's stand out!
As we are talking about programming related stuff mostly, let's try to bring up some related topics to stand out with. The ideas I settled on were:
1. Stand out by fixing some of the most voted/problematic bugs in Minecraft. As I am not familiar with the client-code I will only focus on server-side problems.
2. Stand out by optimizing general design/code-problems in Minecraft. Again I will only focus on the server side.
3. Showcasing plugin technique/design that could potentially be interesting for the company itself.
4. (Boldly add a link to this post in the video and hope I did not screw up somewhere)
1. Fixing very influential bugs
The first thing that should come to mind here is MC-2025. It is a bug from 2012 and is the #1 most voted bug on the bugtracker.
I took it as a challenge for the video to fix this bug.
- Fixing MC-2025 (and probably others: MC-2545,MC-9568,MC-23320)
You know this one: Animals going out of fences. ୧༼ಠ益ಠ༽୨ After looking a little bit closer into this bug I realized that I could potentially fix this bug within a day or two (the remainder of it, several other problems were fixed over the years). Of course there is always a probability that its a bug that needs a lot of code-rewriting but from experience I had the impression this was not the case. In the end it took me about 4 hours. You can find my report here. This specific problem was even reported earlier but never used by Mojang. It seems to be the only thing missing to fix this problem for several MC-Versions now. Seems like I and Mojang should have read the comments more carefully to save some time.
- Fixing MC-911/MC-80966
You probably know this one too: lightning-bugs especially in the nether and on bigger buildings.
- Fixing MC-10976 (and probably others)
This bug took a lot of time to track down as it only occurs very rarely and in special situations. Anyhow this is one of the worst bugs still present in Minecraft as complete chunks of your map can get lost.
These problems and fixes are pretty interesting for a discussion:
- MC-80966 is a very simple logical problem.
- MC-10976 is very complex and a pain to track down.
- MC-2025 the most famous one is a rather common but very interesting float/double rounding problem.
There is a lot to learn from these problems in general!
2. Optimizing the core functionality of MC
I´ll try to keep this short. Several core-concepts and design decisions from the early stages of Minecraft are not longer a good fit for the game. In retrospect this is always an easy thing to say - so let's add some actual practical optimizations to this:
- TileEntities often tick needlessly. There are several TileEntities in Minecraft that do not actually need to tick. By simply not adding those to the TileEntity-tick-List we can save 50% or more of the iterations every tick.
- ItemFrames are Entities and therefore pretty costly. But there is actually no reason to treat them as entities. They cant move, they have a block-position. They cant rotate freely: They pretty much act like a block. By adding a "ItemFrameManager" and completely removing them from the EntityTracker we can now add an unlimited amount of ItemFrames without worrying about the server performance.
- The Grow-Algorithm ticks needlessly a lot of the time. This can be optimized by simply removing some blocks that were wrongfully marked as ticking. An example would be the cake-block. The intention here was probably to let the cake rot over time. There are about 10 to 25 more depending on how you want to handle some special cases.
3. Showcasing plugin features/technology
As the third and last point for this list let's look at plugin features Mojang/Minecraft might benefit from. This one is kind of tricky as we have to guess what path they are interested in for the game or a sequel.
Additionally there is a ton of plugins we could mention here...so i'm gonna mention my own
- Chunkli would be 'just another rehashed WorldEdit' if you don't actually try to understand it. But the idea of the plugin is not to just copy stuff from A to B. Its to build a API that allows admins, players and 3rd party plugins to transfer data from one place to another. A good example would be allowing a player to transfer a plot from one place to another (even to another server) without the risk of data loss or duplication. The probably most amazing thing/concept: Chunkli would enable you to create an 'online store' for Minecraft buildings! In the example below a secondary plugin uses the chunkli API to re-generate the gameworld without overwriting player plots (realtime; no speedup!).
Click to cycle (1)
- FakeStuff allows you to build sub-block-structures (Models, Sculptures, Furniture, ...) without any client-modifications. You might have seen SethBlings Video about this. The main difference: FakeStuff does not need Commandblocks, and will not lag the server if you create several thousand or a million ArmorStands. And most important: You are at least 100x faster while building compared to commandblocks :).
Click to cycle (1)
But the actually interesting part from a professional point of view is not that it 'works' but how specifically things were achieved. Examples for the two plugins here would be:
- Chunkli: Copying things from A to B is not that interesting. Transferring data with duplication-protection between servers and without any lags at runtime on the other hand is pretty interesting as it needs a completely different technology in the background.
- FakeStuff: Creating Furniture/Sculptures is not that interesting. Having 100.000 ArmorStands in one world without any server lags is again something very different. That's when it gets interesting. :)
Summarized: I would love to see more ideas, more technology and more creative implementations - and I think others would love this too!
(*) I have no intention of making fun of anyone. The general idea of this post/video should be fun but I am definitely not trying to play anyone's work down or offend anyone.