[WIP] GeoWorld (formerly OreVeins) Master Thread

Oh, sorry, I wasn’t clear. While it’s entirely possible to access mod-added blocks through GameRegistry#getType, a Sponge plugin cannot define any new blocks itself.

@Aaron1011 Ok so a few things come to mind. I’ll try and interpret what my brain is spitting out.

  1. (Warning! general java/implementation question) Suppose I have two double values a function of mine spits out for every block location. I determine ahead of time that a certain block should be put into a location with specific ranges of these values. What would be a relatively clean way to implement this? ( I’ve got some ideas, but they don’t make use of the Data API and seem really messy).

  2. Is it possible to effectively (from the user’s perspective) have a stone block that occasionally drops certain items using just sponge? Say via a method from #1, I decide I want this stone block to drop a gold nugget plus cobblestone with a 1:10 chance, is this possible with the data API?

  3. So to clarify, I can define entirely different blocks, but I’ll have to jump up to how Forge deals with blocks n such to do so. (also potentially opening a way for a clientside mod).

I’m not really sure what you mean by that. Do the doubles specify the min/max coordinates of the block?[quote=“El_Minadero, post:42, topic:11168”]
Is it possible to effectively (from the user’s perspective) have a stone block that occasionally drops certain items using just sponge?
[/quote]

I assume you mean when the block is broken. The easiest way to do that would be to add a ChangeBlockEvent.Break listener using Order#POST, and spawn in Items as needed.[quote=“El_Minadero, post:42, topic:11168”]
So to clarify, I can define entirely different blocks, but I’ll have to jump up to how Forge deals with blocks n such to do so. (also potentially opening a way for a clientside mod).
[/quote]

You’ll need a forge client-side mod to create any new blocks.

I’m not really sure what you mean by that. Do the doubles specify the min/max coordinates of the block?

Hm, I suppose I did not word that properly.

Imagine I have a function which produces two values for every coordinate triple

X = [x,y,z]

F(X) => (h,m).
where h and m are doubles that vary between 0.0 & 1.0

I also have a list of geology things I would like tied to specific (h,m) ranges ex:

Granite when 0.8<h<1.0 && 0.7<m<1.0
Diorite when 0.5<h<0.8 && 0.3<m<0.7
Ore_X when …

The overall populator then has the form of:

mutableBlockVolume.set( X , G(F(X)) )

where:
X = [x,y,z]
F(X) = some geology-based model
G(h,m) = “Geologic stuff to Sponge API bridge”

The issue I’m grappling with is the best way to go about writing G, given it has to spit out a BlockState.

I assume you mean when the block is broken. The easiest way to do that would be to add a ChangeBlockEvent.Break listener using Order#POST, and spawn in Items as needed.

The way I craft G(h,m) will ‘probably’ be done with an eye towards this^, Although I don’t know if I can attach extra data to blocks so that this data persists after server shutdown, and can be easily caught with the #Break listener.

As for the Forge thing, I suppose that confirmed my suspicions. Not a worst-case scenario though!

Cant attach custom data to blocks, just to tiles. As for the block-break event, he means if blockbreak=stone then use random-number generator do determine if its the 90% case = cobblestone or 10% case = cobbleston+nugget, and change the drop.

So to have this drop happen at a particular location (inside a vein structure I predetermine), It seems like I would have to:

  1. Register the desired location with a hashSet or similar
  2. With the @listener, check to see if the ChangeBlockEvent.Break’s location is in the Set,
  3. Do whatever I want to do with my event.

And to persist, I’d probably have to explicitly handle the load/save of the block location sets.

Sound about right?

That sounds correct.

JESUS mio!

Well I suppose if it was easy it would’ve been done already.

I don’t suppose we could get an updated binary build soon? Preferably one that works with Minecraft 1.11? Right now even the link to the old binary version is broken.

Yeah i know :S. Sorry about that, life an all has really slowed down my dev. I am still working on it though. Here’s a little ray of hope, Igneous Intrusion maps:

4 Likes

I’m glad to hear it’s still being developed. I wonder if it can be made to work with other Terrain Generators? (e.g. we’ve been playing with Realistic Terrain Generator on the SCS, as shown at SOS XIII). Realistic overground and underground makes a happy womble player. Don’t melt your synapses trying though, I have no idea how difficult that would be.

Anytime you have something we can test on the Sponge Community Server, we’ll give it a try. :slight_smile:

1 Like

I empathize, and my post should definitely not be taken as “geez, what’s wrong with this guy”. Just a “hey, there’s at least one person still interested.”

Anyway, more stuff is definitely neat. I don’t have the geology background to fully understand everything you’re doing, but I like the more real world distribution in principle, and how it changes the gameplay to encourage exploration and the creation of mining outposts.

Keep up the good work!

1 Like

Hey there! I’m finally having a bit of time to work on this. The last three months were spent thinking about and implementing a metamorphic rock change model. This was really hard to do, but I think you’ll like the result:

6 Likes

I’ve been looking for something like this for a long time, and Im hoping its not dead. Do you know of any servers with this as a plugin yet?

Biggest thought comment (havent messed with it yet in game)
-Im hoping that it acts more realistic in the nature of creating areas that rarity in the ores. AKA I cant find diamonds any where, though when I do I find a dense zone.

The reason I hope it is like that is so it can help create are more life like economy. If I have a coal mine I can mine thousand of coal resources from it and sell it, but I may be the only one or the only found one in 1000 blocks.

1 Like

I’m glad there’s still interest!

Heres the update on progress:

  • I finally learned how to do Unit testing, design patterns, clean code etc; as applied to java, So naturally I completely ripped apart my libraries and have been rewriting them from the ground up. I’m about 90% done with the core library of the project, but there’s still a few things left to implement.
  • One big challenge is designing a new algorithm to create veins. As it turns out, I can find no mention of ‘natural-looking’ fracture and fault filling veins in any of the procedural forums. I’ve tried using things like voronoi diagrams and perlin noise, but this is still a hairy problem to tackle. I’ve got a few ideas up my sleeve, but I still welcome input.
  • Another big challenge is in turning what I think of as real ‘rock and mineralization parameters’ coming from my plugin into minecraft rocks. Again, I have some ideas on how to do this, but it is still an evolving idea.
  • But perhaps the single greatest challenge of all is the fact I’m still a team of one. I know many people would be more than willing to test and refine default config parameters once its up and running in a game, but I’m still the sole developer in charge of unit testing, architecting, and implementing everything. Don’t worry! I’m passionate about this project and will continue to work regularly on it, but it can be interesting balancing out our hobbies with things like gradschool.

Keep bugging me! sometimes projects will fall to the wayside, and its up to fans like you to keep reminding me of interest :slight_smile:

4 Likes

Is this generator still in the works? I’m super interested.
By interested I mean I have a few dollars I keep throwing at the screen.

2 Likes

hahah. Well donations are always appreciated! I’m a new phd student and I’ve had some other things occupy my time for now. I’ll put this out there and say any donations to the cause I’ll probably put to flagging down a few devs on the site willing to put in some keyboard time ;). But i’m still working on it! I promise!