The idea is for it to be open source for everyone to put whatever hooks they need into it, but it's all within the same unified classes, so if both IC and BC need a few different hooks in the same class they put their hooks into the same class instead of having separate versions of the same class.
Well, well, well, look what I wake up to after a vacation....
This question is directed to the creators of Minecraft forge. Will it be easy to convert mods to the Forge? Ie, should I stop coding my personal huge mod until forge is released?
Forge is already released, if you want to convert your mod to it then I'd suggest giving it a go :-P
you know how popular this mod would become if aether was ported to use this it would instantly gain like a million more people leading to other modders attention because they might use mod loader which doesn't really play nice with this and that means people decide between aether or the mod loader mods and most would probably choose aether, forcing other modders to port to this to get people to use their mod so saying that I would focus more on getting the aether devs to use this that would be a huge stepping stone into making this better than modloader
But what happens when someone tried to add a hook to the same base class as another mod? For those that are code inclined they could merge the two classes very easily, which I feel is one of the points of MCF.
When someone needs a hook, they ask one of the people with commit privs (that would currently be myself and SpaceToad) for that hook, or better yet, they send the source code of the modified version of the class they need. We then review the code, decide on any changes to the API required for consistency, performance, reliability, extensibility, and simple need (sometimes people mod things without actually needing to, because they don't see another way). After that, we add the hooks that they need to the Forge version of the base code.
After that, their mod is able to use those hooks without any changes to the base code whatsoever. Never again will their mod conflict with any other mod that uses only Forge for base code hooks.
Forge is a big package and has a lot of base code changes. As a result, it does conflict with a lot of mods that change base classes themselves. The idea behind it, though, is that mods using Forge don't require base code changes themselves, and can share a common API.
For your average MC player, they are not going to have a clue about how to do that. So you end up with the problem of two modders altering the same code again. One of them will break the other unless they merge the code themselves. No one wants to have to figure out all of the mods that are going to conflict with theirs and fix it, but if it is just one or two mods then it is not such an issue.
But what happens when you get ten modders? twenty? How do you account for multiple mods adding their own hooks to a subversion of a class without trying to update their class every day just in case someone else has made a change since they were last working on their mod. Even the most dedicated modder is going to burn out fast from frustration.
I imagine I am just missing something.
With a set of sufficiently generic API hooks, we're able to provide the functionality that all the mods using Forge use. The project is still in its infancy, and currently we mostly provide hooks for Buildcraft, Better Than Wolves, and RedPower - but many of those hooks are generally useful to other modders.
The idea is that nobody outside of Forge modifies base code anymore (well except for the ModLoader and ModLoaderMP maintainers). Well that's the dream, anyway. If you find that you need to modify base classes for your mod, send me a patch, and I'll see about including it!
I'm just a beggining modder, but i've noticed that some mods which add ladders need to modify a basefile. Can you provide a hook for that or something? Unless im being a noob, then ignore me.
Rollback Post to RevisionRollBack
Playing since Beta 1.3_01. Yeah. I like BTW. Or used to. Still do. Stuff Technic. (Back in the day...)
*Plays Minecraft on a craptop* *Optifine user since Optimine* *Using mods since Beta 1.5_01*
I'm just a beggining modder, but i've noticed that some mods which add ladders need to modify a basefile. Can you provide a hook for that or something? Unless im being a noob, then ignore me.
You know, I think you're right. It looks like a simple change is needed in EntityLiving to make that happen. I should be able to put that one in.
would it be possible to add some hooks in to support alternate dimensions? It requires altering -several- base files, and I'd be more than happy to walk someone through it, to get it into Forge. Main reason - Shockahpi is not deobfuscated. He apparently doesn't use MCP, and thus his code is not organized in the way that MCP would organize it, so it doesn't decompile well. I've spoken with him once before, and he refuses to release any unobfuscated version of the API, which I believe to be a bit prickish, but... it's his choice, I suppose. I just don't think you should post an API if you don't intend to make it usable.
This sounds really interesting, and I'm probably going to make DwarvenCraft use this. But it seems that some of the features aren't for the beginner. Is there like a tutorial for those of us that don't know much about programming, but still want to use this api to the fullest?
Rollback Post to RevisionRollBack
If you want to get my attention Quote me(MCforums will send me a message)
I'm definitely in favor of that one. It's a very simple hook, and I modify EntityLiving myself for exactly that purpose.
Oh good, I was only holding off because I noticed you were using that file and I didn't want to make MCF incompatible without telling you. Next time I'm in the code, I'll add that in.
would it be possible to add some hooks in to support alternate dimensions? It requires altering -several- base files, and I'd be more than happy to walk someone through it, to get it into Forge.
I'm very interested in having this functionality in Forge. I haven't studied the code, but if you know what has to be done, please let me know.
This sounds really interesting, and I'm probably going to make DwarvenCraft use this. But it seems that some of the features aren't for the beginner. Is there like a tutorial for those of us that don't know much about programming, but still want to use this api to the fullest?
We don't have any tutorials yet, but we're still new at this. What parts specifically are you looking at using?
Well the only thing I see that I can use right now is the infinite sprites(btw does this also make the ID's infinite?) but I would really like to know what all can be done with this api so I can try to use them to mod better.
But I am curious about these points:
- Infinite terrain and sprite indexes
- Support two-pass rendering
- Override block replacement/deletion
- Secondary properties for block (isNormal, isReplaceable, isAir, isBurning)
- Allow an item to have the first callback on a mouse click
- Modification of list of mineable objects
- Advanced configuration files
We can tweak something to allow at least customization of block id number. IIRC, FlowerChild made some comments about having high block ids decreasing the performances, so we probably don't want to allow this by default. But allowing to change the limit sounds like an interesting idea... Eloraam, do you think there'd be code that you could share with what' s currently in RedPower?
Note that's kind of a low priority atm. There's a lot of work into supporting the functionality that mods require. Allowing a big number of blocks is an interesting goal, and importance of that will certainly grow with the number of mods ported to the forge ;-)
Customizing the block numbers changes a lot of things. The biggest concern is that it breaks some of the network packets, which encode blocks as bytes.
Also, people have been saying that RedPower does a lot of things, but those methods aren't exactly approachable. The RedPower methods of avoiding using lots of block IDs get pretty complicated pretty fast. Especially the Wiring one, which crams 375 different blocks into a single ID now, but it requires a pretty big amount of code to make that happen.
i havent edited any basecode, i just wanted to use the infinite terrain/item sprites.
Ah! Then you have to do 3 things:
1) Preload your texture in your initialization function using MinecraftForgeClient.preloadTexture
2) implement ITextureProvider in your item or block class
3) add a getTextureFile() function to your item or block class.
OK, I'm probably going to start using this with my mods. But, before I do when you say advanced configuration files what do you mean. And BTW this looks pretty awesome hopefully you guys do add in that dimensions thing cuz' it would be helpful for my multiverse mod. Good Luck with this!!
Is Minecraft Forge compatable with ShocAhPI. Because i install my mods using MC Patcher HD and it said they had the same files that conflict with each other. Does that mean it wont work or do I have to install it manually? Please help me.
I love the idea of the open source MC forge, I have absolutely the minimal experience with coding you can have above zero. So I'm not a programer but I would like to try to learn enough to make a very basic mod. (adding a few resources, blocks, place-able items, and blocks to craft said items in) I've looked around on youtube and started creating new blocks with some tut's help there, however it doesn't really give me enough info to know what or why I'm doing something so its difficult to know how to manipulate these things how I'd like to. I guess what I'm asking is two fold, does anyone have a good place to start(is there someone with a good set of java tutorials or even minecraft specific ones, other forums, or public resources you know of that I could read up on) where I can get a better understanding of how some of these things work with in the code so I could try my hand at a very basic mod, and part two I'd love to use the forge so you should put out some tut's soon also! ;] ;] ;]
Thanks.
The idea is for it to be open source for everyone to put whatever hooks they need into it, but it's all within the same unified classes, so if both IC and BC need a few different hooks in the same class they put their hooks into the same class instead of having separate versions of the same class.
Forge is already released, if you want to convert your mod to it then I'd suggest giving it a go :-P
When someone needs a hook, they ask one of the people with commit privs (that would currently be myself and SpaceToad) for that hook, or better yet, they send the source code of the modified version of the class they need. We then review the code, decide on any changes to the API required for consistency, performance, reliability, extensibility, and simple need (sometimes people mod things without actually needing to, because they don't see another way). After that, we add the hooks that they need to the Forge version of the base code.
After that, their mod is able to use those hooks without any changes to the base code whatsoever. Never again will their mod conflict with any other mod that uses only Forge for base code hooks.
Forge is a big package and has a lot of base code changes. As a result, it does conflict with a lot of mods that change base classes themselves. The idea behind it, though, is that mods using Forge don't require base code changes themselves, and can share a common API.
With a set of sufficiently generic API hooks, we're able to provide the functionality that all the mods using Forge use. The project is still in its infancy, and currently we mostly provide hooks for Buildcraft, Better Than Wolves, and RedPower - but many of those hooks are generally useful to other modders.
The idea is that nobody outside of Forge modifies base code anymore (well except for the ModLoader and ModLoaderMP maintainers). Well that's the dream, anyway. If you find that you need to modify base classes for your mod, send me a patch, and I'll see about including it!
*Plays Minecraft on a craptop* *Optifine user since Optimine* *Using mods since Beta 1.5_01*
You know, I think you're right. It looks like a simple change is needed in EntityLiving to make that happen. I should be able to put that one in.
I'm definitely in favor of that one. It's a very simple hook, and I modify EntityLiving myself for exactly that purpose.
http://www.mediafire.com/?2fti78m82h2ox7v
A double resolution texture pack that stays faithful to the original Minecraft textures.
Oh good, I was only holding off because I noticed you were using that file and I didn't want to make MCF incompatible without telling you. Next time I'm in the code, I'll add that in.
I'm very interested in having this functionality in Forge. I haven't studied the code, but if you know what has to be done, please let me know.
We don't have any tutorials yet, but we're still new at this. What parts specifically are you looking at using?
That depends. What base code changes are you currently using in your mod?
But I am curious about these points:
- Infinite terrain and sprite indexes
- Support two-pass rendering
- Override block replacement/deletion
- Secondary properties for block (isNormal, isReplaceable, isAir, isBurning)
- Allow an item to have the first callback on a mouse click
- Modification of list of mineable objects
- Advanced configuration files
A double resolution texture pack that stays faithful to the original Minecraft textures.
Kay.
A double resolution texture pack that stays faithful to the original Minecraft textures.
Customizing the block numbers changes a lot of things. The biggest concern is that it breaks some of the network packets, which encode blocks as bytes.
Also, people have been saying that RedPower does a lot of things, but those methods aren't exactly approachable. The RedPower methods of avoiding using lots of block IDs get pretty complicated pretty fast. Especially the Wiring one, which crams 375 different blocks into a single ID now, but it requires a pretty big amount of code to make that happen.
Ah! Then you have to do 3 things:
1) Preload your texture in your initialization function using MinecraftForgeClient.preloadTexture
2) implement ITextureProvider in your item or block class
3) add a getTextureFile() function to your item or block class.
http://www.mediafire.com/?lmgeo38jj127fq8
https://assortedmods.com/
I have no idea where to start...
I love the idea of the open source MC forge, I have absolutely the minimal experience with coding you can have above zero. So I'm not a programer but I would like to try to learn enough to make a very basic mod. (adding a few resources, blocks, place-able items, and blocks to craft said items in) I've looked around on youtube and started creating new blocks with some tut's help there, however it doesn't really give me enough info to know what or why I'm doing something so its difficult to know how to manipulate these things how I'd like to. I guess what I'm asking is two fold, does anyone have a good place to start(is there someone with a good set of java tutorials or even minecraft specific ones, other forums, or public resources you know of that I could read up on) where I can get a better understanding of how some of these things work with in the code so I could try my hand at a very basic mod, and part two I'd love to use the forge so you should put out some tut's soon also! ;] ;] ;]
Thanks.