Hacker News new | past | comments | ask | show | jobs | submit login
Microsoft open sources parts of Minecraft: Java Edition (minecraft.net)
536 points by aw1621107 on Oct 6, 2018 | hide | past | favorite | 137 comments



Of note is the Minecraft website from 2011 [1], where Markus Persson said: "Once sales start dying and a minimum time has passed, I will release the game source code as some kind of open source. I'm not very happy with the draconian nature of (L)GPL, nor do I believe the other licenses have much merit other than to boost the egos of the original authors, so I might just possibly release it all as public domain."

[1] http://web.archive.org/web/20110920065648/http://www.minecra...


He probably expected that sales would go down to irrelevant. That never happened, instead he got an absurd deal. MS is open sourcing to satisfy modders, eventually for more reach and cash. The intentions are very different and it would be awful to blame notch for that.


The intentions may be different, but it doesn’t mean one of them has to be bad. If MS makes money and users get to do more with the open source code, it’s a win-win.


Hit the nail on the head!


[flagged]


It's ok to be white.


[flagged]


Please don't break the site guidelines yourself, no matter how egregiously another commenter has behaved. This is covered in the guidelines too: https://news.ycombinator.com/newsguidelines.html.


You are 100% correct. I know that I have the troll gene (that is troll as in fishing for reactiong, not troll = evil hater) so I need to check myself regularly that my reaction to trolls isn't to try out-troll them. I fight I know I can't win but mainly I respect that it shouldn't be fought here.


At least the sales is not dying at all. Surprisingly the number of active players is still increasing.

[1]: https://www.google.com/amp/s/wccftech.com/minecraft-sales-14...


I was hoping Microsoft buying it would mean they would make it free or at least drop the price. There's no way I'll be paying 24€ for a pixelated sandbox game written in Java.


They released the Windows 10 version for free for a period of time. That’s the version that is cross platform with the likes of the Switch and Xbox One iirc. The RaspberryPi version was also released for free but you know, It’s the Rpi not not exactly a power house. And I’m sure the Java version has been on sale a couple of times.

I ended up buying the game on the 360, PC and Android over the years (though I think I only paid something like 10p for the Android version during a sale or Google Offer). Yeah it’s a pixel game, yes it’s Java, yes it can run like shit, yes it’s a sandbox game with no real objective. But it’s surprisingly relaxing. I’ve lost count of the amount of hours I’ve spend just building.


If you don't understand Minecraft, then don't play Minecraft.

I bought it when it was $7, way back in the alpha days. I bought it because I was excited by the idea. I'd still pay $30 for it today, if I didn't already own it, because I still love the idea.


There is a reason why game publishers don't take decisions based on programming languages.


Why not?


My kids love it. They learned to play it from teenagers who have moved on. And they're teaching littler kids how to play it, too.

Maybe that's the thing.


Man I remember that. I was disappointed he didn't follow through, especially since Minecraft made him obscenely rich and there's really no reason to keep it closed source.

Microsoft followed through where Notch couldn't. How about that...


I mean for what it's worth sales never really died out.


well to be fair Microsoft gave him almost 2 billion for it, at which point it wasn't his to open source anymore, and for him being a sellout I don't blame him, I blame his obnoxious fanbase at the time.


Oh of course, but there was a long period before the sale during which it could have happened.


When did "sales start dying"?


Never.


> Microsoft followed through where Notch couldn't.

But this isn't the full source code.


It's more than Notch ever released? And it's my understanding there's more to follow.


The entire source of Minecraft has been available to mod authors for quite some time.


That's like saying everything is open source if you can write assembly. Minecraft only ever released binaries and they also went out of their way to use an obfuscator so all of the class and method names are garbage and change every update.


They also released a modders kit which renamed all the classes and methods, producing source code which, when compiled again, produced Minecraft.


