

Bringing Minecraft-style games to the Open Web - maxogden
http://maxogden.com/bringing-minecraft-style-games-to-the-open-web.html

======
citricsquid

        I was disappointed to find out that not only is Minecraft 
        closed-source but it also hasn't shipped an official API 
    

There is currently a plan for this to be added to the game, there's no public
time-line but they are working on an API. There are also some really amazing
community projects that have built this sort of thing, server side there is
bukkit and client side there is forge.

<http://dev.minecraft.net/blog/> <https://github.com/Mojang/Minecraft-API>
<http://bukkit.org> <http://www.minecraftforge.net/forum/>

~~~
meaty
You can poke inside it a bit though using JD-GUI:

<http://java.decompiler.free.fr/?q=jdgui>

Illegal or not? I don't really care. Reverse engineering for compatibility is
legal here :)

~~~
agaricus
You may be interested in the Minecraft Coder Pack from Ocean Labs - they
include the Fernflower decompiler, producing very high quality output
(certainly better than jad, tbh not sure how it compares with JD-GUI). But
even better, MCP includes a comprehensive set of "mappings", providing
informative names for each class, and most important field and method names.

Running a decompiler (JD-GUI or otherwise) on Minecraft by itself will produce
obfuscated source, so having this deobfuscation step is very useful as a
modder. If a symbol is not deobfuscated, you can submit a proposed name on IRC
to MCPBot, or even provide a description for the Javadoc.

The end result of running MCP on Minecraft is a fairly readable source base,
which one can easily make changes to and recompile. This is how modding
frameworks such as FML and Minecraft Forge are built (although CraftBukkit
uses a different approach - they don't use MCP but their own, less
comprehensive and incompatible mappings, one reason why Forge mods and Bukkit
plugins cannot easily be used together, a problem being solved with the merged
Forge/Bukkit "MCPC+" server from MC Port Central).

------
xahrepap
"There are a few out there, but quite frankly they all reeked of Java and were
limited by the nature of decompiling as a workaround to Minecrafts lack of an
API."

What does Java smell like?

Seriously though, is it really the language that's the problem here? Honestly,
this guy is a JavaScript developer. If there ever was code that had potential
to "reek" it would be JavaScript. However, it would be ignorant to discredit
an entire language and toolset because of that. Don't judge every line of Java
code out there because _Minecraft_ , of all things, doesn't have any kind of
public API or because it's closed source. Especially since Java has such a
thriving Open Source community.

The article was however really interesting, and I'm glad the author wrote
about his experiences. I've been playing around with Minecraft and thought it
would be fun to write a clone of my own.

~~~
maxogden
Sorry about the tone, I definitely could have said that part more nicely. To
me Java smells like too many abstract interfaces, lots of boilerplate and hard
to use build tools. Java was the first language I learned so I may very well
be scarred from the experience.

------
gavanwoolery
Another open source voxel engine worth checking out is PolyVox (which powers
Voxeliens, among other things).

<http://www.volumesoffun.com/polyvox-about/>

------
chipsy
As a side project I've been contributing to a remake of voxel FPS Ace of
Spades based on a C/Lua stack: <http://github.com/iamgreaser/buldthensnip>

It's already a playable game at this point, but I have some interest in
following the progress of a JS engine for the kinds of reasons outlined in
this blog - code reuse tends to be a lot better within the browser.

------
asselinpaul
Have a look at this, exactly what you are looking for:
[http://badassjs.com/post/40691367335/voxel-js-a-minecraft-
li...](http://badassjs.com/post/40691367335/voxel-js-a-minecraft-like-block-
based-game-engine)

~~~
quarterto
Did... did you read the post? Or look at who wrote it?

~~~
asselinpaul
oops, sorry yes, I realised later.

