For each biome:
- For each feature:
- - If the feature's config is a DecoratedFeatureConfig:
- - - If the Decorated Config's feature's config is an OreFeatureConfig:
- - - - If the Ore Config has the block we're looking for:
- - - - - Remove the feature.
Yes, the feature's config's feature's config. Vanilla wraps things in several layers and its the inner-most one that actually tells us what KIND of feature it is.
I understand your issue with with the networking. However I'm pointing out that you're hurling all of your classes at the event bus four different ways and you don't need to do that.
And I was right:
You're doing more registration, yet another way.
public class MyCustomFuelDetails {
// stuff
}
A "data class" is, unsurprisingly, a class that holds data. In this case, the three values about your fuel that all have a tight relationship to each other.
Eg:
public class MyCustomFuelDetails {
public bool someBool;
public int someInt;
public Fluid someFluid;
}
This:
This:
And this:
All do the same thing (the first two literally do except for different busses and the only event methods you have are all FORGE bus events; the second does the same thing, but to a different class).
Pick one.
Then there's this:
Which either also does the same thing or does nothing (you didn't share that class). And is either way confusing.
You have to remove them from each biome individually.
This might help, and this is by no means "good code" (I haven't updated in a while and it was written in an attempt to figure out how to do the kind of thing you're trying to do).
https://github.com/Draco18s/ReasonableRealism/blob/1.14.4/src/main/java/com/draco18s/harderores/HarderOres.java#L206
Probably. Which means that it is a lower priority than the regular BreedGoal because it's later in the task list.
You either:
(a) need to remove the original goal
(b) make your goal have a higher priority
Well, you take the resulting vector figure what angle it is relative to some other vector using trig. That value can then be divided by some other number to produce a value between 0 and 1.
AI tasks have a priority value and a "can run simultaneously" bitmask value. If your task has the same bits set as another take, but a lower priority (towards positive infinity, iirc) then it won't run.
So
Show your code.
Well, for one, the unlocalized name and the registry name are not the same thing.
For two, I don't believe that the method is getObject any more, but you'd have to look at what methods the Registry class exposes and pick one that appears to do what you want (because it probably does).
ArrayList<String>[][]
That's not an array list. That's an array of arrays of arraylists.
https://www.w3schools.com/java/java_arraylist.asp
But yes, as vemerion is right. Its not initialized. But all of its sub-values aren't initialized either.