The Mod Coder Pack wasn't developed by Mojang. MCP is the work of the community to reverse engineer and deobfuscate Mojang's binaries. The whole point of creating the MCP in the first place was to get around Mojang's use of tools to break most Java decompilers and try and document and come up with sensible names for all of the classes.

If Mojang had simply compiled and released their game without obfuscating it first then there would be no point to the MCP in the first place.


The person who created the MCP was hired by Mojang several years ago.

That person still releases the MCP with Mojang's blessing last I checked.


That doesn't change the fact that Mojang didn't make MCP. If Searge didn't step up and do it there's no reason to believe that Mojang ever would have come up with something similar. Mojang promised for years and years that "the modding API will be released any time now" yet they haven't done anything to materially support the modding community other than to hire Searge and the Bukkit team.

I guess they finally have behavior packs like resource packs for Bedrock edition (used to be Minecraft PE) but that doesn't allow you to write any kind of turing complete code for custom behaviors. That's the closest they've come and all that lets you do is stuff like make pigs behave like a creeper and explode when the player gets too close.

To date it has been 8 YEARS literally the better part of a decade from when Mojang first announced that they were going to release a modding API and they still haven't done anything. Releasing these two libraries as open source is a nice gesture but that doesn't actually do anything for the modding community. The least they could do is just stop obfuscating their releases so that MCP isn't stuck doing a bunch of unnecessary work.


decompiling is not the same as releasing the source with a license.


It didn't just decompile. It renamed all classes and methods and it included a source code usage license.


Maybe his hands were tied in the sense that releasing things open source would limit his ability to package and sell it off at a later date? I'm sure there were negotiations in progress at the time he would have considered doing so and from my POV, which could be terribly wrong, it would seem that releasing the thing you are considering to sell, for free, would sort of meddle with the entire process of selling it off?


GPL draconian? How do people misunderstand it so? The GPL is there so that your contribution will actually benefit society in the long term.


You are confusing purpose (what GPL intends to accomplish) with methods (how the GPL attempts to accomplish it's purpose); “draconian” described the latter and your description of the former does not, even if true, contradict it.


My guess is Notch, like many developers, was put off by the "viral" licensing [0] of the GPL.

[0]:https://en.wikipedia.org/wiki/Viral_license


One of the things GPL does is take away many of the developer's rights. It's a protection for code, not for it's creators - and the latter is what most licenses try to protect.


Two of the most boring parts of Minecraft, unfortunately. Both are something your average first year CS student could put together in a weekend or two.

If I can indulge in some self-promotion, I have written mountains of code which implements many of Minecraft's behaviors down to the last detail, which may be a more interesting candidate for study:

https://github.com/sircmpwn/truecraft

Seeing Balze3D open-sourced might end up being pretty cool, though.


> Both are something your average first year CS student could put together in a weekend or two.

Sometimes I see people and wonder which of these two things is true:

1. They have no idea what the average developer actually is.

2. They are lying to make it sound like they were elite when they were a freshman in college.


I suspect a bit of both in this case. SirCmpwn unfortunately has done this for many years, and is one of the people that pushed me outside of the Minecraft dev world, he can be really nasty :(.


I was a jerk the first few years I was involved in the Minecraft scene, and I'm still a jerk all too often today. I'm sorry for making you feel that way. If you want to talk, my email is in my profile.


At the end of it all, people won't remember your work - but they damn sure will remember how you made them feel. They'll remember how you treated other people. Ultimately, that will be the judge of your worth in the eyes of whatever community you participate in and society broadly.

Few people do work that transcends awful character. Very very few people. Steve Jobs is an example, but let's be honest neither you nor I will have the same level of impact to excuse ourselves after treating others terribly.

With that being said, I admire your effort to mend things and the bit of self-reflection in your response.


Do you think Steve Jobs made contributions that outweighed him being a jerk? I don't think that ever happens, in that I don't think you ever forget someone being a jerk, but then I don't think we aren't capable of appreciating the good and the bad at the same time. There must be studies around this. Maybe someone is aware of some.


It's amazing how little interactions add up to a reputation. You banned me from a minecraft irc channel when I said that the leap second was causing issues with some minecraft servers. (see https://www.wired.com/2012/07/leap-second-bug-wreaks-havoc-w...) since then I avoided a collaboration opportunity with you for this purpose. (Mediacrush-related)

Bad experiences like this add up, and it's very hard to repair a broken reputation.


"I'm sorry for making you feel that way. If you want to talk, my email is in my profile."

We should all so this more often.


I wouldn't take this as a sincere gesture. So many people say this in the public eye just to save face without any intention to take it further.

I realise I'm replying in context of Sir_Cmpwn specifically (and I have had my own interaction with him in the past on unrelated projects in very sour taste) but it is more common with anybody that promotes an apologetic-but-contact-me attitude. It's an all to familiar trait of people trying to sound good in threads of their topic.


It seems a number of us have had bad run ins with Sir_Cmpwn. I too have had issues, it’s a shame because I think he’s a brilliant guy.


It looks like an apology on the surface but I don't think it is one.

"I'm sorry for making you feel that way."

That's very close to the classical non-apology apology "I'm sorry you felt that way". [1]

He isn't sorry for his behavior, but sorry that his behavior caused certain feelings. The post he's responding to doesn't mention any feelings, so I assume he meant "Sorry for making you feel that you were pushed out of the scene". He's shifting the focus from his actions (for which he is responsible) to other people's feelings (for which he is not responsible, since he can't control other's feelings).

"If you want to talk, my email is in my profile."

Meaning: Please don't continue talking in public about this.

[1]: https://en.wikipedia.org/wiki/Non-apology_apology


> He isn't sorry for his behavior

"I was a jerk the first few years I was involved in the Minecraft scene, and I'm still a jerk all too often today." is the longer sentence preceding it which is 100% a statement about his own behavior. "for making" actually makes the sentence you're quoting about his behavior too, in my interpretation of it.

It's an apology. Maybe you don't think it's a strong one, or a sincere one, or one backed up by corresponding action, but it is one acknowledging damage done, some responsibility for it, and stating a desire to change (unless you have a wildly different interpretation than I do about what, exactly, "I'm still a jerk all too often today" means.)


Usually those type of people had some trauma in the past or had really bad parent-child relationship (probably abused or something). I honestly think SirCmpwn should get professional help. Mental illness should not be ignored.


SirCmpwn was kind of a jerk from what I remember of him in an IRC I was in... but I still liked him (not the guys who ran the channel, unfortunately). He was damn smart and I seem to have a higher tolerance for "smart but jerk" types of people (of which there are many)...

Also, do you remember me? :D


To the contrary you were an inspiration for me, you even joined our small development community and were interested in our development.

Nobody is perfect, you’ll always screw up with one person and succeed with another :)


The problems mentioned here is that it’s obvious a number of people have had meaningfully bad interactions with him, it’s an unfortunate pattern.


> Sometimes I see people and wonder which of these two things is true:

> 1. They have no idea what the average developer actually is.

> 2. They are lying to make it sound like they were elite when they were a freshman in college.

Concerning 1: they might really be living in some kind of filter bubble of really smart people. Smart people often attract and are surrounded by smart people.


A while ago I checked what's the rate at which code gets put down within the organization I'm working at.

I went through a few repos and the result was a weirdly consistent 30-45 LOC(sans tests) daily for a 2-3 person team - at least on the front-end.

Since then I'm sceptical of opinions saying that a 1500 LOC+ project could be put together "within a weekend".

Not saying it doesn't happen, but good projects of this sort have to be rare.


If you sit down for a weekend and write a one shot project that's never going to be used in production 1500 LOC is more than doable, especially as a college student where you sometimes can go many weeks without doing anything productive.

Sitting at a desk for 6-8 hours every weekday with an editor in front of you has this weird demotivating effect. Add to that all the unit tests (and general need for stuff to actually work well the first time), documentation, and not being able to just run off and build what ever you feel like and you get closer to 30-45 LOC.


The numbers you have found are the numbers averaged over all kind of projects (new projects, old projects). It is well known that the average daily LOC output in the industry is not high. Once a project has reached a certain complexity or maturity, people spend more and more time on debugging, refactoring, documenting, profiling etc.

For a new project, 1500 LOC within a weekend sound possible if the goal is to quickly produce some kind of proof of concept. You would probably spend the following days on redesigning the whole thing, though :)


