Jump to content

Resolving ID Block Conflicts for Dummies


ShneekeyTheLost

Recommended Posts

Resolving ID Block Conflicts for Dummies

A reference guide for the rest of us

 

Okay, one of the biggest problems left for the average user wanting to mod, now that Forge has taken care of most of the problems and MultiMC has solved the rest of them, has been IDBlock Resolution. Enough so that one of the most frequently asked headaches requests is an ID Block Resolver.

 

This is a guide written specifically for those users who have ID Block Conflict errors, and want to know how to prevent them.

 

This guide assumes you know absolutely nothing about Java, Coding, or much of anything else.

 

This guide assumes you've already legitimately purchased a copy of Minecraft from Mojang.

 

This guide is designed to help a first time modder set things up.You *WILL* need to start over with a new world, because this WILL corrupt old save files. Then again, any sort of ID conflict resolution will, so you're hosed anyway.

 

This guide is primarily for SSP, since most servers will give you the config files with ID blocks already resolved, and matching the server's ID blocks.

 

--DO NOT modify the block ID's for any config files you have been given to use to play on a server. If you have ID block conflicts in config files given to you by a server admin, contact that server admin for tech support.--

 

This guide assumes that 1) you don't have more than thirty six different mods (addon mods don't count) that have id blocks, and that 2) each mod (and any addon mods to it, combined) does not have more than 100 ID blocks defined. If a mod has more than 100 ID blocks defined, assign it two numbers.

 

Now then, one of the most commonly found problems in a new modder is they wanted to put together several mods they saw their friends use (for example: IC2, BC, Forestry, and Redpower2), then get an error that includes the line that says something like this:

 

[Mod] is trying to use ID block [number] but [Other Mod] is already using it

 

Here's what you can do about it:

 

* First off, download and install MultiMC. This step isn't absolutely necessary, per se, but it makes the process of installing mods much more user friendly.

 

* Second off, download the recommended build of Forge from this very forum.

 

* Run MultiMC. Make a new instance. Right click the instance icons, and select Edit Mods from the menu.

 

* Under the minecraft.jar tab, click 'add mod' and include the version of Forge you just downloaded.

 

* Click on Okay, and run the instance. Get to the Minecraft starting page, then quit. This step isn't exactly necessary anymore, but I still include it to make sure you got Forge working properly.

 

  -If you don't use MultiMC, then you'll need to open up .minecraft/bin, open up the minecraft.jar file, remove the META-INF folder, then drag and drop Forge into the .jar file, then run it to get your mods folder generated-

 

* Download all the zip and jar files for the various mods you want to play around with from their various creators. You may thank them for all of their hard work by using ad.fly links to give them a small monetary compensation with no expense on your part.

 

  -IMPORTANT- You are wanting the 'Client' version of these mods. The 'server' version is for running a multiplayer server in the 'back end', and is not needed even when playing ON a server as a user.

 

* Right click the instance icon in MultiMC, select  minecraft/mods tab, then use Add Mod to add all of the mods you want to use.

 

  -If you don't use MultiMC, then drag and drop the various .zip and .jar files you downloaded and drop them in the mods folder, or otherwise follow the installation instructions the mod authors give you-

 

-NOTE: This assumes that all of the mods you want to use are ones that goes straight into the mods folder. Some mods, like Optifine, require being put into the .jar file. In this instance you add them like you did Forge, but you make SURE that they appear on the list BELOW Forge. Check mod documentation in the mod's thread for installation instructions. I would be careful about any mod which asks to be put in the .jar, particularly if it is from a source you don't necessarily trust.-

 

* Run the instance again. Yes, you're going to get the error message, but you need to do it in order to generate the config files you need to edit. Usually, MultiMC does this when installing the mods, but I like to make sure that everything is generated.

 

* Right click the instance icon in MultiMC, then View Folder. In your .minecraft folder is a folder called Config. There may be other mod-related folders as well that we will need to go into (for example, Redpower and Buildcraft have their own mod folders in the .minecraft folder that have config files).

 

-Without MultiMC, just navigate to the .minecraft folder that should be quite familiar to you by now, and continue with the instructions-

 

Now then, here comes the part where we apply logic to the process. Forge comes with the 4096 fix as a part of its code. What this means to you is that we have thousands of ID blocks available to us. We're going to use this to our advantage.

 

