Jump to content

Request to add safety catch for ID conflicts 1.7.x and up


Shrooblord

Recommended Posts

Hello forum and guys behind the Forge,

 

I experienced an issue today combining two mods from Minecraft 1.7.2. The crash report itself is here (but its cause is pretty obvious and I will detail it below):

 

---- Minecraft Crash Report ----

// Quite honestly, I wouldn't worry myself about that.

 

Time: 4/17/14 11:52 PM

Description: There was a severe problem during mod loading that has caused the game to fail

 

cpw.mods.fml.common.LoaderException: java.lang.RuntimeException: A mod has attempted to assign BlockID tconstruct.blocks.BloodBlock@6ca7bb71 to the Fluid 'blood' but this Fluid has already been linked to BlockID com.sirolf2009.necromancy.block.BlockBlood@25e36b9a. Configure your mods to prevent this from happening.

at net.minecraftforge.fluids.Fluid.setBlock(Fluid.java:128)

at net.minecraftforge.fluids.BlockFluidBase.<init>(BlockFluidBase.java:66)

at net.minecraftforge.fluids.BlockFluidClassic.<init>(BlockFluidClassic.java:27)

at tconstruct.blocks.TConstructFluid.<init>(TConstructFluid.java:21)

at tconstruct.blocks.BloodBlock.<init>(BloodBlock.java:16)

at tconstruct.common.TContent.registerBlocks(TContent.java:367)

at tconstruct.common.TContent.<init>(TContent.java:148)

at tconstruct.TConstruct.preInit(TConstruct.java:118)

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

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

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

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

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

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

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

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

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

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

at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:209)

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

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

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

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

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

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

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

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

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

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

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

at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:465)

at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:813)

at net.minecraft.client.main.Main.main(SourceFile:103)

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

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)

at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

Caused by: java.lang.RuntimeException: A mod has attempted to assign BlockID tconstruct.blocks.BloodBlock@6ca7bb71 to the Fluid 'blood' but this Fluid has already been linked to BlockID com.sirolf2009.necromancy.block.BlockBlood@25e36b9a. Configure your mods to prevent this from happening.

... 44 more

 

 

A detailed walkthrough of the error, its code path and all known details is as follows:

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

 

-- System Details --

Details:

Minecraft Version: 1.7.2

Operating System: Mac OS X (x86_64) version 10.9.2

Java Version: 1.7.0_51, Oracle Corporation

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

Memory: 114279440 bytes (108 MB) / 531628032 bytes (507 MB) up to 954728448 bytes (910 MB)

JVM Flags: 1 total; -Xmx1G

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

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

FML: MCP v9.01-pre FML v7.2.156.1056 Minecraft Forge 10.12.0.1056 28 mods loaded, 28 mods active

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

FML{7.2.156.1056} [Forge Mod Loader] (forge-1.7.2-10.12.0.1056.jar) Unloaded->Constructed->Pre-initialized

Forge{10.12.0.1056} [Minecraft Forge] (forge-1.7.2-10.12.0.1056.jar) Unloaded->Constructed->Pre-initialized

AppliedEnergistics2-Core{rv0-alpha-90} [AppliedEnergistics2 Core] (minecraft.jar) Unloaded->Constructed->Pre-initialized

CodeChickenCore{rc_} [CodeChicken Core] (minecraft.jar) Unloaded->Constructed->Pre-initialized

NotEnoughItems{rc_} [Not Enough Items] (NotEnoughItems-1.7.2-rc2.jar) Unloaded->Constructed->Pre-initialized

TConstruct-Preloader{0.1.1} [Tinkers Corestruct] (minecraft.jar) Unloaded->Constructed->Pre-initialized

BuildCraft|Core{5.0.4} [buildCraft] (buildcraft-5.0.4.67.jar) Unloaded->Constructed->Pre-initialized

appliedenergistics2{rv0-alpha-90} [Applied Energistics 2] (appliedenergistics2-rv0-alpha-90.jar) Unloaded->Constructed->Pre-initialized

BiblioCraft{1.6.3} [biblioCraft] (BiblioCraft[1.6.3][MC1.7.2].jar) Unloaded->Constructed->Pre-initialized

BuildCraft|Builders{5.0.4} [bC Builders] (buildcraft-5.0.4.67.jar) Unloaded->Constructed->Pre-initialized

BuildCraft|Energy{5.0.4} [bC Energy] (buildcraft-5.0.4.67.jar) Unloaded->Constructed->Pre-initialized

BuildCraft|Factory{5.0.4} [bC Factory] (buildcraft-5.0.4.67.jar) Unloaded->Constructed->Pre-initialized

BuildCraft|Transport{5.0.4} [bC Transport] (buildcraft-5.0.4.67.jar) Unloaded->Constructed->Pre-initialized

BuildCraft|Silicon{5.0.4} [bC Silicon] (buildcraft-5.0.4.67.jar) Unloaded->Constructed->Pre-initialized

CarpentersBlocks{3.1.2} [Carpenter's Blocks] (Carpenter's Blocks v3.1.2 - MC 1.7+.zip) Unloaded->Constructed->Pre-initialized

ForgeMultipart{1.1.0.268} [Forge Multipart] (ForgeMultipart-1.7.2-1.1.0.268-universal.jar) Unloaded->Constructed->Pre-initialized

McMultipart{1.1.0.268} [Minecraft Multipart Plugin] (ForgeMultipart-1.7.2-1.1.0.268-universal.jar) Unloaded->Constructed->Pre-initialized

inventorytweaks{1.57-116} [inventory Tweaks] (InventoryTweaks-1.57-116.jar) Unloaded->Constructed->Pre-initialized

JABBA{1.1.3} [Jabba] (Jabba_1.1.3_1.7.2.jar) Unloaded->Constructed->Pre-initialized

Mantle{1.7.2-124.8c69232} [Mantle] (Mantle-1.7.2-0.2.6.jar) Unloaded->Constructed->Pre-initialized

necromancy{1.6.8} [Necromancy] (Necromancy-1.7.2.jar) Unloaded->Constructed->Pre-initialized

PetBat{1.3.2} [Pet Bat] (PetBat-1.7.2.jar) Unloaded->Constructed->Pre-initialized

secretroomsmod{@VERSION@} [The SecretRoomsMod] (secretroomsmod-1.7.2-4.6.3.344.jar) Unloaded->Constructed->Pre-initialized

wuppy29_slimedungeon{1.6.0} [slime Dungeons] (Slime Dungeons 1.6.0.zip) Unloaded->Constructed->Pre-initialized

TConstruct{1.7.2-1.6.0.jenkins438} [Tinkers' Construct] (TConstruct-1.7.2-1.6.0.a11.jar) Unloaded->Constructed->Errored

TMechworks{1.7.2-48.583e8f7} [Tinkers' Mechworks] (TMechworks-1.7.2-0.2.5.jar) Unloaded->Constructed->Errored

ForgeMicroblock{1.1.0.268} [Forge Microblocks] (ForgeMultipart-1.7.2-1.1.0.268-universal.jar) Unloaded->Constructed->Pre-initialized

AE2 Version: alpha rv0-alpha-90 for Forge 10.12.0.1024

AE2 Integration: RotaryCraft:OFF, IC2:OFF, BC:ON, MJ:ON, RF:OFF, MFR:ON, DSU:ON, FZ:ON, Waila:ON, RB:ON, InvTweaks:ON, NEI:ON, CraftGuide:ON, FMP:ON

Mantle Environment: Environment healthy.

TConstruct Environment: Environment healthy.

 

 

So what's going on here is that the mod Tinkers' Construct by mDiyo and the mod Necromancy by AtomicStryker both introduce a liquid named Blood. Now before 1.7.x, this wasn't a problem, because blocks had different IDs and conflicts were resolved by editing the respective mods' config files.

 

Now, with the changes introduced in the 1.7.x series of Minecraft (and following versions), block IDs no longer exist as such. Instead, blocks, items and liquids have names. Usually this is fine, but what happens when two mods try to add a new liquid with the same name?

Well, yes, the game crashes like detailed in the crash report.

 

Currently mods do not allow for block/liquid names to be altered by offering such options in their config files (and I have addressed this issue with the mod authors in question, rest assured), but I'd like to ask of you genius craftsmen behind Forge to come up with a safety net for situations like these.

 

Could you create a feature in the newer versions of Forge that catches duplicate naming schemes and offers a way to resolve the conflict? I'm sure it would be a pain for users to have to go after the mod authors themselves and ask them to resolve the issue for them.

 

It'd be great if you'd at least consider the idea. Thank you very much for what you've already done to support us :)

 

Shrooblord

Link to comment
Share on other sites

No, this is a intentional mechanic of the fluid system, modders who use liquids that are the same name should offer a configuration option to disable there liquids so that the end users can decide which ones they want.

If you don't want to share your liquid and possibly have others control the in-world block then you should name your liquid something mod specific.

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

Link to comment
Share on other sites

Alright. Well, I have contacted the mod creators in question.

 

The thing is, these aren't just two liquids coincidentally named 'Blood' - I believe they serve completely uninterchangable purposes - or would the Forge dictionary sort that sort of thing out so that only one liquid named Blood would need be used?

 

Well thanks anyway,

Shrooblord

Link to comment
Share on other sites

Thats the point of the list, if two things are named identical they should be interchangeable, hence why we only allow one to be added as a in-world block.

If they want to NOT be interchangeable then they need to give themselves a unique names such as modid:blood or something.

This is not our issue, and it's working as intended.

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

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.



×
×
  • Create New...

Important Information

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