Tweets

DevBlog: Strawberry Compatibility Notes

Well, it’s been two months since I last updated everyone here, and that’s largely because it’s been too long since I’ve made any progress worth showing. I’d gotten caught up trying to fix a rendering bug with Carnivora’s next release that cost me about a week and fried my brain for modding for a month. I’ve also been involved in discussions with other modders about some things that will only be announced if they start to pan out (but shouldn’t be eating actual development time from me).

And it’s HOT outside.

For those of you who don’t live in warm climates, I cannot begin to explain the mental toll 100F can take on a person. Especially a person who’s air conditioning is on the fritz 😉

Sorry for the extremely ugly screenshot, but the point is that EBXS Meadows does in fact have strawberries now – and the next build I release will make them available to people.

I’ve completely rewritten the way crops are handled, which should make different plant types easier to manage and more consistent in the future. Hopefully I’ll actually be able to knock out onions quickly now 🙂

I am also making wild crop spawning completely configurable. This is one place I really let people down in the original EBXL release – Strawberries were hard-coded to spawn in certain biomes and had non-configurable spawn density. That is going to change.

In the new release, it will be possible to not only add a new biome to the approved list for wild crops, but it will also be possible to configure the patch size. We will have the same default size and patch frequency as before, but all of these numbers will be tweakable.

OreDict Conventions

On that note, the subject of ore dictionary names for crops has come up on the forum thread, and is worth addressing generally.

We have always tried to maintain as much compatibility as possible with other mods. It’s a thing that matters to me. When it comes to crop mods, there really aren’t very many options out there. The main mod in question is of course Pam’s Harvestcraft. I’ve worked with Pam in the past to help her improve mod compatibility, and I play with her mod more often than not.

So when one of my mods introduces a food item to the game, you can be certain it is going to be as compatible with Harvestcraft as I can possibly make it. You can use Extrabiomes strawberries in her recipes, you can use Carnivora calamari in them, etc… Pam has a very consistent pattern for her ore dictionary naming, and I match it for this reason.

Not everyone agrees with this naming scheme, however. 10pak, the author of the wonderful Plant MegaPack mod (which we totally recommend), has a different opinion. PMP’s strawberries register themselves as “foodStrawberry” and HC’s strawberries register themselves as “cropStrawberry”.

10pak’s blog post asserts that this is because a “published standard” says to do it that way. I’d normally want to agree with him… but I can’t for the following reasons:

The “standard” in question is a wiki page maintained by the community at large.

The argument that “other mods were here first” should carry weight. The whole point of the ore dictionary is cross-mod compatibility. Precedent really should matter.

His interpretation of the wiki post is flawed. According to the post, Forge itself registers potatoes and carrots as “cropPotato” and “cropCarrot”, not as “foodPotato” or “foodCarrot”.

There is, unfortunately, not any sort of formal standards committee for this sort of thing. The closest thing we have is the community of developers using the api’s in question and you’ll never get all of us into a room together to hash things out. The wiki page he’s hinging his decision to refuse compatibility with everyone else on is maintained by random community members whose names I don’t personally recognize. I’m not going to judge their opinions as superior to that of the actual established standard usage – even if that’s what they were saying.

So, in the future, I will continue to register strawberries as “cropStrawberry”. This agrees with Forge’s usage as well as that of the majority of food mods out there.

However, while I disagree with 10pak’s decision, I can respect it. In an attempt to extend compatibility in both directions and support PMP, I will also provide a configuration option to also register crops as “food”. The ore dictionary doesn’t care. The only downside to registering something with multiple names is that most unifying mechanics won’t combine stacks of items unless all of their ore dictionary names match, but that’s a small price to pay for making everyone’s plants get along better.

Foods that aren’t cultivated but might benefit from ore dictionary registration will be registered as “food” in my mods, and not as “crop”. So that means that I will be registering chocolate as “foodChocolate”, which I don’t think anyone will dispute.

I don’t like this solution, I wish everyone would just agree on a usage… but that’s not going to happen any time soon.

Something Completely Different

Well, not really different, just a brief anecdote. About 15 years ago, I was writing a MUD with a number of other people. We decided that players and npc’s alike needed to eat. So, I wrote a hunger system into the game. It killed many many idle players. It was glorious.

We provided players with numerous food sources, from cultivated farm plots to fruit trees to hunted game. Back then, I made the following decisions for filenames: