MovingBlocks / Terasology

Terasology - open source voxel world
http://terasology.org
Apache License 2.0
3.69k stars 1.34k forks source link

Final block family tweaks needed before v2.0.0 release #3374

Closed Cervator closed 6 years ago

Cervator commented 6 years ago

Follow-up to #3343 to cover just the remaining problems to resolve before we can release v2.0.0, making this issue a Blocker, yay!

The more we can get fixed the better! Will roll what we can into an Alpha 10 / v2 Release Candidate for the play test in a week.

Maybe we can get some more help from @pollend @PS-Soundwave @Steampunkery @anuar2k @NicholasBatesNZ ... who else? :-)

Oh! And all that didn't cover what was actually fixed, but could use more testing! The following modules were affected (in addition to the above):

pollend commented 6 years ago

For Rails I need to check diagnol block but the : https://github.com/MovingBlocks/Terasology/blob/develop/engine/src/main/java/org/terasology/world/block/entity/neighbourUpdate/NeighbourBlockFamilyUpdateSystem.java

only checks in the 4 cardinal directions. What could be done to extend this. I was thinking of either adding more to: https://github.com/MovingBlocks/Terasology/blob/develop/engine/src/main/java/org/terasology/world/block/family/UpdatesWithNeighboursFamily.java or just having the NeighbourBlockFamilyUpdateSystem check all directions in the 3x3 area around a given block.

PS-Soundwave commented 6 years ago

Changing current functionality could both cause unforeseen bugs and performance issues, I think its most appropriate to create a custom extended system.

pollend commented 6 years ago

what do you suggest. Do you want me to remove the implementation of UpdatesWithNeighboursFamily from multi-connect and let people implement it from there.

PS-Soundwave commented 6 years ago

A more general or abstracted implementation could be appropriate, but I was just thinking a separate implementation for rails with the expanded checking.

pollend commented 6 years ago

I'm not sure what you mean specifically. I see a couple options I could go from here. I could add an additional getter function that denotes which blocks to update or just remove the implementation from multi-connect. The implementation could also be denoted in block.java. Something that also occurred to me is implement this as a component.

The main problem is that block updates don't at the moment work diagonally. I can't really see a problem with having them work that way. Might just be better update all the blocks in a 3x3 area around a given block in NeighbourBlockFamilyUpdateSystem.

Cervator commented 6 years ago

Removing Blocker from this issue as a pile of fixes have been done. special thanks to @pollend and @Josharias for most of them! :-)

The short-term fix for Rails is in place, then we can start another iteration on block family overhaul after Alpha 10 is merged to master shortly

Closing this as mostly done, splitting out / moving the remaining issues