Haggle1996 / RevolutionPack

Revolution Pack for Minecraft 1.7.10
16 stars 17 forks source link

Pregen world prevents sluice from working #462

Closed Nagapito closed 8 years ago

Nagapito commented 8 years ago

Pregenarating the world, at least with the PregenSpawn command does not generate the HardOre slice data for the chunk and the sluice will think there are no more ores available on the chunk and produce nothing.

My pregenerated world has the HardOreData generated for the chunks around spawn that were generated normally. The chunks that were pegenerated have no HardOreData, even with ores in it.

Time to start a new world...

Nagapito commented 8 years ago

Since sometimes the generation fails to run for some strange reason, I tried opening and closing the same world until it fired. After like 6-7 (lost count), still nothing!

I also notice that every time I loaded the world, I had less and less free memory, last time was 40 Mb and game froze (Started with 1Gb free after finishing loading a world). I think this might be related with the qeue being loaded with all the chunks but on world stop, its not cleared.

Also, the key you use for the queue might be a bad key. You should use something like a value type. An object, will always be different every time you create a new one, unless the equals method is correctly implemented and the HashMap actually uses it. If not, two objects will never be equal. A string like worldID+x + ";" + Z is going to be unique for the same chunk and will properly do his work.

Maybe that is what is causing memory going up. It kept adding the chunk when it already is in the queue

Haggle1996 commented 8 years ago

Odd, because dimension 1 is in my blacklist.

Nagapito commented 8 years ago

I am struggling reading the documentation for the Array.binarySearch() but... should you be checking for a value greater then 0 instead of lower?

Isn't a negative number when the item is not found? So, if not found, its not on the blacklist and should be processed?

Edit: And that would be why it is ignoring all Overworld and processing the blacklisted dimensions like it happened to Haggle?

Draco18s commented 8 years ago

Yeah, that's what quirked my eyebrow. And @Nagapito that's the derp I just fixed :D I copy-pasted the check to a buncha places, and forgot to flip the comparison on the one method.

https://dl.dropboxusercontent.com/u/7950499/1.7.10-HarderOres-14.25.2e.jar

Draco18s commented 8 years ago

Re objects as keys: I correctly implement Equals and HashCode. :)

Nagapito commented 8 years ago

[25/6/2016 23:06:12 PM] [Server thread/INFO] [HarderOres]: World ID #0 ticking for rescan (-1)

And you still have the binaryCheck doing the wrong comparation in the doRescan

EDIT: Ohhh, and on the readData too!!!! And all the other places. That or my decompiler sucks :)

Draco18s commented 8 years ago

Oh ha. I had it wrong in two places. Thanks. I am apparently not all here today -..- https://dl.dropboxusercontent.com/u/7950499/1.7.10-HarderOres-14.25.2f.jar

Nagapito commented 8 years ago

Are you sure?

For example, readData. If the dimension is not one of blacklisted, it just exists. Same for all other uses with binarySearch? (getOreData, subOreData, clearData, cleanup,...

I will test this new version, but just seeing the code, I dont have high hopes

Edit: Also, chunkGen() in OresEventHandler

Edit 2: Confirmed, still not working

Draco18s commented 8 years ago

Grumble, grumble. I even double checked my math. Grumble grumble. Stupid brain being stupid again. That's why I like "contains"! https://dl.dropboxusercontent.com/u/7950499/1.7.10-HarderOres-14.25.2g.jar

Nagapito commented 8 years ago

Not that important but you still missed the check on chunkGen function. Not world breaking since it will re-generate later...

Still loading the pack...

Draco18s commented 8 years ago

D'oh, thanks for the catch.

Nagapito commented 8 years ago

It.... seems... to... be.... WORKING!!

Also another small but, doRescan function, whe you output the number of chunks to rescan, you output the toRescan queue size instead of the size of the actual queue for the dimension! So, it keeps saying '1 chunk remain'.

had to wait for the other message that reports the queue size for each dimensions to see the real value, 473.

going to let it run for a while to see if the number actually decreases or stops, since the previous versions, it kept growing and never stopped

Nagapito commented 8 years ago

MC world loading and saving is very very annoying, since it seems to not be synchronous....

I generated a new world, so I could have a clear readout of what was happening. And this is with the wrong check on chunkGen, so... no chunks got generated with the information!

And, it worked!!! it took some time, for some chunks the information is generated multiple times since MC just doesnt wait for you but eventually it got saved!!

So, I would say you just need to fix the check on world gen, fix the log message with the number of remaining chunks and maybe, tone down the logging spam.

I think the message that runs every few minutes telling how many chunks need to be calculated is nice for admins, but should only show the dimensions that actually have something to calculate and ignore blacklisted ones or ones with an empty queue. This message, with only a summary of what is doing by dimension every minute should be better info and less spam

Draco18s commented 8 years ago

The debug info is just debug info. I'll be removing most of it for release.

Haggle1996 commented 8 years ago

@Draco18s, did this get packaged up?

Draco18s commented 8 years ago

Thanks for the ping; life occurred.

Nagapito commented 8 years ago

By the way, Dimension blacklist is awesome!!

I dont need the information anymore, since I long pass the need for sluice and bonemeal and the constant data generation of those pesky border chunks was annoying me! Not that it was killing the server but... why use 20% of my CPU on something that I dont need?

So, I blacklisted the Overworld too. Server is now at 2-3% CPU when idle :)

