Jump to content

Recommended Posts

Posted

MCPBot is good enough, it's as far as I know the least hands-on approach. And we have to respect the fact that you can't redistribute unmodified mojang code (deobf isn't counted)/

Read the EAQ before posting! OR ELSE!

 

This isn't building better software, its trying to grab a place in the commit list of a highly visible github project.

 

www.forgeessentials.com

 

Don't PM me, I don't check this account unless I have to.

Posted

MCPBot is good enough, it's as far as I know the least hands-on approach.

Are you kidding?  It's painful!  Don't get me wrong, it's much much better than nothing and I'm very grateful they made it, but if you're doing more than a handful of names it gets real tedious real quick.  And it seems to be impossible to correct mistakes, even if you've just entered a new name yourself and notice a spelling error.

 

And we have to respect the fact that you can't redistribute unmodified mojang code (deobf isn't counted)/

Well that's easy enough to accommodate.  Download the name mappings from the server, apply to the local decompiled obfuscated code by gradle or whatnot, then after refactoring the names, run a gradle "diff script" or similar on the client, and send the information back to the server again.

 

-TGG

 

 

Posted

MCPBot is good enough, it's as far as I know the least hands-on approach.

Are you kidding?  It's painful!  Don't get me wrong, it's much much better than nothing and I'm very grateful they made it, but if you're doing more than a handful of names it gets real tedious real quick.  And it seems to be impossible to correct mistakes, even if you've just entered a new name yourself and notice a spelling error.

 

And we have to respect the fact that you can't redistribute unmodified mojang code (deobf isn't counted)/

Well that's easy enough to accommodate.  Download the name mappings from the server, apply to the local decompiled obfuscated code by gradle or whatnot, then after refactoring the names, run a gradle "diff script" or similar on the client, and send the information back to the server again.

 

-TGG

 

I actually find it more convenient. I keep a MCPBot DCC chat open in the background behind my IDE, so when I figure out a name I can just directly hop it over to MCPBot.

 

And if you need to change a name you can go to #mcp, they can help you.

Read the EAQ before posting! OR ELSE!

 

This isn't building better software, its trying to grab a place in the commit list of a highly visible github project.

 

www.forgeessentials.com

 

Don't PM me, I don't check this account unless I have to.

Posted

fair enough :-)

 

A related question actually - how do you apply the new name (either the one you figured out or the one you got from the bot) in the new gradle setup, where vanilla is all in a library and can't be edited?  Is there a "patch" file somewhere you can edit and re-deobfuscate?

 

(I liked being able to edit the vanilla to debug and understand the code better (rename variables for example), but I haven't yet figured out how to convert the library to editable code and have it build properly - there are obviously a few subtleties to it I don't understand yet)

 

-TGG

Posted
I don't have most of the skills I'd need to even set up a proof of concept for this, but I'm seriously considering bringing myself up to speed.  (Only problem is that's going to take a long time).

And there in lies the problem, There is a lot we can do to make things different. The work being done on S2S is all about moving the work in updating out of one person's hands {mine} and into the end modders.

But, Abrar is busy with school, I am busy with real life/legal stuff.

Nobody else seems to be stepping up with the skills needed to help. We would LOVE if someone came along and sat down and fully tested S2S and started work on it's FG integration. But as I said, Abrar is busy with school.

 

As for How you guys get a editable version of the MC code base in your projects. The goal is that you DON'T.

However, nothing is stopping you from setting up a seperate project project for editable Minecraft... I wonder where oh where you could possibly get something like that... No project out there EVER needs to edit minecraft....

 

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

Hi

 

We would LOVE if someone came along and sat down and fully tested S2S and started work on it's FG integration. But as I said, Abrar is busy with school.

 

I sent Abrar a couple of messages last week offering help with implementing some testing / integration for S2S, he hasn't replied yet, but do you know what specifically I could help with?  Realistically I can spend say 8 hours a week on it which isn't much but might be of some help?

 

Thanks for the hint about editable source :-)

 

-TGG

Posted

Thanks for the hint about editable source :-)

 

-TGG

 

I believe the hint was that you shouldn't edit Vanilla code. Any mods should be written from scratch (or using APIs), rather than editing base code, so as to retain the maximum compatibility and ease of porting between versions. That's kind of the point of everything Forge has been working towards :D

Posted

Thanks for the hint about editable source :-)

 

-TGG

 

I believe the hint was that you shouldn't edit Vanilla code. Any mods should be written from scratch (or using APIs), rather than editing base code, so as to retain the maximum compatibility and ease of porting between versions. That's kind of the point of everything Forge has been working towards :D

 

I guess I'm not being completely clear about the reason I am so fond of editing vanilla code.  It's not because I want to edit base classes and distribute them in my mod, for very many good reasons like you say. 

 

The reason I edit base classes is because editing base classes can help a huge amount during debugging, and when trying to understand how the vanilla works.

 

For example