Once I spent 2 days debugging something that got solved be deleting half a line (some hopefully unneeded condition in a long if)...


You can put out a lot more code when you're starting from a blank page than when it has to integrate with thousands of lines of existing code. Not to mention that at the start there's basically no refactoring, debugging or rewriting target, so you can just pump out new code. Whether 1500+ LOC on a weekend is realistic is another matter.


> I went through a few repos and the result was a weirdly consistent 30-45 LOC(sans tests) daily for a 2-3 person team

The "sans tests" metric is in my opinion some kind of cheating to keep the number small.

Let me explain: when I was younger, I was already immensely productive as a programmer. But because I was young and naive, I did not care about testing etc.

When I look at code that I produce today in my free time, I observe that the ratio between test code and normal code is about 6:1. It is similarly hard to produce good test code as it is to produce "ordinary" code.

So by demanding that the code is well-tested, we need a lot more code to solve the same job. If I multiply your upper bound of 45 LOC by my factor of 7 (= 1 + 6), I obtain 210-315 LOC/day. This is much nearer to my experience of 400-500 LOC per day. The remaining difference can be plausibly explained by experience of other team member, time for communication in the team, time for communication with customers, overhead demanded by management, ...


I had to use this metric to account for the, ahem, work ethic of some and the lack of tests resulting from it.

But I agree - a good test suite is going to be much larger than the code it's testing.


Lord. I was reading 30/45 KLOC...


Well programmers are well known for being bad at estimating how much work something is. I’m less sure about datafixerupper but a bunch of the functionality of the command parsing could be done in a few weekends. Making sure it works reliably and adding completion and ensuring a good interface would be harder and more work.


Usually I err on the side of the former (option 1). The more someone becomes an expert their field, the more they tend to underestimate their own knowledge/skill.


It's just simple straight humblebrag.


I did not go to college so I have to admit I'm not actually familiar with the average freshman's skill level. That being said, these are basic and well-understood problems solvable by the average, say, junior developer in the industry. Less of a reach?


Far, far lower than you're envisioning. There are certainly a lot of freshmen who could easily do something at this level, but the average freshman would be hopelessly lost (at least in my (recent) experience).

By the way, excellent work on Sway. I've been meaning to jump to i3 forever, and decided to move to Wayland on my most recent install. I do have some bug reports to send your way, though, I should get on that.


Thanks! Please do send those along, though a patch is worth a thousand bug reports.


Indeed it is. I'm hoping to get the time to dig into it enough to submit a patch, but school has me pretty busy at the moment.


An average CS freshman knows how to write hello world and print Pascal's triangles on the command line.

An above average freshman at an above average university can probably make Sudoku, Tetris or Brick breaker.

Even the smartest students probably won't be able to make.minecraft in a weekend. Maybe as a semester long project. But not a weekend.


I never suggested anyone could make Minecraft in a weekend. Microsoft only open sourced two small libraries that only represent maybe 0.1% of Minecraft.


Just chiming in to say that I agree with what you said. I found the released libraries to be underwhelming to the point of almost uselessness based on the descriptions. I've written stuff like that for projects back when I was in school, and if I needed such tools, making my own would likely take about as much time as implementing someone else's.


At least half my class struggled (heavily) with recursion while implementing seach algorithms e.g. They all still got their degree as well...


