Additions:
Added gamerules upwardSpread and downwardSpread, allowing you to control how far up and down Sculk can spread!
Changes:
Gamerule spreadMultiplier can now be set as high as 20.
Implemented a few performance improvements into non-threaded Sculk Growths, so they should be slightly less laggy if you turn the gamerule off.
The Sculk block's texture is now randomly rotated like grass and stone to match Sculk as shown off in Minecraft Live.
The mod's in-game icon has been updated with a render using the Isometric Renders mod, check it out here:Â https://github.com/glisco03/isometric-renders
Literally just fixes a bug with Catalysts where they wouldn't have an animation/particles while sculkThreading was enabled - which is pretty much always.
What caused this bug?
I decided to essentially rework half of the multithreading code I'd written, and I eventually stopped Catalysts from creating the threads, and moved that functionality onto entities if they die withing an 8-block radius of Catalysts. This has no noticeable impact to the player, but for me, it was amazing. I finally didn't have to worry about random crashes and log spam from multiple Catalysts coincidentally trying to place veins/sculk on the same block, and the Sensor/Shrieker growth code could FINALLY work properly without having to guess when the Sculk would be placed. How it was implemented previously, it was entirely possible for no Sensors or Shriekers to grow if you have quite a low-end device. I used the .join(); method to tie the Sensor/Shrieker growth code in with the Sculk Growth code and to run it ONLY after all the Sculk had grown so it would work properly.
So, what caused the bug? Oh, yeah. While making the entities themselves call for the threads to run, I forgot to make them emit the Death GameEvent I added. I literally just had to copy and paste one line and I fixed the bug
Changes:
Stopped Sculk Sensor/Activator placement from loading unloaded chunks and causing HUGE lag spikes.
Improved multithreading for Sculk Sensor/Shrieker placement to now wait for Sculk to be placed in order for the correct amount to grow.
Sculk Sensors and Shriekers will now wait an entire tick before being able to activate once grown through a Catalyst. This should prevent situations where players instantly get the Darkness effect when a mob dies.
Sculk Vein placement should now perform better and not cause lag.
Removed the "divideCatalysts" gamerule, as it is now the default and greatly improves performance.
Multiple small optimizations have been made to help slightly boost performance with this mod in general.
Bug Fixes:
HUGE: Sculk Growths will no longer cause lag once you leave the spawn chunks of a server/world.
The number of threads being used will no longer double or reduce the amount of Sculk placed.
Fixed many bugs where Sculk Veins would cause log spam due to trying to change the BlockState of air.
Changes:
Stopped Sculk Sensor/Activator placement from loading unloaded chunks and causing HUGE lag spikes.
Improved multithreading for Sculk Sensor/Shrieker placement to now wait for Sculk to be placed in order for the correct amount to grow.
Sculk Sensors and Shriekers will now wait an entire tick before being able to activate once grown through a Catalyst. This should prevent situations where players instantly get the Darkness effect when a mob dies.
Sculk Vein placement should now perform better and not cause lag.
Removed the "divideCatalysts" gamerule, as it is now the default and greatly improves performance.
Multiple small optimizations have been made to help slightly boost performance with this mod in general.
Bug Fixes:
Sculk Growths will no longer cause lag once you leave the spawn chunks of a server/world.
The number of threads being used will no longer double or reduce the amount of Sculk placed.
Fixed many bugs where Sculk Veins would cause log spam due to trying to change the BlockState of air.
MULTITHREADING GAMERULES ADDED:
/gamerule sculkThreads: Allows you to adjust the available threads for Sculk Growths. If set to 21, every single Sculk Block that gets placed will use a separate thread, I do NOT recommend this if there is more than one Catalyst nearby.
/gamerule divideCatalysts: Instead of creating new threads for every single Catalyst, when this gamerule is enabled, ONLY the number of threads defined by sculkThreads will be used. Multiple catalysts won't influence the number of threads used. This is set to OFF by default, and I advice you to pay close attention to your performance with this gamerule on.
CHANGES: Corrected the chances of Shriekers and Sensors being placed while using multithreading once again.
Bug Fixes:
Fixed Sculk Sensors/Shriekers no longer spreading properly.
Changes:
Re-arranged thread sleep times to properly match up with Sculk Growths.
Previous Update's Changes:
Added new gamerule: sculkThreading, which is enabled by default.
-When this gamerule is enabled, Catalysts will spread Sculk using Multithreading. This saves a lot of processor power and helps a TON with performance, so I recommend you leave this gamerule enabled.
Bug Fixes:
Sculk Shriekers now properly search for players within an 8-block radius, and no longer check for players strictly above them and in a 10-block column.
Sculk Catalysts now always show the Sculk Soul particle, regardless if they were blooming whilst activated a second time.
Ender Dragons now properly emit the Death game event at their location rather than the Exit Portal's location. This also allows Sculk Spreading with the Ender Dragon to work in other dimensions.
Changes:
spreadMultiplier now applies to the Ender Dragon.
Sculk Growths can now spread 3 blocks upwards instead of just 2.
Sculk Sensors and Shriekers are now roughly 13% more likely to grow when a mob that drops 3XP dies.
Major improvements in code readability, import optimization, and hopefully game performance.
Removed a few methods for checking for valid Vein placement and merged them into the main Vein method.
Moved every instance of code that repeatedly runs under different circumstances into their own method:
-Sculk growths now use one method and are called with radius and loop values, instead of the code being run individually. This HEAVILY improves code readability and reliability in producing the same results consistently
-Sculk Vein placement also calls on one method to place Veins, also heavily improving code readability and reliability.
New gamerule: spreadMuliplier -Use /gamerule spreadMultipler (1-10) to increase the spread of sculk and Sensors/Shriekers!
BUG FIXES: Sculk Shriekers and Sculk Sensors can now grow if a Sculk Catalyst was not idle at the time of a mob's death. Catalysts will now properly spread Sculk when an Ender Dragon dies.
Changes: Sculk Catalysts now spread Sculk in a circular shape instead of square. This will allow Sculk Growths to look much more natural! The Ender Dragon now spreads Sculk in a 33-block radius, or 66-block diameter! Sculk Veins can no longer grow on top of End Portals, Bedrock, Dragon Eggs, Chorus Plants, or Chorus Fruit. The chance for a Sculk Shrieker or Sensor to grow has been tweaked.