[WIP] GeoWorld (formerly OreVeins) Master Thread

El_Minadero et. al. presents a new ALPHA release plugin to ROCK YOUR WORLD

Introducing:

There’s Diamonds in them thar’ hills!

This plugin seeks a balance between playability and “realistic” geological features to give your server a truly unique player experience.

GeoWorld will consist of several sub-modules that will be able to work independently. As of now, only one Module, OreVeins (adapted from my previous Bukkit Plugin) is available. Others will be added as my time and ideas allow.


OreVeins Module:

ScreenShots

STAY TUNED FOR A MAJOR UPDATE
The OreVeins module puts the ‘Mine’ back in ‘MineCraft’ by utilizing core ideas from Calculus and Geology. Instead of randomly distributing ores by depth, OreVeins takes a mathematical approach by leveraging rotation matrixes, vector calculus, and optimized GPU algorithms. This allows it to emulate real ore distribution geometries without having to simulate 4.4 Billion years of tectonophysics and geochemistry.

As of v 1.0.1a, three types of Deposits have been implemented:

  • Volcanic Diatremes: The rare, coveted, diamondiferous kimberlite pipes. These deposits form as widening vertical pipes meant to emulate the ancient explosion craters that brought forth most gem-quality diamonds mined today.

  • Hydrothermal Veins: Quartz and pegmatite veins of Emerald, Gold, Redstone, Iron, and Lapiz. Veins are created dynamically at runtime by clever use of Simplex Noise.

  • Sedimentary: Coal-beds, Banded Iron Formations. These deposits extend horizonally or vertically as layers, and might have several layers stacked close together. Current work is focusing on making these bodies generate dynamically.

This mod is being tested as a SpongeForge mod, and thus I’ve no idea if it’ll work with SpongeVanilla Servers.

This is the Github repo https://github.com/El-minadero/GeoWorld.git
And I’ll put a compiled Jar for your convenience here. Scroll down to the “OreVeins Mod as an Immersive Server Experience” section and click on GeoWorld.

Known Bugs:

(Stay tuned for lots of bugs from a major overhaul)

Task List

  • Deployment of completely seed-based generation.
  • Conversion of pre-built worlds

OreVeins Features Implemented

  • Better Coal beds and iron formations!
  • Custom configuration nodes for making your server your own. Make veins as rare or as common as you want.
  • Three types of ore formations.

GeoWorld Features to be Implemented:

  • Pre-built world conversion
  • Multithreading/Hyperthreading optimization
  • Server maps.
  • Multi-world Support (maybe).

GeoWorld Modules to be Implemented:

In Development:

Planned:

  • Igneous
  • GeoRocks
  • TerraNPS

Other Geologic Features ( Volcanoes, Strata, Metamorphic Halos, Metasomatic Halos, Geomorphology)

DEVELOPMENT SNEAK PEAKS

Interested in Helping out?
GeoWorld may grow well beyond my ability to manage it. You can help out by posting bugs, weird directional artifacts, and general feedback as my mod continues to evolve.

7 Likes

Interesting mod idea. I however noticed that your mod lacks any hint of gradle.

Hows that a problem?

  1. there are much better build automation tools than gradle.
  2. if you are fine with attaching libraries to your project manually in your ide then you dont even need to use it.
1 Like

the .jar file was precompiled with the export function from eclipse.

I first learned Java through the Eclipse IDE during a joke introductory CSE course at my university. After that, I got the labs for the upper two classes from a friend and taught myself java through that and developing a bukkit plugin. My first experience with gradle was from the tutorials in the sponge docs, and the gradle plugin for eclipse. I did try to build it with gradle a few times, but it turned out for whatever reason my project wasn’t straightforward to build in gradle (although it should be said my dependencies in Eclipse are managed by the gradle plugin, and always built against the latest sponge beta dev build). In any case, I’m open to making my project more “gradly,” I just don’t know how to do it easily.

This looks like a great plugin! It will definitely be on my server! :slight_smile:

2 Likes

I’m trying to get a test server up tonight. Please post any bugs or problems you have with it. I’ll try to regularly update both the compiled jar and the github repo.

This might be a cool plugin to put on another world for SV-SCS, what do you think @Inscrutable?

Yes, it does. It’s now on the SpongeVanilla Community server :wink:

1 Like

Let me know how the abundances and little ‘epogene enrichment’ (surface exposures) works out. On my test server I’ve noticed a few strange surface features and an overabundance of veins.

What exactly do you mean by

Does the code make use of Intel’s embedded GPU hardware, or perhaps external GPUs for distribution calculations, or are you saying you’ve optimized GPU code to run on the CPU?

I’ve taken some core integer math algorithms that GPU’s use to render certain shapes and adapted them to the creation of geometrical structures.

OK, a quick review from a few hours spent mining in survival mode:
Iron ore was pretty easy to find, not far from spawn a few outcrops on a scarp and plains led me to a vein with at least two stacks of ore. I found several more smaller lodes when mining for other materials.
Coal was a little rarer, but eventually I spotted a coal “reef” poking it’s head above ground on a beach, and gathered a stack or so. I found a rich redstone vein early on, more than I need.
It took much more wandering to find a kimberlite pipe, but it was pretty dramatic looking when I found it. Excavations gave me 15 diamonds and more than a chest full of andesite.
Later, I spotted outcrops of lapis and gold ore near each other on the surface, and I collected about 16 blocks of each without too much excavation.
I’ve also found a few bits of surface ore and rock apparently unconnected to major veins too.
No sign of emeralds so far, are they still restricted to the Extreme Hills biomes?

1 Like

The way you describe it reminds me that I need to go actual prospecting VERY SOON. I haven’t done it in so long it makes me sad :frowning:

Emeralds are supposed to be rarer than diamonds, even in 'nilla. Remember, in this mod Granite ~= Pegmatite. I have not restricted any ores to any biomes as of yet. If you really cannot find emeralds after much looking, It might be time to change the % distribution. You can do that in the Config file, although changes will only affect newly generated chunks (I’m working on pre-build world conversion atm). As for the blocks that don’t have parent veins, its possible the veins just barely brushed the surface enough for the supergene code to take effect, but didn’t continue under ground.

In general though, how do you feel about:

Server Performance:

  • Speed of generating new chunks
  • Speed of pre-population of world

Deposit Performance:

  • over-under abundance of ores
  • geometry of the deposits themselves
  • Surficial expression of deposits

Ore Particularities

  • Variation between deposits/ores
  • Accessibility of different ores
  • Features of the different ores

I should probably post this template somewhere in the main post now that i think about it.

I’ve generated a world with the seed “1” and have explored a bit with X-ray mod:
The first thing I noticed was these odd outcroppings, not sure if that’s intentional, to indicate vein endings or not.

Same position, with x-ray.

Here’s more outcroppings, breaking up the desert.

I found this what seemed to be abnormally long sausage of redstone.

Ooh, looks like there’s something important under here.

And underneath:

There seems to be a distinct lack of coal (I found a little bit, one place near the surface), instead these massive lapis areas seem to be everywhere:

I’d like to increase the density (but not amount) of gold in “clouds” and emerald in veins, will this break your algorithms, or is the main computing efficiency in how the shapes of the veins are determined?

Edit: changed coal density values and now there’s ridiculous amounts of it, will proceed to tweak the settings.

when do you think you’ll have the worldconverter plugin ready?

2 Likes

Well, unfortunately my mod isn’t designed to create anything other than geologic distributions; I’m not sure how to do clouds.

It definitely looks like I need to tweak the settings for the veins themselves, Yay alpha!! As for the coal deposits… I’m going to go ahead and pursue a different algorithm for placing coal/BIFS and hope that fixes things. Coal beds are tricky, tricky things.

I did ask the devs briefly how to modify the default world, and it seems like I can’t modify it on startup. It might be possible to convert the world later; I’ll have to do some testing.

For now my priorities are going to be: 1. implementing a new coal algo and 2. converting old worlds.

Edit: yeah the outcroppings are intentional. Not sure what to tweak about them though. What would you suggest?

By clouds I mean very sparsely populated veins, gold and emeralds were in clouds by default.

The conversion doesn’t have to happen before the server starts, it’s fine if it runs while the server is running, just so long as it’s possible to convert existing worlds.

I’d suggest to prevent the outcroppings reaching more than one block above the surface, random blocks of a different material in the surface is plenty to tell something is going on.

Mmk you’ve given me some ideas to think about. I’ll try to release a v-2 with at least two major extra features by the end of the week (if not sooner).

I have a further suggestion: can you make abandoned mines only spawn when they are touching/embedded ore added by your mod/plugin?
This would ease player difficulty in finding ore.

What is the ETA for your update?

  • Server Performance
    It populates chunks reasonably quickly, we didn’t notice any severe lag, but with less than 6 players.

  • Deposit Performance
    Lots of Iron. Probably too easy to find. In general, the surface outcrops (even if they have no ore in them) easily reveal where to start digging for most ore bodies. So either more red herrings or less ore bodies would be better, imho.

  • Ore Particularities
    The vast blandness of the Kimberlite pipes, matched with the low abundance of diamond within, seemed to be a bit of a negative. I did eventually find emerald ore elsewhere, near the surface, so it’s rarity seems to be about right. All in all, it seems reasonable if a bit over-abundant. (I haven’t messed with any config settings yet). I wish it had more stone types to play with :wink:

The main drawback is the huge file it saves, which is a bit of a problem when stopping the server. It also gets corrupted easily on a crash. Perhaps that file can be optimised to be a little less monolithic.

@FourFire

Abandoned mines… Hmm.

I did try and make my own abandoned mines at the surface in lieu of surface expressions back during bukkit. Unfortunately I think editing the default abandoned mines to only spawn where veins are might be impossible/extremely hard to do for a novice-medium coder.

I do plan to implement surface abandoned mines, but I gotta learn about schematics and world edit etc; It’ll be awhile.

@Inscrutable & @FourFire
The surface expressions I’ve added are meant to be clues to veins, and from the sound of things theres a lot of tweaking of the config file to be had. Config file tweaking is very time consuming; basically as it stands the vein data and world data must be deleted before trying a new world, then the world has to be played etc;.

I would absolutely LOVE to implement more rock types. Unfortunately I dont think the sponge API is set up for that (boo), or would require a clientside mod.

Kimberlite pipes are meant to be a shitshow: some are really really rich, but the probability weight is for them to be poor. I’m definitely open to ideas to make them more interesting though.

I’m somewhat close to releasing an update fairly soon, but my new job (yay! employment) is taking time away from coding (booo). I’ll keep you apprised.

Edit: I could also implement bland/empty veins. How does that sound?

1 Like