Degrees is irrelevant. I have an associates in a related but not quite CS degree and show more quality of work than another junior (and sometimes senior developers) who has a bachelors degree. I have tried to teach him so many things numerous times and its all in one ear and out the other. Seen the same problem with a "senior" developer who claims to love some standards yet his code commits say the opposite.

/endrant


Ah yes, profunctor optics, an excellent topic for a freshman CS student's weekend project:

https://github.com/Mojang/DataFixerUpper/blob/master/src/mai...


DataFixerUpper looks more sophisticated on the surface, but it's egregiously overengineered, and tools accomplishing the same stated purpose could be made by a freshman with a couple of weekends to spare. It's also not particularly relevant to Minecraft, it's more of a general tool - so anyone hoping to learn about Minecraft from this will really learn more about Minecraft's annoying legacy baggage.


I think you underestimate how many weekends it would take a freshman - when I first took a CS course, I spent a solid few weekends working out array syntax, strchr and strncat, and how to best google compiler error messages. I was pretty proud of the text-based 2-player chess game for which I put in some late nights for my final project...a Minecraft renderer would have been a long way out.


This isn't a Minecraft renderer I'm talking about. The Minecraft renderer would be the non-trivial project I said "might end up being pretty cool" if they open source it.


When I went to university it was back in 94, and then people who took CS courses were pretty much self-taught programs already.

Sure "theory-stuff" was often new, because of the self-taught nature of the under-graduates. (I knew what a stack was because I'd done assembly-language coding, but I had no name for something I'd "created" which was a linked-list. Funny story.)

I assume nowadays with the internet people who want to code, can start early if they wish. Even if the lure of the outdoors is strong, and time is short.

With that in mind I'd assume any first-year student could write a system for updating data-files according to simple rules, (i.e. datafixerupper), and manage a simple parsing-class of some kind which would let you tokenize and react to "/send foo bar" input.


Well it depends what that freshman knows. Perhaps not an average freshman but if someone were to read about/see a talk on profunctor optics in (say) Haskell, trying to implement that in Java could be a fun weekend project. I think I saw a recording of some talk about profunctor optics when I was in my second year.

A reasonably large tested and complete library is not a project for a few weekends but I think profunctor optics in Java actually is. And much more suitable for a xs freshman than a typical Java programmer.


What is that even? Google searches just bring up academic papers or Haskell stuff.

Looks like nobody properly understood it yet, if it's so hard to explain what it even is.


The papers define the "profunctor optics" mechanism, so it's not really that it isn't understood: it's really Haskell code that implements lenses and prisms, which previously had less elegant formulations.

Yes, there is also Bartosz Milewski having a go at applying category theory to explain why profunctor optics work. But that's not an essential part of understanding them: they clearly do what they are designed to do. This is programming, not physics.


If I can't roughly explain what something is in 2-3 sentences I don't think I understood it well enough.

Your description didn't really help me either. Lenses and prisms are just glass objects to me.

Just from thinking about lenses, I guess It could be something that bundles and unbundles function calls... But no idea.


I didn't describe them! I just told you what the state of play is.

