Jump to content

Multiple things I wish to know to simplify my life


Chainmanner

Recommended Posts

As a newbie to modding, I have a basic knowledge to Java and I could search up on the Internet tutorials on adding blocks, items, GUIs, entities, etc. My only issue is that I wish to know a few things that could make my development of my first mod easier. Videos would greatly help.

 

When the source code of Minecraft is decompiled, how do I implement Minecraft Forge without failing a decompiling process or pasting it after the decompiling which would screw it all up?

 

How do I make a configuration file and customizable gameplay elements using the file?

 

With the new Searge Obfuscation, how do I enable it to reobfuscate the mod to the current version?

 

And finally, since my mod would involve creating mod elements in-game, how do I make Forge reinitialize and load the newly added creations?

Link to comment
Share on other sites

http://www.youtube.com/user/Pahimar - Follow this guy! Make sure to watch his videos inn order and skip episode 3.

Since episode 4 is an updated and easier version ;)

 

That will give you a nice developer environment where updating forge and/or mcp is super simple :)

Also it's neat and clean inn the way he sets everything up <3

 

He will cover configs file soon he said, or you can check out the forge wiki for both advance and simple config files :)

 

If you guys dont get it.. then well ya.. try harder...

Link to comment
Share on other sites

  • 2 weeks later...

Um...bump?

 

When you recompile your code, there's another batch file called "reob" or something- That reobfuscates it :)

I always thought that was required to make it run to be honest

you can use the startclient file to start the modded client, so-long as you have recompiled it.

Link to comment
Share on other sites

^^^^^^^  Yeah, I would like to know this too.

I am Mew. The Legendary Psychic. I behave oddly and am always playing practical jokes.

 

I have also found that I really love making extremely long and extremely but sometimes not so descriptive variables. Sort of like what I just did there xD

Link to comment
Share on other sites

Isnt that what reobf does for you?

 

Nope.  Open up your reobf folder and look at the file names.

 

Reobf only changes the references to vanilla classes and functions back to their obfuscated state (field_53829_b, func_23878_c, etc) so that the mod will actually work when added to the Minecraft jar.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Isnt that what reobf does for you?

 

Nope.  Open up your reobf folder and look at the file names.

 

Reobf only changes the references to vanilla classes and functions back to their obfuscated state (field_53829_b, func_23878_c, etc) so that the mod will actually work when added to the Minecraft jar.

 

Would a third-party obfuscator work, maybe?

Link to comment
Share on other sites

Isnt that what reobf does for you?

 

Nope.  Open up your reobf folder and look at the file names.

 

Reobf only changes the references to vanilla classes and functions back to their obfuscated state (field_53829_b, func_23878_c, etc) so that the mod will actually work when added to the Minecraft jar.

 

Would a third-party obfuscator work, maybe?

 

most likely not, since they usually obfuscate everything, even the vanilla method / field / class names.

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

I'm not a fan of obfuscation, but IMO proguard can do this with "keep" options. At least it looks like it from this post: http://stackoverflow.com/questions/4536016/how-can-i-obfuscate-only-com-foo-and-com-bar-proguard.

That is the sort of thing I was thinking of, yes, a "configurable" obfuscator. Maybe even on the level of per-method and per-variable selection. Obfuscate getEntitiesWithinAABB? No. Obfuscate recursiveBreakWithBounds? Yes.

Link to comment
Share on other sites

Well, I tried Proguard, and there appear to be two errors:

One, the minecraft.jar apparently contains two copies of every class, judging from lots of this:

Note: duplicate definition of library class [ase]
Note: duplicate definition of library class [asf]
Note: duplicate definition of library class [asg]
Note: duplicate definition of library class [ash]
Note: duplicate definition of library class [asi]

Two, some vanilla-code references appear to break, almost like mcp reobfuscated with a different naming registry:

Warning: Reika.RotaryCraft.Items.ItemBedrockAxe: can't find referenced field 'apa[] c' in class Reika.RotaryCraft.Items.ItemBedrockAxe

I know that apa is Block.class, and apa[] c is in fact Block[] blocksEffectiveAgainst from the tools classes. But why does that line fail to match up when most of them do?

Link to comment
Share on other sites

  • 2 weeks later...

Well, I tried Proguard, and there appear to be two errors:

One, the minecraft.jar apparently contains two copies of every class, judging from lots of this:

Note: duplicate definition of library class [ase]
Note: duplicate definition of library class [asf]
Note: duplicate definition of library class [asg]
Note: duplicate definition of library class [ash]
Note: duplicate definition of library class [asi]

Two, some vanilla-code references appear to break, almost like mcp reobfuscated with a different naming registry:

Warning: Reika.RotaryCraft.Items.ItemBedrockAxe: can't find referenced field 'apa[] c' in class Reika.RotaryCraft.Items.ItemBedrockAxe

