After months of work, I have finally created the first usable version of forge-clj, which adds support for the Clojure programming language to Minecraft.
Now, you're probably asking, what the heck is Clojure, and why should I care? Well, Clojure is a modern Lisp language. It runs on the JVM like java, but it has a much more fluent and readable syntax (in my opinion), as well as other things, such as the ability to extend the language itself with macros. It also isn't like java, where you have to make a template/file/whatever of literally EVERYTHING. Say goodbye to having to copy and paste the same mod file format, the same block class declaration, and other such things with this (NOTE: Things might get messy if I haven't added something yet). You can read more about the technical details of Clojure itself here, and if you want a good tutorial you could always try Clojure for the Brave and True.
As for forge-clj itself, I'm REALLY proud of how this thing is turning out. I used BedrockMiner's Minecraft modding tutorials in order to figure out what I needed to add and how. I'm proud to say that everything covered in the basic modding tutorials there can be done in forge-clj, without excessive Clojure-Java inter-op and such. Most of these tutorials have been implemented in the test-mod that I use to test the mod, and explain how modding with it will work.
If you're a Minecraft Modder and want to help, tell me what I need to add to make things better. I've covered some basic things already, and have some plans to cover some advanced things, but if there's something convenient from forge that I've overlooked, tell me so that I can wrap around that too.
Checking that the test-mod works in your minecraft installation helps too, as well as making sure everything works (blocks, items, worldgen, etc). Even the average modded minecraft player can help me test this.
Anyways, go check them out now (download links/changelog/etc are on the github pages):
Updated forge-clj to Version 0.1.0. MASSIVE changes were made, to the point that the mod can actually be used safely for some basic things. View the actual changes on the github page.
Finally got around to updating THIS thread. I've been using this thread on the minecraft forge forums since I first made this thread. Many new features have been implemented into the API, such as support for GUIs, custom rendering, events, and, uh... a lot of stuff.
I'm currently working on advanced world generation. This is going slow however, since I have to reimplement Minecraft's Chunk Provider in Clojure (so it's not just a simple copy-paste). I've actually already finished the implementation, and just need to fix the MASSIVE number of bugs present.
After that's done, support for custom dimensions is planned.
Oh yeah, and as you might see in the main post, I added tutorials! Very basic ones mind you, there's still a lot that I need to cover in those. But you should be able to use them to implement a simple block and item in Clojure.
Updated forge-clj to Version 0.5.2. I added the ability to make new biomes, and some support for custom Chunk Providers. Unfortunately, I was unable to get a full chunk provider implementation working, due to slowness and general complexity, so if you want to use that, I recommend you make a Java version and reference it from Clojure. And sorry about this update taking so long, I spent a lot of the time trying and failing to reimplement the terrain generator. It's just too performance intensive for Clojure to really handle. I don't think any of the other updates will take this long...
Next up, I'll move on to start implementing custom dimensions. I don't think this will take too long, hopefully.
UPDATE: TUTORIAL AVAILABLE HERE
After months of work, I have finally created the first usable version of forge-clj, which adds support for the Clojure programming language to Minecraft.
Now, you're probably asking, what the heck is Clojure, and why should I care? Well, Clojure is a modern Lisp language. It runs on the JVM like java, but it has a much more fluent and readable syntax (in my opinion), as well as other things, such as the ability to extend the language itself with macros. It also isn't like java, where you have to make a template/file/whatever of literally EVERYTHING. Say goodbye to having to copy and paste the same mod file format, the same block class declaration, and other such things with this (NOTE: Things might get messy if I haven't added something yet). You can read more about the technical details of Clojure itself here, and if you want a good tutorial you could always try Clojure for the Brave and True.
As for forge-clj itself, I'm REALLY proud of how this thing is turning out. I used BedrockMiner's Minecraft modding tutorials in order to figure out what I needed to add and how. I'm proud to say that everything covered in the basic modding tutorials there can be done in forge-clj, without excessive Clojure-Java inter-op and such. Most of these tutorials have been implemented in the test-mod that I use to test the mod, and explain how modding with it will work.
If you're a Minecraft Modder and want to help, tell me what I need to add to make things better. I've covered some basic things already, and have some plans to cover some advanced things, but if there's something convenient from forge that I've overlooked, tell me so that I can wrap around that too.
Checking that the test-mod works in your minecraft installation helps too, as well as making sure everything works (blocks, items, worldgen, etc). Even the average modded minecraft player can help me test this.
Anyways, go check them out now (download links/changelog/etc are on the github pages):
- forge-clj github link
- test-mod github link
Updated forge-clj to Version 0.1.0. MASSIVE changes were made, to the point that the mod can actually be used safely for some basic things. View the actual changes on the github page.
Finally got around to updating THIS thread. I've been using this thread on the minecraft forge forums since I first made this thread. Many new features have been implemented into the API, such as support for GUIs, custom rendering, events, and, uh... a lot of stuff.
I'm currently working on advanced world generation. This is going slow however, since I have to reimplement Minecraft's Chunk Provider in Clojure (so it's not just a simple copy-paste). I've actually already finished the implementation, and just need to fix the MASSIVE number of bugs present.
After that's done, support for custom dimensions is planned.
Oh yeah, and as you might see in the main post, I added tutorials! Very basic ones mind you, there's still a lot that I need to cover in those. But you should be able to use them to implement a simple block and item in Clojure.
sounds cool
but I'm not a coder
keep going it
Updated forge-clj to Version 0.5.2. I added the ability to make new biomes, and some support for custom Chunk Providers. Unfortunately, I was unable to get a full chunk provider implementation working, due to slowness and general complexity, so if you want to use that, I recommend you make a Java version and reference it from Clojure. And sorry about this update taking so long, I spent a lot of the time trying and failing to reimplement the terrain generator. It's just too performance intensive for Clojure to really handle. I don't think any of the other updates will take this long...
Next up, I'll move on to start implementing custom dimensions. I don't think this will take too long, hopefully.
Awesome! Wish I'd known about this earlier.
After a lot of work, forge-clj has been updated to Minecraft 1.8.9! Go check it out now!