A lens is a "functional reference". Say you have a data structure of some kind. You can create a lens which points at one of the fields. It lets you get and set that field. Because this is functional programming, when you set the field, you get given a new reference to the whole structure (can't change things in place). So, naturally the way lenses are used involves combinining a reference to a structure of type A, a lens which refers to a field within type A, and, if you are setting the field (not getting it) then you supply the new value as well.

The jury is still out on whether writing programs in this style is wise, but the notion of a lens is fixed now.


It seems more like they wanted to make the rounds on various blogs and news sites which will inevitably display something along the lines of "Minecraft is now open source!" In the end, based on what they've currently released it appears to be more of an advertisement than anything. With a huge mod community creating projects such as MinecraftForge, most of what is currently released by Mojang/Microsoft is largely irrelevant.

If they release their game engine, however, that's a different story...


>If I can indulge in some self-promotion, I have written mountains of code which implements many of Minecraft's behaviors down to the last detail, which may be a more interesting candidate for study

It is an interesting case study. The code has failed to run for myself and the five other people i handed the project to with different configs. There are no tests that validate the project works. Its certainly work to be proud of, insofar as maybe its worked for some subset of people in the past.

Edit: I was excited to work on this code and spent a healthy amount of time reading through all of it to find great places to contribute. After writing a small pr, mostly a throwaway to test the waters, I was greeted with unmitigated assholery by the main devoper and their irc crew. I kept the logs from an irc conversation i had about the pr as a reminder of how not to act towards developers on projects i work on.


Well, the code has been unmaintained for some time now, and only grows more stale (especially considering the .NET ecosystem has been in turmoil during that time).

There are tests, though, but they only focus on the parts which are fragile or complicated:

https://github.com/SirCmpwn/TrueCraft/tree/master/TrueCraft....

Edit: oh, I think I remember you. If I'm right, here's your pull request and the corresponding IRC logs:

https://github.com/SirCmpwn/TrueCraft/pull/283

https://sr.ht/4tKr.log


If there are tests and the project can still fail to run, is the test suite really good?

Blatant and rude sarcasm: you dont need to answer because a freshman cs student would know the answer.


It’s quite amazing how fast kindergarteners gets addicted to Minecraft. Here is a suggestion: create special version of Minecraft for kids below 10yr old. Discourage killings, shootings (even for animals) and encourage building. This “Kids Edition” has great chance of selling hot!


I notice that repo has commits ranging in age from 7 months to 3 years, so it seems to have taken you quite a bit longer than “a weekend or two”. Maybe tone down the arrogant trash-talking a bit.


As I pointed out in a few other comments, the code that Microsoft has open sourced represents a tiny fraction of the Minecraft codebase, is only loosely related to Minecraft at all, and represents basic and well-understood problems in the industry.


> Two of the most boring parts of Minecraft, unfortunately. Both are something your average first year CS student could put together in a weekend or two.

So sad that it's like average second year in my school's curriculum.


Well, when I was in school, it was honestly a toss up whether the median student had ever looked at source code prior to college. Tech company booms and busts do stuff like that.


Sad indeed. In my country, programming at all is taught to preschoolers as a distraction.


I'd really like to learn more about the concepts of this kind of game design. Where can I start?


If it's my advice you're looking for, the only way I've done it is by studying someone else's game and attempting to replicate it 1:1. It's more an exercise in reverse engineering than in game design.


Perhaps a different phrasing of the question (certainly my view) would be "I could go create a (not 1:1 feature) game myself, as a project, and I would learn new stuff, but would I cover all the concepts built into Minecraft?"

I would be interested in the syllabus that building a 1:1 minecraft would teach.

So for example, "Minecraft creates the same world each time from a fixed X Byte salt, and uses these well known algorithms for generative landscape production"


In addition to @Sir_Cmpwn's answer, the developer logs from Voxel Quest (@gavanwoolery on HN) and Seed of Andromeda are both excellent starting points for getting a general overview of what's involved in this sort of undertaking. Both of those games ended up releasing their full source code by the way, so you're also free to pick through every last detail if the logs aren't enough.

Links:

https://www.voxelquest.com/news/every-version-of-voxel-quest...

https://www.seedofandromeda.com/blogs


Ah, then some useful algorithms and keywords to study would be OpenGL, voxel rendering, A* pathfinding, cellular autonoma, perlin noise, etc.

Red Blob Games has a lot of good articles covering many of these subjects, here's a few:

https://www.redblobgames.com/pathfinding/a-star/introduction...

https://simblob.blogspot.com/search/label/noise


Creating Minecraft is a lot of work, but creating something that generates psuedorandom worlds and lets you walk around them is a feasible couple-of-months-of-spare-time sort of project, assuming general programming competence but not assuming any particular skills in computer graphics. Odds are good you can find someone blog posting about it in your favorite language if you look. I've seen a number of them. If you cheat and use the Minecraft textures it looks a lot like early Minecraft too.


No way, Beta 1.7.3 is my favourite version. I'm going to have to try this.


It's not like they want to showcase their rocket science.


> Both are something your average first year CS student could put together in a weekend or two.

No unit tests in sight? Sounds about right.


The code is being open-sourced as MIT-licensed libraries. The libraries mentioned in the article are Brigadier [0], a command parser and dispatcher, and Data Fixer Upper [1], which is used to migrate older chunk data to newer versions of Minecraft.

Apparently more libraries are in the pipeline to be open-sourced alone these two. One possibility is Blaze3D, which is a rewrite of the rendering engine that is planned on being included in Minecraft 1.14.

    [0]: https://github.com/Mojang/brigadier
    [1]: https://github.com/Mojang/DataFixerUpper


Clickable links. If you indent text, that gets formatted as code.

[0]: https://github.com/Mojang/brigadier

[1]: https://github.com/Mojang/DataFixerUpper


Also the numbered quotation format is really without indentation. If I recall correctly in restructuredText you can do the same to do quotations correctly, and you could also put in strings instead of numbers, e.g. [<Author><Year>] (might need Sphinx, a library on top of resT, or maybe a bibtex plugin).


Ah, is that the case? I just remember picking up the indentations for references somewhere, and never really got around to finding out whether that was the right way to do things. Looks like I need to change that habit


I knew about the indenting leading to formatting code; I've just been in the habit of indenting references like that, and didn't occur to me that that would break the clickable links. I'll have to keep that in mind in the future.


As some who loves the lens library in Haskell, this makes me in awe:

https://github.com/Mojang/DataFixerUpper/tree/8b5f82ab78b30f...

Profunctors, lenses, prisms, traversals… all there :)


Honest question, if you look at this:

https://github.com/Mojang/DataFixerUpper/blob/8b5f82ab78b30f...

Is that understandable to you? And does this really make solving some problems easier?

I've dabbled a bit in Haskell, but never got further than functors, applicatives and monads, and I always wonder whether this kind of stuff really helps.

(It probably doesn't help that Java is very verbose, especially compared to Haskell...)


It probably could do with some examples, and better docs, but it seems like they use this to update old chunks, which is a great use of lenses.

But yeah, you'd have to weigh that up against how ugly it turns out to be in Java. It's not just because of the verbosity, it's the lack of being able to abstract over type-level functions that makes it quite icky to implement these abstractions in Java.


> Is that understandable to you?

Of course using lens in Java is going to have compromises and nothing is going to beat Haskell in readability for this kind of programs. As you pointed out, Java is verbose and that hurts the readability a lot.

> And does this really make solving some problems easier?

Whether this makes solving problems easier, I would say in Haskell, I routing compose half a dozen of optics to do a fold or update and it really makes things easier. I haven't read this Java version so I don't know whether the power-to-weight ratio here is similar.


It would be really cool if Minecraft, Minetest [0], and Terasology [1] development communities could somehow join together to create a cross-compatibility between their games. There are a lot of open-source developers in those communities who can combine efforts take voxel gaming to new heights.

[0] https://minetest.net [1] https://terasology.org/


Ha came here to leave a link to Terasology. A classmate created it back in the study days. He went to work at a German game studio.

The project was joined by more and more contributers and has become really impressive!

Minecraft-like games are not really my thing but I recommend it to most people mentioning Minecraft :)


Back when we were working on Bukkit, when Dinnerbone and the other three were aquihired? by Mojang, one of the main things they wanted to do was implement a proper modding interface into the game.

Lots of things conspired to make that not happen, undoubtably including feature creep (because it was going to be the official mod api, it had to be correct not just good), but it finally looks like they're moving in that direction.


Worked on a fairly major PvP minecraft community / mod website at the start of this year. Minecraft PvP is sort of a competitive set of modifications that build out entire networked games. The games use normal minecraft concepts like item consumption. Almost all "fighting" is done with swords, with people clicking their mouse very fast.

