DuelMonster / SuperMiner

SuperMiner - Making mining easier...
GNU General Public License v3.0
3 stars 0 forks source link

[MC 1.12] Crash when mining iron ore vein #34

Open Knito58 opened 7 years ago

Knito58 commented 7 years ago

What should have happened

Iron ore vein mined

What actually happened

Game crashed

What steps do we have to follow so we can reproduce the issue

Dunno. Happens randomly. Mine alot of veines. Happened a few times now, approx 1x / (real) day.

Version of SuperMiner

2.5.33.325

Pastebin of relevant log files (fml-latest-client.log, fml-latest-server.log, latest.log)

https://www.dropbox.com/s/bdph59ysb6juksn/crash-2017-07-28_18.33.13-server.txt?dl=1

DuelMonster commented 7 years ago

Thank you for the crash report.

I am currently working on a full rewrite of my mod in order to rectify this crash. I've run out of ideas on how to solve this issue and believe that a rewrite is my only remaining option.

So please bare with me. It may take me a few weeks to complete.

Knito58 commented 7 years ago

Thanks for caring. I have a little idea about the randomly occuring crashes. There's always a "java.util.ConcurrentModificationException" within. But this does not seem to come from your mod. It seems to be a minecraft routine which wants to do something but is disturbed. As it seems to me, when an ore vein is mined, there happen a lot of things in one tick. Maybe MC misses some update events? What about stretching the veinator or shaftanator or even cropinator effects over more than one tick and give it some time. Maybe one block per tick. You send out an invisible entity which touches all relevant blocks on its way - one after the other and let minecraft know what it did. All in all then the "x-nating" tasks would last some ticks longer. But we would see what it does - and MC, too. Maybe that would be more stable - and more entertaining as you could spice up the superfast entity with some colored particles. What are your thoughts about this?

DuelMonster commented 7 years ago

Thank you for your insight. I have tried adding error traps to capture the Concurrent Modification exceptions and limiting the number of blocks that get processed per-tick, but there is still something I'm doing that MC just can't keep up with. I'm just at a loss as to what it is. I've rewrote and rewrote so much of it that it has become so much more complicated than it needs to be.

SuperMiner is the first mod I've made and is also the first bit of java development I've ever done. I've learnt a lot and can see better ways of doing things now. So rather than patching a leaking bucket, it's time to craft a new one.

I really like the idea of the invisible entity / particle effect. I'm going to add that to my feature list.

If you have any more ideas, do let me know, they are always welcome! ;)

Knito58 commented 7 years ago

SuperMiner is great. I know it crashes sometimes but its worth it. Making it more stable would make it even more awesome.

If you've got a stable sm-entity class then the different tasks for it in the SM-parts are the path, the task (deleting block, tilling etc), the speed, the max TTL and the type of particles. When the entity does the update-event for MC then you'll never have to think about this again in any of the sub mods.. You could limit the number of entities a player has running at a time to just one. So the tool behaves as normal or gives a creaking sound when trying to repeat the action while it is still on its way. This would simplify all of the submods to a hand full of code.

From time to time I have a little idea, too. I'll let you know if I think one of those fits into the SuperMiner concept.

Thank you very much for your work.

Knito58 commented 7 years ago

Just a little idea: The TTL (time to live) would be linked to the tool's material. A wooden pickaxe would do less blocks than an emerald one. Then a stone pickaxe could not be used up in only two tasks.