It might even be a good tip for server admins...

Haggle1996 commented 8 years ago

If I had my druthers, I'd rather it have been a dimension whitelist, prefilled with only the overworld, but I'm okay adding all known dimensions in my pack to the blacklist (it's already done -- waiting on the fix).

The issue, I imagine, will be with dynamically-created dimensions -- think Mystcraft or RFTools, also GalactiCraft's space stations. Which would mean Draco18s would need to add a isBlacklistWhite=false, so that the behavior of the list could be flipped between black and white, depending on the whims of the pack author.

But I'm happy to get what I'm getting. Maybe he'll add something like that in the future, but 1.7.10 is on it's last legs, and Draco18s and I both have only a limited amount of time to dedicate to our hobby. :)

Draco18s commented 8 years ago

The reason for the Blacklist is for dimensions like Mystcraft Ages or RF whatever-its-called. Those are as arbitrary as you can get and I'd rather catch those on the fly than have to have them added to a white list.

Haggle1996 commented 8 years ago

I think we're saying the same thing. :D

Regardless, thank you for all your hard work. I and my players greatly appreciate it.

Draco18s commented 8 years ago

sure thing!

Haggle1996 commented 8 years ago

@Draco18s notice anything wrong with this picture: image

:)

Draco18s commented 8 years ago

D'oh. Fixing now.

Wildlife and Underground got reversed. Should be visible correctly in a few minutes. Thanks for catching it before I went on vacation (I will be out of town until Tuesday).

Haggle1996 commented 8 years ago

Thank you both for testing this!

Haggle1996 commented 8 years ago

@Draco18s

Is there a way to remove this: image

Haggle1996 commented 8 years ago

BTW, all of these worlds are in the blacklist, except for 0

Nagapito commented 8 years ago

You sure all of them are on the blacklist?

Blacklisted ones should say -2 in the amount of ores to rescan... -1 is when there isnt even a queue with chunks to rescan and 0 or higher is the size of the queue when it exists.

And I see a couple of -1's... Unless that is what you are trying to say...

Haggle1996 commented 8 years ago

I think I'm saying 'I don't want these messages spamming the console constantly when I release this'...I really don't want it while I'm working on other things, as what I need to see scrolls out of the debug window after a few seconds. :)

Draco18s commented 8 years ago

Oh, that's what I forgot to do! Remember I said I was going to remove a lot of debug info? Yeah. Unfortunately this will have to wait until next week. Sorry!

Nagapito commented 8 years ago

Tip for the future, instead of logging them as INFO, log them as DEBUG and ask who is helping you to test the mod to lower the log level, since all launchers/clients only show INFO and above levels.

This way, you dont have to do 'log cleanups' on your code and if something weird happens in the future, you can always ask the bug reporter to lower the log level and you will have the extra information without needing a new version.

Draco18s commented 8 years ago

I'll try to do that, although I recall doing that once and the person who was helping test couldn't see them. On Jul 1, 2016 4:42 AM, "Nagapito" notifications@github.com wrote:

Tip for the future, instead of logging them as INFO, log them as DEBUG and ask who is helping you to test the mod to lower the log level, since all launchers/clients only show INFO and above levels.

This way, you dont have to do 'log cleanups' on your code and if something weird happens in the future, you can always ask the bug reporter to lower the log level and you will have the extra information without needing a new version.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Haggle1996/RevolutionPack/issues/462#issuecomment-229891108, or mute the thread https://github.com/notifications/unsubscribe/ABq2mDTrtyXZgWz5srQ9-JGAb-_Blri2ks5qRNMJgaJpZM4I34v2 .

Nagapito commented 8 years ago

I think they need to pass a parameter on the java console to lower the log level on Log4. By default its at INFO and on development ambient is at the lower setting, so you could see them.

Draco18s commented 8 years ago

Yeah, I tried to explain that and didn't have any luck. On Jul 1, 2016 10:26 AM, "Nagapito" notifications@github.com wrote:

I think they need to pass a parameter on the java console to lower the log level on Log4. By default its at INFO and on development ambient is at the lower setting, so you could see them.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Haggle1996/RevolutionPack/issues/462#issuecomment-229960802, or mute the thread https://github.com/notifications/unsubscribe/ABq2mLZcu8kJYCroL197BVL7Wbg3hU1_ks5qRSOIgaJpZM4I34v2 .