Not much in here as of right now , so if you looking as to what can be done immediately there isn't much of anything. It is cool that this is being worked on in public. Honestly I don't know why this is a fresh project instead of just an official fork of Bukkit.
Besides the mentioned licensing-issues, Dinnerbone (the guy hired by Mojang, who used to work on Bukkit) – as well as others involved – has said that they like the opportunity to start fresh. Things, which was done one way in Bukkit, isn't necessary the best way and given the opportunity to do it better, it's not a hard choice.
The Minecraft API Is Now On Github
21–30 of 53 posts
Re: The Minecraft API Is Now On Github
#22Earlier quoted context omitted.
The project setup in the repository also has two "superfluous" levels of hierarchy: |- main |- java At this early stage this seems like overengineering, and if at some point the project gets code e.g. javascript, it might be worth it to add ./js-src at the top-level first.
Which has nothing to do with Java. The developer chose that hierarchy. Correction: As per the message below I guess I should say that it has nothing to do with Java, the ecosystem, framework he is using is forcing him to use that hierarchy.
Maven requires a standard directory layout. Maven chose that hierarchy, because:
1) Namespacing. With tens or hundreds of thousands of packages out there, there needs to be an unambiguous way to refer to them separately.
2) Multiple language support. Maven can do Java, Scala, Clojure, Groovy, and so on - in the same project, even. It can even do Javascript, which isn't a JVM language, in certain cases. For the JVM languages, if you want a multi-lamguage project, there has to be an easy way to interoperate (this is enabled by namespacing).
3) Separation of test code and program code. Don't ship tests with your binary package.
4) Separation of code from data.
5) Automation - of packaging, IDE support, etc. This has to do with all of the previous ones. You want to produce a JAR, but don't want to include the default log configuration. So you package the project up. It just happens. You want to edit the code in your IDE. So you add the project. All libraries are downloaded and on your classpath. Add a few lines to your config (as a per-system-user setting or per-project setting, take your pick). Java documentation and source code for those libraries is automatically downloaded. Eclipse hooks it up for you.
Suddenly, this:
src/main/java
src/main/scala
src/main/resources
src/test/java
src/test/scala
src/test/resources
...makes a lot more sense. It's hardly overengineering, but even then, the engineer isn't the one engineering the build system; these are details Maven takes care of.
[Aside: I am appalled and flabbergasted by the ignorance typically leveled at Java by people who don't understand it✝. It has real flaws, don't get me wrong, but making dependency resolution and installation ridiculously straightforward, multi-language builds dead simple, and unit testing a core feature - these are good things.]
Take a look at ant and compare it to maven and you'll see which one makes your life easier✝✝.
✝ I have worn many hats, and have experience with Python, Ruby, PHP, C, Java, and a little bit of Scala in real world contexts, among others. So I'm not a noob who hasn't experienced elegance or conciseness or performance. Java is actually an amazing language that many people don't give it credit for. Though the syntax can be pretty ugly even when the code is conceptually solid.
✝✝ Losing a bit of nuance here - ant gives you configuration. maven gives you convention. Ant is good for very custom; maven is good for straightforward processes.
Re: The Minecraft API Is Now On Github
#23Directory structure: Minecraft-API |- src |- main |- java |- net |- minecraft |- workbench Good old Java. On my machine that means it would end up being: /home/ajf/Projects/2012/Minecraft/Minecraft-API/src/main/java/net/minecraft/workbench/ Who on earth thought deeply nested directories for packages was a good idea?
Re: The Minecraft API Is Now On Github
#24Earlier quoted context omitted.
Which has nothing to do with Java. The developer chose that hierarchy. Correction: As per the message below I guess I should say that it has nothing to do with Java, the ecosystem, framework he is using is forcing him to use that hierarchy.
EDIT: This is meant to be educational, not a rant. I'm hoping people take it that way. Maven requires a standard directory layout. Maven chose that hierarchy, because: 1) Namespacing. With tens or hundreds of thousands of packages out there, there needs to be an unambiguous way to refer to them separately. 2) Multiple language support. Maven can do Java, Scala, Clojure, Groovy, and so on - in the same project, even.…
Re: The Minecraft API Is Now On Github
#25The Minecraft API is going to make mod development SO much easier. No more decompiling and patching hacks. I've been waiting for this since Mojang snagged the Bukkit team. I look forward to the first client/server builds that support it. I added a Jenkins build job for it on BuildHive so anyone can download the bits if you want to play with the very limited banning API that they apparently have so far :) https://buil…
Re: The Minecraft API Is Now On Github
#26Earlier quoted context omitted.
Which has nothing to do with Java. The developer chose that hierarchy. Correction: As per the message below I guess I should say that it has nothing to do with Java, the ecosystem, framework he is using is forcing him to use that hierarchy.
EDIT: This is meant to be educational, not a rant. I'm hoping people take it that way. Maven requires a standard directory layout. Maven chose that hierarchy, because: 1) Namespacing. With tens or hundreds of thousands of packages out there, there needs to be an unambiguous way to refer to them separately. 2) Multiple language support. Maven can do Java, Scala, Clojure, Groovy, and so on - in the same project, even.…
Re: The Minecraft API Is Now On Github
#27The Minecraft API is going to make mod development SO much easier. No more decompiling and patching hacks. I've been waiting for this since Mojang snagged the Bukkit team. I look forward to the first client/server builds that support it. I added a Jenkins build job for it on BuildHive so anyone can download the bits if you want to play with the very limited banning API that they apparently have so far :) https://buil…
Wait a minute, they snagged the Bukkit guys? I must have totally missed that. I'd love a link, if you've got one.
Re: The Minecraft API Is Now On Github
#28Earlier quoted context omitted.
Well, obviously, by using them in the language without requiring them on the filesystem? I think you should be able to cat together all the .java files in your project and it should still compile. I guess you could easily do it using a very simple preprocessor.
If you do that you will no longer be able to tell the overall structure of your project at a single glance without using an IDE like Eclipse. Adding and removing packages becomes harder without the IDE. What are the upsides? You've increased the complexity for no good reason.
I do this all the time using static inner classes.
Re: The Minecraft API Is Now On Github
#29The Minecraft API is going to make mod development SO much easier. No more decompiling and patching hacks. I've been waiting for this since Mojang snagged the Bukkit team. I look forward to the first client/server builds that support it. I added a Jenkins build job for it on BuildHive so anyone can download the bits if you want to play with the very limited banning API that they apparently have so far :) https://buil…
Wait a minute, they snagged the Bukkit guys? I must have totally missed that. I'd love a link, if you've got one.
Bukkit made it really far with community extensibility via non-official APIs. Now they get to help define the official API based on real-word experience about what developers want to do with customizing Minecraft. They also recently announced that they are merging single player and multi-player, creating a single mod-able codebase. http://www.mojang.com/2012/07/minecraft-1-3-info-snapshot-w2...
Re: The Minecraft API Is Now On Github
#30Earlier quoted context omitted.
Which has nothing to do with Java. The developer chose that hierarchy. Correction: As per the message below I guess I should say that it has nothing to do with Java, the ecosystem, framework he is using is forcing him to use that hierarchy.
EDIT: This is meant to be educational, not a rant. I'm hoping people take it that way. Maven requires a standard directory layout. Maven chose that hierarchy, because: 1) Namespacing. With tens or hundreds of thousands of packages out there, there needs to be an unambiguous way to refer to them separately. 2) Multiple language support. Maven can do Java, Scala, Clojure, Groovy, and so on - in the same project, even.…