Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mod Direction and Plans #2

Open
jrddunbr opened this issue Dec 17, 2021 · 0 comments
Open

Mod Direction and Plans #2

jrddunbr opened this issue Dec 17, 2021 · 0 comments

Comments

@jrddunbr
Copy link
Contributor

I spoke with @Caeleron for a bit about where we're going with this.

For the time being, we're going to approach this in different steps:

  • I'm going to focus on the ore processing chain and the resulting processing of better and better materials from that
  • Cameron's going to focus on the terrain and ore generation.

After long discussion about this topic, we came up with the following ideas for world generation.

  1. At world start, we need to generate plates. These plates can be generated using an algorithm where we take a bunch of adjacent dots, connect them in a shape that does not overlap itself (much - calibration required) and then space-fills the selected dots against adjacent ones to form a plate boundary. Alternatively, we have a system that we could use that basically we take a few dozen hexagons and we determine what direction they are going and which ones are grouped together.
  2. Once we have plates and their movement history, we can plan for where ores generate
  3. We generate the ores and the world and use the information about the types of rifts and faults to generate the mountains, plains, and other biomes for the world.

Once the ore is generated, it's pretty simple to start the ore processing chains.

More research is probably required, but maybe we can probe someone at the USGS locally about this sort of information and learn more about geology and the associated learnings we can use to make this mod work.


We also discussed how we're going to format NBT Tags.

So, when we have ores in block form, they have block state. We can use this to specify the type of rock and the type of minerals in that rock.

Upon the rock being broken, this is converted into an ore chunk item, which has a tag with all of the different minerals and such in the rock.

This material stores the following data:

data class RawMineral(val material_name: String, var moles: Double)

We will combine this with a table of material_name, molecular_symbols (or similar), density and a few other useful parameters.

These, combined with other resources, will eventually result in quantities of particular materials (also with tags) such that we can eventually use these for detailed crafting in later recipes; for example, to make an inductor of X size (henries), we may require 5 grams of 22 AWG copper wire plus an iron rod 5mm in diameter and 15mm long. You spin this around the inductor and make your inductor in a crafting table or spooler.

Cameron and I briefly touched on this in a conversation; we're likely going to have a similar mode to the easyWaila mode that we had in Electrical Age, where you can actually see what minerals are in a material without just being told the material name.. in some cases we might be a little ambiguous about the actual materials contained because we want to hide the "cons" of certain material processes (eg, Wolframite). This will be handled with conditional logic on the client side render. In the situation where we make everything easy, all of the resources inside of the tag will be exposed, including the molar and mass; otherwise, we will simply give you an item name in the hotbar and nothing else (although we may give you an in-world measuring scale that at least lets you measure the mixture weight itself).


Fluids.

To my knowledge, Minecraft fluids cannot store block state nor tags. This is a problem.

This means that fluids that are exposed to Minecraft's Fluid api must be handled entirely in mB liters.

The conversion from millibuckets to liters is 1L. That might sound insane, but recall that Minecraft has 1 meter cubed of water fit in a bucket.. somehow. This is 1,000 liters - seriously, look it up if you don't believe me. One cubic meter is 1,000 liters. Your standard soda bottle? It's got like 2 liters in it for the larger sizes.

Oh, another fun thing. One cubic meter of water weighs 1,000kg. I think at this point it's well established that Steve/Alex are very strong.

Jokes aside, this fluid limitation means one of two things:

  1. The fluids we have don't go through the normal fluid system and are instead using a new fluid system we create.
  2. Fluids are severely limited to particular types and any other fluids we might have are extremely generic with the exception for a fluid for every type of ore slurry we plan to support.

Speaking of ore slurry, please take note of the existing ore dressing document we've had for a while.

OreDressing

No, we are not planning on supporting Vintage Story anymore. So that's out.

Cameron thinks that this is sufficient for now but we may redo this later. There are also important things that are omitted on this document for clarity, such as the fact that all of the sluices require water and remove some of the material in that process. Cameron also questions how "clean" the ores would be from this but that's a topic for another time.

For the time being, this is what we're going to go with, and once we've got this wrapped up, we'll be ready for all the other mods to have realistic crafting available.

Feel free to comment below if you have additional thoughts on the processes discussed above, but anything that isn't that should be opened as a new issue against the repository for consideration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant