mcenderdragon / Futurepack-API

A small Api for the Futurepack
21 stars 4 forks source link

FuturePack Dusts incompatible with nuclearcraft #354

Open 1skandar opened 6 years ago

1skandar commented 6 years ago

If you run FP zinc ore through a TE pulverizer you end up with Dust. Not zinc dust, just Dust. You run Magnetite ore through the same way you also get Dust. A different type of dust, but still named Dust.

As a secondary issue, the resulting zinc Dust can't be smelted in a furnace or Redstone Furnace, for that matter. (I understand that the magnetite dust shouldn't be).

And, a bigger problem, the FP super crusher can crush other mods' ingots into dusts. This works well when those ingots have a dust they can be crushed into, if they don't they end up as Dust as well. This can be seen with such things as EssentialCraft 3's ingots, a lot of which have no dust variant.

As a result, a lot of the Dusts end up with all sorts of weird ore dictionary tags that I have yet to be able to figure out how to sort out.

mcenderdragon commented 6 years ago

To be honest I dont understand the issue at all. The Futurepack dynamically adds dusts and registers them and adds smelting recipes and colors for them.

mcenderdragon commented 6 years ago

dusts

1skandar commented 6 years ago

Yeah, the problem is you are registering them as "Dust" not "Foo Dust". Which means your mod may be able to handle them ok and vanilla furnaces, but other mods have no idea what to do with them. The TE Redstone Furnace, for instance refuses to have anything to do with them. And, for whatever reason, it is causing them to be tagged with the wrong ore dict tags in some cases.

This feature is kind of unneeded, or at least should be able to be turned off. In most cases if a dust is needed a dust already exists and where it doesn't there is usually a reason for that. At the very least your mod should try to hook into what is already there and not register a dust that already exists.

mcenderdragon commented 6 years ago

Ok I think I need t explain how the Dust manager workds in order to sort this out. You see the toltip right ? The tooltip is the direct list out of the OreDictionary, so they are registered dust* (dustTin, dustNeon, ...). If other mods are unable to handle them then they are bad written/dont use OreDict or got modified by coremods. There are enough configs for the dust manager, and only if the dust is not alredy registered it is created. If there is a dust but another mods also have this dust the the solution is very simple: the other mod has not registered the dust into the OreDict.

1skandar commented 6 years ago

I think it may be a mod load order problem. The problem I'm having right now is with Zinc. I'm fairly sure that FP is loading after TE and FP is the only one with zinc in my pack (well, zinc dust). Ore dictionary tag or not, when TE registers its Redstone Furnace recipes it can't pick up a material that does not exist yet.

And then there is the issue of it creating dusts that have no reason to exist and in some cases shouldn't Essentialcraft is a good example of this, it has ways of creating magical cheaper knockoffs of expensive raw materials. Pale gems that act like diamonds, for instance. And your dust system can't handle that so it does this:

2018-01-28_11 03 29

Which, honestly, I'm not sure what you get when you try that for real.

And there are cases where it is making dusts out of things it shouldn't. Extra Utils unstable ingots, for instance, have no dust form for a very good reason. Nuclearcrafts' fissile materials also have no dust form because they were already processed to get at that point and they become useless in dust form.

And then there is this: 2018-01-28_11 14 48

weirdness with the OreDict tags that I have yet to pin down on a culprit but it is causing me no end of grief.

The dust system needss to be able to be turned off without extensive Craftweaker work.

mcenderdragon commented 6 years ago

Ahh a hash collision so it finally happened. If there is an ingot I create an dust for it, instable-ingot dust is not game breaking as far as I know. The Zinc thing happens because of the minecraft limitations of possible metas, (about 32000) so the hashes collided (TBH I dont hnink this ingot from nuclear craft should be inside the oreDict but okay....) This feateture wil die in 1.13 anyway so yeah, I am not sure if I have time in the next 2 month to rewrite our dust system.

Or maybe a blacklist config to remove stupid OreDict entries (like that nuclear or instable stuff)

1skandar commented 6 years ago

black listing would be good. You're blindly reaching into other mods and adding stuff without a good way to make sure it is appropriate or not to do so. That is not a good thing to do without a very explicit way to stop it from doing so in case of edge cases like this and other exploits and issues.

mcenderdragon commented 6 years ago

IMO this problem would exists if people only add sane stuff into the OreDict (like only actual ingots. I mean what other mod has added instable ingots besides ExtraUtils? Or wich mod uses the same nuclear isotops, but the It is a long known issue the oreDict is not used as it shuld be and people are jsut trying to solve them but no one cares....)Ohh well lets see what I can do.

mcenderdragon commented 6 years ago

Reading this again, I was kind of rude, I am sorry for that, if I somehow insulted you, I am even more sorry.

1skandar commented 6 years ago

It is fine, don't worry about it. I was a bit cranky too from trying to deal with an odd unsolvable but ultimately trivial bug.

WazWaz commented 5 years ago

The strangest entry is this one:

furnace.addRecipe(<nuclearcraft:berkelium>, <fp:dust:*>, 1.000000

And CraftTweaker throws a NullPointerException if I try to remove it. The consequence is that iron dust from the FP Crusher becomes Berkelium in the furnace.

mcenderdragon commented 5 years ago

this recipes basicly says all of our dust is dustBerkelium and this breaks everything. Where did you find this line ?

WazWaz commented 5 years ago

In the output of crafttweaker recipes furnace.

mcenderdragon commented 5 years ago

I have to check something, maybe this is caused by a bug in our hash algorythm, it is possible for it to generate all positive short values, this also menas it can hash "berkelium" to Short.MAX_VALUE which is the wildcard meta value.