If I'm getting a Null Pointer Exception in the one of the base classes, like Entity.moveEntity:

            List list = this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox.addCoord(par1, par3, par5));

            for (int i = 0; i < list.size(); ++i)
            {
                par3 = ((AxisAlignedBB)list.get(i)).calculateYOffset(this.boundingBox, par3); // line 758 NPE here
            }

Unfortunately I can't just put a breakpoint on this line to inspect what's happening because it gets called many many times a second before the NPE occurs.  In some cases a watchpoint can help but often makes the code run far too slowly.

But if I am able to edit the base source it becomes trivial

            for (int i = 0; i < list.size(); ++i)
            {
                if (list.get(i) == null) {
                   System.out.println("list.get(i) is null");  // BREAKPOINT HERE
                }
                par3 = ((AxisAlignedBB)list.get(i)).calculateYOffset(this.boundingBox, par3); // line 758 NPE here
            }

and I can inspect list to see what's going on.

 

Likewise, if I'm trying to figure out how come, when I implement IProjectile without deriving from EntityArrow, my projectile lags behind the true position and then randomly syncs up 20 seconds later after it sticks in a wall, then it's a big help to sprinkle System.out.println throughout EntityArrow.onUpdate (and as it turns out - EntityTrackerEntry.sendLocationToAllClients).  Same deal with trying to figure out the sequence of events when you break a block.

 

The new forge gradle build is (in my opinion) a huge improvement over the old way.  I'm just looking for the best of both worlds.

 

-TGG

 

 

 

Posted

Yes debugging during dev is wonderful.

Which is why we haven't COMPLEETLY removed the ability for you to do that {Which we could do if we so pleased}

However, it's not avalible by default and shoved in the normal modders face because only those who know what they are doing and understand that MC should be treated as a COMPLEETLY SEPRATE project should do it.

 

Anyways, I decided to stop waiting for Abrar {as he's busy} and Update the mappings Should help developers adopt a bit easier.

IF I can get GOOD reports from modders and users. I'll make a RB this weekend {after my meeting}.

So, as it sits, in now on you guys to test and let me know the stability of the current version.

No excuses, it's no longer anyone on our end holding back a RB ;)

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

You guys are doing a tremendous job here.

 

Let me offer my help in continuing the work of deobfuscating any of the sources that need it. It would be great if I could refactor on my end (in Eclipse) and then just push the diff to a repo somewhere. I'm willing to work with anyone who is taking this on. Thanks a bunch.

 

~S~

Guest
This topic is now closed to further replies.

Announcements




  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I have a custom 3d model which works perfectly. BUT I want it to be held diffrently on the players hand when the item is being used. My JSON file under assets/examplemod/items looks like this: { "model": { "type": "minecraft:condition", "on_false": { "type": "minecraft:model", "model": "examplemod:item/example_item" }, "on_true": { "type": "minecraft:model", "model": "examplemod:item/example_item_using" }, "property": "minecraft:using_item" } }   This works fine until the item is used. The correct model will be displayed but with a full black texture instead of the actuall texture. Any idea why? (I want to use the exact same texture for both items, because their model is the same just diffrent displays on firstperson_righthand and firstperson_lefthand). The models JSON's are fully blockbench files inlcuding the elements, display, textures with texture_size.   Also is this the correct way to do it? Because it feels so dumb to change the exact same model just for a diffrent right- and lefthand view.   (fyi: ItemUseAnimation is BLOCK for this item)
    • I just backed up my world then tried to create new mod with currently equipped mod but with new world still made same error. Sooo I think it's not world error. also It's working fine on singleplayer. + but it made some another weird error with new world
    • Maybe the file is too large - you can upload the log file via Mediafire
    • Create a new instance and start with Embeddium + Oculus Then add new mods one by one or in groups The "IncompatibleClassChangeError: class net.coderbot.iris.gui.option.ShadowDistanceOption" often appears in connection with an incompatible mod
    • I hosted forge modded server using feather client I was able to join without any issues yesterday, but today after I tested my shader on my single world then tried to join the world but it made error meassage. (I also changed server.properties's render settings, but I reverted it as same as yesterday) So I removed my shader and removed optifine on server and on my mod file then it made this error: Internal Exception: io.netty.handler.codec.DecoderException: net.minecraft.ResourceLocationException: Non [a-z0-9/-1 character in path of location: inecraft:ask_server\u0012\u0001\uFFFD\n\u0007targets\u001D\u0001\u0014minecraft:ask_server\u0012\u0002\uFFFD\n\uFFFD\n\u0002id!\u0014minecraft:ask_server\u0002 \u0001\uFFFD\n\u0006target\u0006\u0001\u0002\u0001\uFFFD\n\ttarget My server/client is 1.20.1 forge. And I got 34 mods total, it was working pretty fine yesterday (I did not add/remove any mods before it started happening) I hope it's not about my worlds, it's been quite long since using this world I'm not native english speaker so there may be grammar issue! Thank you for reading!
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.