I know that apa is Block.class, and apa[] c is in fact Block[] blocksEffectiveAgainst from the tools classes. But why does that line fail to match up when most of them do?

Sounds like it might be using the same obfuscated names for your classes as for the Minecraft base classes...?

BEWARE OF GOD

---

Co-author of Pentachoron Labs' SBFP Tech.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Wait guys, I still don't don't understand... I shall send my code -- Define the function to decrease hunger local function decreaseHunger(player)     local currentHunger = player.getHunger()          -- Check if hunger is not already zero     if currentHunger > 0 then         player.setHunger(currentHunger - 1)     end end -- Register event to decrease hunger over time script.registerEvent(EntityPlayer, function(player)     while true do         -- Decrease hunger every few seconds         decreaseHunger(player)         script.sleep(1000) -- Sleep for 1 second     end end)     Any help appriecated. It's been a while since I learnt Javascript or whatever Minecraft is made with... ... ... ... Nicknotname Hungerinpeaceful xx
    • good days  i get this error: java.lang.ClassCastException: class net.minecraft.client.player.LocalPlayer cannot be cast to class net.minecraftforge.common.extensions.IForgeServerPlayer (net.minecraft.client.player.LocalPlayer is in module minecraft@1.20.4 of loader 'TRANSFORMER' @3e8b3b79; net.minecraftforge.common.extensions.IForgeServerPlayer is in module forge@49.0.26 of loader 'TRANSFORMER' @3e8b3b79)     at mercmod.blocks.classes.panel_whit_entity_inside.use(panel_whit_entity_inside.java:576) ~[main/:?] {re:classloading}     at net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.use(BlockBehaviour.java:826) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading}     at net.minecraft.client.multiplayer.MultiPlayerGameMode.performUseItemOn(MultiPlayerGameMode.java:324) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.multiplayer.MultiPlayerGameMode.lambda$useItemOn$4(MultiPlayerGameMode.java:292) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.multiplayer.MultiPlayerGameMode.startPrediction(MultiPlayerGameMode.java:251) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.multiplayer.MultiPlayerGameMode.useItemOn(MultiPlayerGameMode.java:291) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.startUseItem(Minecraft.java:1799) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.handleKeybinds(Minecraft.java:2083) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.tick(Minecraft.java:1902) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.runTick(Minecraft.java:1216) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.run(Minecraft.java:801) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:234) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} ------------------------------------------------------------------------------------------------------------------   context:  im updating the briefcase from mi mod an i need to make a gui whit this image that gonna be launched from a block and from a item soo im using kapenjoe tutorials  ---------------------------------------------------------------------------------------- The problem is that tutorial is for 1.20.1 and im using 1.20.4 and i really dont get how to call and open the gui from the block nor from the item i made this based on post i made short ago everything seems find but when right click the block to open the gui it crash the game  @Override public InteractionResult use(BlockState blkstate, Level warudo, BlockPos pos, Player pe, InteractionHand hand, BlockHitResult hitresult) {     if(warudo.isClientSide()){         BlockEntity blkentity = warudo.getBlockEntity(pos);         if(blkentity instanceof Panel_BlockEntity){             //   ↓↓↓  open the menu from the block              IForgeServerPlayer ifpe = (IForgeServerPlayer)pe; //<--- this is wrong  "class net.minecraft.client.player.LocalPlayer cannot be cast to class net.minecraftforge.common.extensions.IForgeServerPlayer"             ifpe.openMenu( (Panel_BlockEntity) blkentity, pos ); //<-- i need an example of how open a gui in 1.20.4         }     } return InteractionResult.sidedSuccess(warudo.isClientSide()); } Theres nothing highlighted in red in the code like everything where right an possible but dont works  ####################################################################################################### i need to see an example, just the piece of code for the use() method of the block whit the block entity for 1.20.4  and the same  but for the item     @Override     public @NotNull InteractionResultHolder<ItemStack> use(@NotNull Level warudo, @NotNull Player pe, @NotNull InteractionHand interactionHand)     {         if (!warudo.isClientSide())         {             ItemStack heldItem = pe.getItemInHand(interactionHand);                          if (heldItem.getCapability(ForgeCapabilities.ITEM_HANDLER).isPresent())             {                 //   ↓↓↓  open the menu from the item                 NetworkHooks.openScreen((ServerPlayer) pe, this);             }         }         return super.use(warudo, pe, interactionHand);     }   thanks for your attention           
    • It depends on the data you want to save, but generally speaking you should use some custom Player Capabilities, attach to the Player and use them to store/retrieve any kind of data you want. You can find how to make them work for 1.20.x in the documentation here: https://docs.minecraftforge.net/en/latest/datastorage/capabilities/
  • Topics

×
×
  • Create New...

Important Information

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