BlazeLoader is an opensource mod API based on the LiteAPI framework. It uses the LiteLoader API Framework as a base, which allows it to be loaded with no jar modifications and allows mods the use LiteLoader's stable, well developed mod loader.
BlazeLoader is fully open source. Sources can be found (and contributed to!) on the GitHub repo. Currently BL is being developed against Minecraft 1.8 client. Technical information can be found in the repo.
Demo 2 now available for MC 1.6.4! It can be downloaded here: http://www.mediafire...cxu/BLDemo2.zip. Install instructions and a sample mod are included! Make sure to type /bl to see BL features and /te to see the sample mod! Known bugs: Formatted chat messages include strange characters, username and session ID are stripped at launch.
Hey, guys. Quote me if you want me to respond. Otherwise I'll have no idea what the hell you want with me.
Friend Code: 1263-6258-8121 (Poison)
Friend Safaris: Poison: Swalot, Whirlipede, Seviper.
I actually started this project because I was trying to port one of my mods to a non-jar mod, but I couldn't find any APIs to do it aside from forge's ASM. I figured there needs to be an API for things like this, and someone said I should write it
I was waiting for this question... Basically it is because forge itself has very little API. It loads mods, which gives access to most functions, and it has some compatibility APIs which are very nice for some mods. It also has ASM, which is extremely powerful, but ASM is tricky to use without breaking compatibility with other mods.
How does your mod loader allow making changes to base classes while keeping all the mods compatible then? And why not contribute your solution to FML instead?
How does your mod loader allow making changes to base classes while keeping all the mods compatible then? And why not contribute your solution to FML instead?
The API will be designed to allow access to commonly used parts of minecraft's code that are normally hard to access. FML could do this easily if they want, but instead they spend their time coming up with ways to detect and block jar mods...
I still think it would be better if you made a pull request to MinecraftForge with all the hooks you find lacking. Rather than create another cause for mod incompatibility...
I still think it would be better if you made a pull request to MinecraftForge with all the hooks you find lacking. Rather than create another cause for mod incompatibility...
Well currently ModLoader seems to have gone, and I am sort of filling the gap with this mod. Also I have not yet written most of the hooks which is the problem. Also having multiple competing mods helps prevent mods from "dying" and dropping to update-only.
I personaly don't think I'll use it (maybe try it in distant future), but a little competition can't hurt. IIRC I somewhere read that Mojang supports only Forge when it comes to modifying MC jar / distributing modified class files with code belonging to Mojang - IMO that's the reason Forge walks the way of not compatible with any other jar mod.
Some time ago I did a hook, posted PR. For quite some time no response, then request to update to current Forge version. And then it just repeated - I updated, long time nothing, another request to update. I got tired of it. Now I just solve all my hooks via ASM and don't even bother putting together code for PRs...
I have used ASM and while I won't deny it is extremely powerful and a great feature of forge, it is very tricky to use and when I tried to port a mod using it I was unable to convert the last, critical class. It was final and had methods that needed a reference to a class of it's type, so I could not override it.
I can't believe I missed this thread. Thank you for putting this together!
Let's see where we can go with this API. I do intend to use this API for my mods.
I hope it can be useful! I have tried to change as few classes as possible (currently only Main.class) to ensure compatibility with other APIs like LiteLoader (Minecraft.class), ModLoader if ever updated (some random minor class), and Forge (pretty much everything except Main.class). This does have the side effect of somewhat limiting the API's access, though.
- A config file system similar to MLProp that allows you to easily read/write variables to a .txt or .config file
- A method that is executed after a world has loaded and the player has been spawned/ a world has been freshly generated and the player has spawned?
- A biome API (I'm sure this is in progress) or possibly a dimension API (though seeing as this is a lightweight API, I wouldn't mind if it's not included )
Thanks for all your help, and I look forward to porting all my mods to this API
Also, you should put a link to this in your ML fixes thread to help it get some views. If you wan't, I could make some Minecraft themed banners for the heading and stuff (akin to the headings in the thread in my sig) but I don't want to be too pushy
Thanks for your response! Linking is a good idea; I'll do that! Banners would be cool, but I think it would be better to wait until the first release. As for your questions:
- A config file system similar to MLProp that allows you to easily read/write variables to a .txt or .config file
There are a few ways to do this. The first is the way ModLoader does it, but that does not seem to work with the new launcher. The second, more reliable way is to read all fields and output them to a file, trusting the user to not screw up the wrong ones or requiring the mods to doublecheck their values. The third is to setup a method in Mod.class that returns the names of fields to be read from the config that will be called before mods are started.
- A method that is executed after a world has loaded and the player has been spawned/ a world has been freshly generated and the player has spawned?
The first one I already know how to do and the other should be easy enough.
- A biome API (I'm sure this is in progress) or possibly a dimension API (though seeing as this is a lightweight API, I wouldn't mind if it's not included )
Both should be possible. I think I know how to do the second already, although I need to check if it can be done without modding classes.
Twitter It was funny, because I was arguing with his friend (and him for a bit until I realised he was only removing FML for practical reasons ) over his friend saying that RML was a problem , then I found this and he happens to link it a few hours later I can see Blazeloader doing really well if not replacing Modloader entirely
Also, Would it be possible for you to implement GUI methods, such as Modloader's openGui?
Haha convenient timing! GUI functions should be easy, openGui especially.
Also, would it be possible to have a hook that allows you to remove/add mob drops and AI to Vanilla mobs? I understand this might require a lot of base file edits so it's not too important
I hope to implement both of those, especially since they usually require jar modding or reflection.
It's sad to see risugami's mods start fading away but this is great as it's still "modloader" but going down the route of how forge does mods by not editing the jar, having a simple api, etc.. I wish you all the luck with the new api and how popular it becomes with the old modloader community.
It's sad to see risugami's mods start fading away but this is great as it's still "modloader" but going down the route of how forge does mods by not editing the jar, having a simple api, etc.. I wish you all the luck with the new api and how popular it becomes with the old modloader community.
BlazeLoader is fully open source. Sources can be found (and contributed to!) on the GitHub repo. Currently BL is being developed against Minecraft 1.8 client. Technical information can be found in the repo.
Demo 2 now available for MC 1.6.4! It can be downloaded here: http://www.mediafire...cxu/BLDemo2.zip. Install instructions and a sample mod are included! Make sure to type /bl to see BL features and /te to see the sample mod! Known bugs: Formatted chat messages include strange characters, username and session ID are stripped at launch.
BL Forums: http://www.blazeload...forum/index.php
Website: http://www.blazeloader.com/
GitHub Repo: https://github.com/w...dog/BlazeLoader
API JavaDocs (usually outdated): http://acomputerdog....Docs/index.html
Sample Mod 1: https://github.com/w...dog/TerrainEdit
Sample Mod 2: https://github.com/w.../RealisticStone
Subreddit: http://www.reddit.com/r/BlazeLoader/
There is also an IRC Channel: #BlazeLoader (EsperNet)
Wiki: http://blazeloader.w...lazeLoader_Wiki
Want to contribute to BlazeLoader? Post suggestions or contribute code to the repo! Testing is also greatly appreciated!
Currently all planned features are tentative and some may be dropped or changed if necessary.
Features:
Hey, guys. Quote me if you want me to respond. Otherwise I'll have no idea what the hell you want with me.
Friend Code: 1263-6258-8121 (Poison)
Friend Safaris: Poison: Swalot, Whirlipede, Seviper.
I actually started this project because I was trying to port one of my mods to a non-jar mod, but I couldn't find any APIs to do it aside from forge's ASM. I figured there needs to be an API for things like this, and someone said I should write it
I made Moses Mod, Dota 2 Items Mod, Rings of Power and Antique Atlas.
I was waiting for this question... Basically it is because forge itself has very little API. It loads mods, which gives access to most functions, and it has some compatibility APIs which are very nice for some mods. It also has ASM, which is extremely powerful, but ASM is tricky to use without breaking compatibility with other mods.
I made Moses Mod, Dota 2 Items Mod, Rings of Power and Antique Atlas.
The API will be designed to allow access to commonly used parts of minecraft's code that are normally hard to access. FML could do this easily if they want, but instead they spend their time coming up with ways to detect and block jar mods...
I made Moses Mod, Dota 2 Items Mod, Rings of Power and Antique Atlas.
Well currently ModLoader seems to have gone, and I am sort of filling the gap with this mod. Also I have not yet written most of the hooks which is the problem. Also having multiple competing mods helps prevent mods from "dying" and dropping to update-only.
I have used ASM and while I won't deny it is extremely powerful and a great feature of forge, it is very tricky to use and when I tried to port a mod using it I was unable to convert the last, critical class. It was final and had methods that needed a reference to a class of it's type, so I could not override it.
Let's see where we can go with this API. I do intend to use this API for my mods.
Version 2.1 now updated for MC 1.6.2
I hope it can be useful! I have tried to change as few classes as possible (currently only Main.class) to ensure compatibility with other APIs like LiteLoader (Minecraft.class), ModLoader if ever updated (some random minor class), and Forge (pretty much everything except Main.class). This does have the side effect of somewhat limiting the API's access, though.
Thanks for your response! Linking is a good idea; I'll do that! Banners would be cool, but I think it would be better to wait until the first release. As for your questions:
- A config file system similar to MLProp that allows you to easily read/write variables to a .txt or .config file
There are a few ways to do this. The first is the way ModLoader does it, but that does not seem to work with the new launcher. The second, more reliable way is to read all fields and output them to a file, trusting the user to not screw up the wrong ones or requiring the mods to doublecheck their values. The third is to setup a method in Mod.class that returns the names of fields to be read from the config that will be called before mods are started.
- A method that is executed after a world has loaded and the player has been spawned/ a world has been freshly generated and the player has spawned?
The first one I already know how to do and the other should be easy enough.
- A biome API (I'm sure this is in progress) or possibly a dimension API (though seeing as this is a lightweight API, I wouldn't mind if it's not included )
Both should be possible. I think I know how to do the second already, although I need to check if it can be done without modding classes.
be ready to have a lot of people looking at it
W-Where did the name come from?
Oh joy. Just curiously where did he link it at?
BlazeLoader
EDIT: I love your username, btw
Suggestions:
Hook for change behavior in Entity Rendering (Specifically renderHand / renderWorld)
Woah woah!
Thanks! Those should be easily doable if they are non-static (and only used by non-static methods), I will have to look at the render classes though.
Haha convenient timing! GUI functions should be easy, openGui especially.
I hope to implement both of those, especially since they usually require jar modding or reflection.
It's sad to see risugami's mods start fading away but this is great as it's still "modloader" but going down the route of how forge does mods by not editing the jar, having a simple api, etc.. I wish you all the luck with the new api and how popular it becomes with the old modloader community.
E-Mail - Google+ - Twitter
Thanks!