andrewminer / crafting-guide

The ultimate step-by-step guide to make anything in Minecraft
http://crafting-guide.com
66 stars 192 forks source link

Adding GregTech to CraftingGuide #320

Open RedNicStone opened 6 years ago

RedNicStone commented 6 years ago

Change the recipe of other mods/Vanilla

Howdy,

I want to add GregTech to the Crafting Guide site.

I had to Problems:

First off,

GregTech modifies other mods recipes. And here comes the question: Do I have to add the recipies it changes just as the normal recipies?

Second,

there are 6 different Versions of GregTech, who differ DRAMATICALLY from each other. Some people like to install GT4, some enjoy GT5, and People like me are playing GT6. How do I manage that?

It would be great if you help me out. :grin:

Good mining, RedNicStone

andrewminer commented 6 years ago

Hello @RedNicStone! I have often considered adding GregTech, but have been daunted by the sheer number of new items and recipes (not to mention changes to other mods). I'd recommend you read through the various pages of the wiki on this repo to see how the various file formats work for Crafting Guide. I think you'll find that there are answers to all the specific questions you're asking in there.

Unfortunately, there's really no automated way to extract the recipes (yet), so it's been rather too daunting for me to tackle.

RedNicStone commented 6 years ago

Thanks for your help, @andrewminer!

I will try to implement GregTech as soon as possible. To speed it up a bit, I'm working on a small Python program that mainly manages the different tiers and textures. If it seems to be working well, I'll make it open.

RedNicStone commented 5 years ago

I wrote the mentioned Python programm, but now had jet another issue:

How the hell do I get OreDicts to work?

I know this sounds really stupid, but there are more than 2 500 recipes for a hammer, 6 250 000 for a file and 15 625 000 000 recipes for a simple screwdriver ??? That's equivalent to 60 000 000 000 lines of code just for some tools autogenerated by my programm. Not just that it took me like 2 hours to generate (ok, you got me there that it isn't accellerated), the server is now running on a 32 thread ryzen thredripper on 100% for 3 days right now, and the recipes are still loading.

What this makes a problem is that there a so many ingots (about 2500) from GT and other mods, which all make a separate hammer / file / wrench / wirecutters / saw, which can be used to make more machines / pipes / wires / blocks.

Puh that was a grind of a programm for nothing :cold_sweat:

Specs:

I would really appreciate a little help in this rather more annoying problem :wink:

Excuse my sometimes bad English, I'm German like GregiusTechniques

andrewminer commented 5 years ago

I've never implemented any oredict support in Crafting Guide, so I'm afraid there's no simple answer here. What I chose to do was to just pick one entry from the ore dictionary for each recipe, and just stick with that (e.g., I only use oak wood planks wherever any kind of planks are called for). You could certainly adjust your program to do the same.

atk0309 commented 5 years ago

Sorry for hijacking ... I read the stuff in the wiki but couldn't understand how to implement ModPack altered recopies. I don't really intend to automate as such but I wanted to add recipes as i encounter them while playing. Slow yes but hey it adds up. But i am not sure how to do it since it changes recopies for existing stuff. For example Enigmatica 2 skyblock gives only 2 planks from 1 log. etc. etc.

Highbeam commented 5 years ago

I'm curious if you got this to work RedNic?

RedNicStone commented 5 years ago

Sooo, this is a looong Story...

After I new the Oredict isn't gonna work, I began messing around with the Core a bit, working on implementing Oredicts and that kind of stuff. The project came to a point, where it was just a mess and I didn't really care of throwing away my old code. Long story short; I trashed allmost all the core code connected to recipes (Sorry for that) and ended up doing one from scratch. The new programm is mostly written in Python, with some tweaks like multicore graphics card support for backtracking the recipes (And yes, it dose need that power). Recipes are stored in a tree-like datastructure and unloaded from RAM for performance boost. Since a treelike structure is best for solving things like this, it handles a request in about 20-30 ms, depending on the CPU and RAM of course. Adding components to the tree gets exponentially slower at the model Operations = Oⁿ = O0/n² operations per time in a worst-case scenario. This results, if you take a look at GregTech 6, in about 16½ hours of work on dual 2080ti graphics cards. You can see the speed of the computer at mersenne.org: Niels Mache Nextcloud. I think it's around 13th place if im right. Anyway, the programm is not finished jet, and I will upload it to GitHub as quickly as possible, but there is still temporary code in there, wich I will remove before it confuses people.

Sill left to do:

Thanks for future support!

Highbeam commented 5 years ago

I'm curious if this will work for any pack using GregTech? I played GregTech New Horizons which is a big community where the recipes from GT are tweaked for progression, questing and tiers in a hardcore pack.

Does it still work in website format like this original project?

RedNicStone commented 5 years ago

GTNH was exactly why I joined the project :wink:. I wanted some help crafting the HV stage thingies (The programm is a bit late then, since im Inf. Tier now :sob:).

To your Question: Till now, I only modified the Core; leaving the website frontend mostly as-it-is, since I do not have anything against it's present design. I did changed up the final display of the crafting task, since I wanted to present more than 1 combination to craft the Item in case the result crafting task is broaken in some kind.

RedNicStone commented 5 years ago

I still would like to have some kind of application for your computer, but I know hard it is to implement.

Highbeam commented 5 years ago

So in theory how does this work?

You have an exe tool you can use to calculate recipes. But first you must run the program for several+ hours on the current version of GTNH to produce the database?

I guess it only calculates upto 9 items?

RedNicStone commented 5 years ago

Actually it's kinda simple:

  1. Listen for Item registeries by an simple mod
  2. Get all the Information of the loaded Items (Crafting, Smelting, eg.)
  3. Getting depends of the Items (Crafted by ..., Needed by ...)
  4. Sorting the dependencies and saving the net
  5. If a recipe gets requested, the net is sorted by the outcome Item to be in the layer 0, his dependencies in layer 1, their in layer 2 and so on.
  6. Non connected parts get cut away.
  7. The crafting progress gets displayed on the frontend

A good reference of this top-down tree structure, generated by a net, is in the book "The Art of Computer Programming - Sorting and Searching - Volume 3" by Donald E. Knuth

The search deph of this Algorithm is limited to 256 Layers, which, since creating the net takes the most time (Only done once), would be practical impossible to reach.

RedNicStone commented 5 years ago

There will be an Alpha like next month, but I shurly want to add better processing - like secondary (by-)products - before release. Also I want to improve the algorithm a bit.

I tied different recipes and benchmarked them;

Highbeam commented 4 years ago

Hi @RedNicStone, did you have any luck with this program? I'd be interested in seeing if its possible to use for one of the modpacks

RedNicStone commented 4 years ago

I do have problems adding NEI/JEI comparability, since I only got the API working prior to 1.8 . I would really appreciate some help since im not a Java programmer (Python + C only 😥 ). I used jyphon, but since Minecraft changed the class system by 1.8, Forge won't detect me as a class (as jyphon has not the same classpath). Of course this is not required to run the new core, but I haven't got time to do the web UI yet... I mean you could try the text based search engine if you want (you get an .yml file out of the reqired crafting steps). Thanks to anyone to support me, I really need a modder or similar.

RedNicStone commented 4 years ago

Actually, which MC version is your modpack on? GTNH?

Highbeam commented 4 years ago

1.7

Highbeam commented 4 years ago

Hi @RedNicStone , as you can see there is interest in this from our community. Did you get this working on 1.7 at least? And if so, is there anything you can provide to get us going? A working version that breaks out the recipes would be an awesome start. We'd probably want to tweak it to ignore particular recipes

Highbeam commented 4 years ago

@RedNicStone are you still active? how can I contact you to discuss this further?

RedNicStone commented 4 years ago

Sorry that I let you wait for so long. You can Contact me via Email: nic@struktur.de Or via Discord: RedNicStone#8720

Highbeam commented 4 years ago

I tried to add you on discord but I can't find you - my discord is Highbeam#0584.