Now then, Vanilla Minecraft uses ID blocks below 400. Since I would rather not bother you with skipping around, and ranges within this area, we're just going to skip it entirely. We will be working with ID blocks 400+.

 

Go through your list of mods, either on a sheet of paper or something like Notepad++. This isn't going to be used as code, these are just notes to keep everything straight. Assign them sequential numbers, starting with 4. This number you will be assigning them will be the hundreds digit of the ID blocks we will be using on the mod. Thus, if you pick Industrialcraft to be number 4, then the ID blocks you are reserving for Industrialcraft's exclusive use will be 400-499.

 

This may seem to be a bit inefficient, however it's not like we're going to run out of ID blocks any time soon, and this flat guarantees that your mod ID blocks won't conflict, since I am not aware of any mod which adds over 100 ID blocks. If you do encounter a mod with more than 100 ID blocks, you will need to assign that mod two numbers.

 

Not all mods have ID blocks. Particularly if you are working with addon mods (for example, Logistics Pipes for Buildcraft), you may end up having no ID blocks to add. In this case, reassign that number to someone else. I would also group addon mods together with the 'core' mod (for example, IC2 and Advanced Machines), and start assigning numbers to the addon mod ID blocks with the same hundreds digit as the core mod.

 

So how do I do that, exactly? Allow me to show you:

 

* In the /.minecraft/config folder, you'll find a bunch of files that end in .cfg. These are written in a form of code, and may be confusing for the first-time user, but what we have to do is very limited and easy to find.

 

  -Also, a word of warning: In your config folder, there's going to be a bunch of files named 'mod_xxx.cfg'. Ignore these. They are needed, but they are not what you need. So you will want to edit, for example, IC2.cfg, but not mod_IC2.cfg. You should also leave alone anything ending in .cfg~ since they are also not what you want.-

 

* You'll need to look for the section where the mod author put his block ID's. Usually, this is very easy to find. If it isn't immediately visible, do a search for 'block {', and you'll find it.

 

* You'll then see a list of things that look like xxx = ### where xxx is the name of the blockID and ### is the ID Number.

 

* Start off with the very first one. Change the ### to x00 where x is the number you assigned them (for example, if the mod was assigned the number 4, you change it to 400. If you assigned it as 10, then it would be changed to 1000).

 

* All we are going to do is change these numbers within the block id category, going in numerical order (so 400, 401, 402...) until you have assigned all of the block ID's.

 

* Save it and exit.

 

* Rinse, wash, and repeat with your other mods.

 

  -A word of warning about Redpower's .cfg. Some users may be a bit confused, because Elloram uses a bit more compact code which is a bit less clear about where the end of the block ID's are, simply using nested {} signs to indicate where it ends. It ends when you find a } which is right up on the left margin of the page, with no spaces. Usually, the only thing above it is a } which is indented to the right. Other mods may do something similar. But, by the restrictions of the code, it has to start with 'Block {' and has to end in a line that just has '}'.-

 

* Don't forget that Buildcraft puts its .cfg file in the Buildcraft folder in .minecraft and Redpower likewise puts the .cfg file in its own folder as well. Other mods may also do this, so if you see a folder in your .minecraft folder with a name of a mod, odds are you'll need to check it out.

 

Once you are sure that all of your .cfg files have been edited, and that there's no possible way that any ID blocks are on the same number... run your instance again. It should run just fine.

 

Once you feel comfortable editing ID block numbers, you may go back, if you wish, and 'compact' them a bit further. Just remember to keep some gaps in case the mods come out with new versions that have new and shinier toys that have ID Blocks.

 

Congratulations, the last hurdle which stops 90% of the people interested in mods from using them has been covered! Have fun enjoying mods!

 

*This post was moved from the wrong forum to this one. If the Admins wish to move this to the Support and Bugs forum and sticky it as a preemptive answer about ID block resolution errors, they are free to do so.*

Link to comment
Share on other sites

Since you are focusing mostly on SP, have you looked at ID Resolver?

Or even providing a second tutorial that's not MultiMC? (Even though MMC is awesome!)

 

So, what would happen if I did push that shiny red button over there? ... Really? ... Can I try it? ... Damn.

Link to comment
Share on other sites

Since you are focusing mostly on SP, have you looked at ID Resolver?

Or even providing a second tutorial that's not MultiMC? (Even though MMC is awesome!)

 

Good questions, both of them.

 

I was trying to write an idiot user proof friendly guide which anyone capable of installing minecraft would be able to follow and use. The most user friendly method of working with mods is MultiMC, because you don't have to worry about META-INF, or any of a dozen other problems. Heck, it's even more user friendly than MagicLauncher, which I used until I could update my OS to Precise for the Mono update.The flexibility, versatility, and utility of the program is such that I feel that anyone new to modding will find it to be extremely useful.

 

In general, if they are new to modding, then MultiMC will give them the user friendliness of something like Technic, but the flexibility of choosing precisely which mods they want. And, yanno, not supporting Technic (although they have at least made an effort to correct certain behaviour patterns that earned them their reputation for mod-stealing). If they are familiar enough with modding already, they probably already know how to resolve ID blocks, and thus not the target of this tutorial.

 

I can, however, put in a section 'If you don't have/want/use MultiMC, resolving the ID block conflicts is very similar. Just go into your .minecraft folder and manually edit them as follows'. In fact, I think I will. Thanks for the idea.

 

I'm at least familiar with ID Resolver, in fact I was in the DW20 IRC last night when the mod author found out Technic was including it and one other mod she developed without permission. Fortunately, IceWolf was very courteous and polite, and apologized profusely, and now does have permission, and appropriate credit given.

 

I've heard some horror stories about IDResolver breaking a lot of things, although it was a while back, which kind of discouraged me from testing it. Doing some reading, I've found that most of those horror stories were fixed in release 1.2. I'll play around with it and see if it does what I think it does, in which case I'll just suggest this. In fact, I might write up a new tutorial 'Modding for Dummies', which pretty much says "Pay Mojang for your copy of Minecraft. Download and install MultiMC. Put in Forge. Put in mods. Run IDResolver. Play with mods", similarly aimed primarily at new modders.

 

My whole goal with this tutorial is to reduce new modders' dependency on modpacks.

 

I also had an idea for making a mod, but it's probably too ambitious a project to someone as new to playing with Java as I am. New terrain structure generation, fractal structure creation, new mobs which only spawn in said structures, new items which provide effects by being in the hot bar... and the easy stuff, making new blocks... well, there's  only one new block in the whole mod, and even that I try to make too complicated by using damage values to color shift it. No new armor or ores. Kinda backwards from where I should be starting out. I think I'll just play around with Java for now until I get more comfortable with it. Fortunately, Eclipse IDE comes in the Ubuntu Software Center, and I already picked up the JDK, so it won't require a financial outlay.

Link to comment
Share on other sites

  • 4 weeks later...

Hi. Thank you for this tutorial, I tried to resolve block ID's like this once before, but ended up making more conflicts haha. So I retried using your method (associating each mod with a different hundreds value) and it worked! But on the downside, it has messed up the textures of the mod's blocks which I had reassigned a value, so now that it shows 1 face of the block when in my inventory and hotbar. Did I miss something? Or is there a way I can fix it again? Thank you again for this tutorial and for any answers.

Link to comment
Share on other sites

  • 3 months later...
  • 3 weeks later...

ok i am having an issue installing the following mods on the latest forge build for 1.4.5

 

build craft

Terrafirma craft

rail craft

train craft

forestry

 

i ve changed all the block ID's according to your recommendations but i get an odd block conflict

heres the error log

 

 

 

 

 

 

      Minecraft has crashed!     

      ----------------------     

 

Minecraft has stopped running because it encountered a problem; Failed to start game

 

A full error report has been saved to C:\Users\Ian Douglas\AppData\Roaming\.minecraft\crash-reports\crash-2012-12-16_15.53.51-client.txt - Please include a copy of that file (Not this screen!) if you report this crash to anyone; without it, they will not be able to help fix the crash :(

 

 

 

--- BEGIN ERROR REPORT b03ae02a --------

Full report at:

C:\Users\Ian Douglas\AppData\Roaming\.minecraft\crash-reports\crash-2012-12-16_15.53.51-client.txt

Please show that file to Mojang, NOT just this screen!

 

Generated 16/12/12 3:53 PM

 

-- System Details --

Details:

Minecraft Version: 1.4.5

Operating System: Windows 7 (amd64) version 6.1

Java Version: 1.7.0_07, Oracle Corporation

Java VM Version: Java HotSpot 64-Bit Server VM (mixed mode), Oracle Corporation

Memory: 456543440 bytes (435 MB) / 599851008 bytes (572 MB) up to 954466304 bytes (910 MB)

JVM Flags: 2 total; -Xms512m -Xmx1024m

AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used

Suspicious classes: FML and Forge are installed

IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0

FML: MCP v7.23 FML v4.5.62.495 Minecraft Forge 6.4.2.445 17 mods loaded, 17 mods active

mcp [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized

FML [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized

Forge [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized

mod_CodeChickenCore [CodeChicken Core] (coremods) Unloaded->Constructed->Pre-initialized

mod_NotEnoughItems [Not Enough Items] (coremods) Unloaded->Constructed->Pre-initialized

mod_ReiMinimap [mod_ReiMinimap] ([1.4.5]ReiMinimap_v3.2_05.zip) Unloaded->Constructed->Pre-initialized

BuildCraft|Core [buildCraft] (buildcraft-A-3.2.2.jar) Unloaded->Constructed->Pre-initialized

BuildCraft|Builders [bC Builders] (buildcraft-A-3.2.2.jar) Unloaded->Constructed->Errored

BuildCraft|Energy [bC Energy] (buildcraft-A-3.2.2.jar) Unloaded->Constructed->Pre-initialized

BuildCraft|Factory [bC Factory] (buildcraft-A-3.2.2.jar) Unloaded->Constructed->Pre-initialized

BuildCraft|Transport [bC Transport] (buildcraft-A-3.2.2.jar) Unloaded->Constructed->Pre-initialized

BuildCraft|Silicon [bC Silicon] (buildcraft-A-3.2.2.jar) Unloaded->Constructed->Pre-initialized

Forestry [Forestry for Minecraft] (forestry-A-1.6.2.3.jar) Unloaded->Constructed->Pre-initialized

IC2 [industrialCraft 2] (industrialcraft-2_1.109.113-lf.jar) Unloaded->Constructed->Pre-initialized

Railcraft [Railcraft] (Railcraft_1.4.5b-6.10.0.0.zip) Unloaded->Constructed->Pre-initialized

TerraFirmaCraft [TerraFirmaCraft] (TFCraft-Universal-Core-B2-Build72.zip) Unloaded->Constructed->Pre-initialized

TC [Traincraft] (Traincraft-3.1.12_014.jar) Unloaded->Constructed->Pre-initialized

LWJGL: 2.4.2

OpenGL: GeForce GT 640/PCIe/SSE2 GL version 4.2.0, NVIDIA Corporation

Is Modded: Definitely; Client brand changed to 'forge,fml'

Type: Client (map_client.txt)

Texture Pack: Default

Profiler Position: N/A (disabled)

Vec3 Pool Size: ~~ERROR~~ NullPointerException: null

 

java.lang.IllegalArgumentException: Slot 400 is already occupied by amj@1aaa4a39 when adding buildcraft.builders.BlockArchitect@21eef1dc

at amj.<init>(Block.java:323)

at aju.<init>(BlockContainer.java:11)

at buildcraft.builders.BlockArchitect.<init>(BlockArchitect.java:43)

at buildcraft.BuildCraftBuilders.initialize(BuildCraftBuilders.java:260)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:440)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)

at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)

at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)

at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)

at com.google.common.eventbus.EventBus.post(EventBus.java:268)

at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:140)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)

at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)

at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)

at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)

at com.google.common.eventbus.EventBus.post(EventBus.java:268)

at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:83)

at cpw.mods.fml.common.Loader.loadMods(Loader.java:480)

at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:161)

at net.minecraft.client.Minecraft.a(Minecraft.java:412)

at net.minecraft.client.Minecraft.run(Minecraft.java:746)

at java.lang.Thread.run(Unknown Source)

--- END ERROR REPORT 2da2ccd8 ----------

 

 

 

 

every time i try to change the ID's in the 400 range i get this error

i can' t go higher as it effects world gen and anything below causes the same error as above

 

any help ?

 

Link to comment
Share on other sites

On correctly coded mods, deleting the config of the mod throwing the conflict should fix the problem, if it doesn't, add a z to the beginning of the mod's zip file to force it to pre-init last, then delete the config, and it should automatically reassign.

 

Another easy way to resolve conflicts if you don't plan on modifying configs often is to open forge.cfg and set B:enableGlobalConfig=true.

 

This will combine all the configs into a single global.cfg, and the blocks should be combined all in one area, the block category.

 

This however, will make modifying other config options a bit harder, as everything will now merge into the global.cfg file.

 

Also, if using mods with high customization, it might make everything very cluttered, but it is an option to help see where the conflict is happening.

Link to comment
Share on other sites

  • 4 months later...

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

    • A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffc3fe22b60, pid=15228, tid=5140 # # JRE version: OpenJDK Runtime Environment Microsoft-8035246 (17.0.8+7) (build 17.0.8+7-LTS) # Java VM: OpenJDK 64-Bit Server VM Microsoft-8035246 (17.0.8+7-LTS, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64) # Problematic frame: # C [atio6axx.dll+0x192b60] # # No core dump will be written. Minidumps are not enabled by default on client versions of Windows # # If you would like to submit a bug report, please visit: # https://aka.ms/minecraftjavacrashes # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug i have no idea why please help
    • Considering the financial revolution sparked by cryptocurrencies like Bitcoin, the digital era has opened up a plethora of opportunities. But this exciting new world also comes with a terrible reality: in the harsh, brutal blockchain environment, there's always a danger you could lose your precious digital assets. Services like ADWARE RECOVERY SPECIALIST are not merely recovery agents in this case; they are crypto lifelines, and my own experience attests to their vital importance. I had an amazing time exploring the world of Bitcoin on my own; it was exciting to be in a completely new place and to see the possibility of independent money. However, a careless mistake of choosing the incorrect platform for my investment sent me into total despair. It seemed as though my digital lifeblood, Bitcoin, had been devoured by the blockchain's vicious maw. Overwhelmed with hope, I began a frantic quest for solutions, looking up any clue of assistance on the internet. I discovered  ADWARE RECOVERY SPECIALIST at that point.  Initially, I was filled with misgivings, but their unwavering professionalism and clear communication offered me a glimpse of hope. I set them the very impossible task of locating my missing fortune. The ADWARE RECOVERY SPECIALIST team of professionals meticulously penetrated the labyrinthine depths of the blockchain with the aid of cutting-edge technology and years of honed experience, treating my case with the utmost care and respect and keeping me informed at every turn. I had never encountered anything like the recuperation process. The days of confusing technical jargon and excruciatingly long wait times were over. And then the miraculous happened. My Bitcoin miraculously reappeared in my wallet, coming safe and sound from the digital void in an almost amazing length of time. Integrating  ADWARE RECOVERY SPECIALIST into your Bitcoin recovery process is not as magical as waving a wand, but it sure feels like it with the seamless and effective tools it offers. By following best practices, training your staff, and learning from successful case studies, you can optimize your Bitcoin recovery efforts and stay ahead of potential risks. The future outlook for Bitcoin recovery with ADWARE RECOVERY SPECIALIST looks promising, providing users with the confidence and tools they need to navigate the ever-evolving landscape of digital assets. It was a very happy moment that showcased the ADWARE RECOVERY SPECIALIST team's remarkable talent and dedication. However, my experience serves more purposes than just self-interest; it serves as a sobering reminder of the expanding demand for dependable and trustworthy bitcoin recovery services, such as ADWARE online recovery.
    • Quick-Books is great with regards to coordinating your monetary data. You can decide to live talk with a specialist at Quick-Books to get the answer for your questions. You will actually want to get to the talk going to the landing page and call us +1855-210-1428.
    • Update: I managed to make the item not disappear after crafting, but it doesn't remove any durability. import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.Enchantments; import net.minecraft.enchantment.UnbreakingEnchantment; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class NuggetHammer extends Item { private boolean damage; public NuggetHammer(Properties p_i48487_1_) { super(p_i48487_1_); } @Override public int getMaxDamage(ItemStack stack) { return 54 - 1; } public boolean isBarVisible(ItemStack stack) { return false; } @Override public ItemStack getContainerItem(ItemStack stack) { ItemStack copy = stack.copy(); copy.setCount(1); if (!this.damage) return copy; int unbreaking = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.UNBREAKING, stack); for (int i = 0; i < unbreaking; i++) { if (UnbreakingEnchantment.shouldIgnoreDurabilityDrop(stack, unbreaking, random)) return copy; } copy.setDamageValue(stack.getDamageValue() + 1); if (copy.getDamageValue() > stack.getMaxDamage()) return ItemStack.EMPTY; return copy; } }  
  • Topics

×
×
  • Create New...

Important Information

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