All of the mods were based on 1.7.10, which is pretty far back, looks like 1.13.1 is the latest.

There are still a lot of young people playing minecraft PvP, particularly outside the US. But you could tell even then that Fortnite was eating up younger players.


Minecraft's deobfuscated source is publicly available for viewing for those who are interested through Minecraft's Mod Coder's Pack.


It's been deobfuscated, but it's not in the original unobfuscated form.


Isn't that just reverse engineering and cleaver renaming based on what the functions/variables actually do?


"just"


So your implying that it's not trivial. I acknowledge that.

What I was implying is that a third party deobfuscation project by reverse engineering with minimal input from the original developers would presumably be different in terms of variable/function names, etc, comparing it to the original source.


I looked at DataFixerUpper - should I be surprised that there appears not to exist even a single test for this piece of engineering?

Boggles my mind that someone would engineer something so sophisticated and not write even a high-level test script of some kind.


This comment is why people think twice before opensourcing their code


Maybe.. but this is a VERY sophisticated data migration utility.

It going wrong can mean crippled data!

I am certain /some/ code must exist to allow the authors to verify it does what they want so my question is more: where is it?


This seems to only be the command engine itself, which by the way is the sorry excuse for modding support that Mojang put out after Notch's promises. Not particularly exciting, but Blaze3D seems a little more interesting.


Thank you for your hard work. I've enjoyed countless hours meditating while chipping away at blocks that later went towards my castles. Anything further that you choose to release, I thank you again. And thank you for providing the venue to allow me to connect with my little brother, for that I can never repay you.


Not really that surprising since there seems be a lot of focus on things like Minecraft Education Edition, which isn't Java based.

(Which, as a teacher, I am finding a fantastic tool for both introductory programming and other topics)


Why did they choose to implement various functional programming concepts from scratch? Were there really no suitable preexisting implementations at the time?


What is something one could develop with this source code that would have been more difficult or impossible before?


Interesting, but how much of this has been reverse engineered from decompiling the Java classes already?


That's what I thought too at first --- Java (and .NET) is so easy to decompile that having the original source is not so much of a big deal.


nothing, both these projects have been deobfuscated from the start and then recently released on Github


I remember BUILD 2015 when a Minecraft mod was used as a demo and the team complained.


Instead of open sourcing code, they should fix the Aquatic update. All Minecraft versions after 1.13 are literally unplayable for me (mid to high end gamer PC) due to freezes. Every 5 seconds, the game freezes for two seconds for me. Increasing RAM for the JVM was useless. After the update, the game needed more than 3GB of RAM when before it ran just fine on 1GB (I have 16GB of RAM so no problem there, but the game still freezes). I have never seen more broken updates except with Skype - which, now that I think about it, makes perfect sense, considering it's also from Microsoft.

Why would I use their game library when they ship such incredibly broken updates?


1m people play the game with no issues. Did you open a support case? Did you open a bug? What’s the ID? Also giving more RAM to Java is a bad thing as GC can cause lag. I run 1.13.1 on an old AMD 2ghz under Windows 7 with a Nvidia cards from 2011 and get 30-90fps. Also runs fine on my 2017 MacBook and on an intel compute stick (i5, 4gb ram, Win10 on a 4K screen). Something else is your issue and you just see it in the game.


I updated my Nvidia graphics driver and that fixed the issue. It's probably a case of Minecraft using the OpenGL API wrong and the driver needing to compensate for this broken usage of the API.


If they open source that, then everyone else can fix their bugs. Of course, it would usually be wildly optimistic, but looking at with the mod scene has already done, I'm optimistic.


I would check to see if you have 32- or 64-bit Java installed. I've seen similar issues (years before 1.13 was a thing) due to 32-bit Java. Install 64-bit and should be good to go.


The Java runtime is bundled with minecraft. I use 64-bit and I use the same JRE everyone else uses.




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

Search: