33import com .mojang .logging .LogUtils ;
44import me .mrhua269 .chlorophyll .utils .bridges .ITaskSchedulingLevel ;
55import me .mrhua269 .chlorophyll .utils .TickThread ;
6+ import me .shedaniel .autoconfig .AutoConfig ;
7+ import me .shedaniel .autoconfig .serializer .Toml4jConfigSerializer ;
68import net .fabricmc .api .ModInitializer ;
79import net .minecraft .server .MinecraftServer ;
810import net .minecraft .server .level .ServerLevel ;
@@ -17,15 +19,16 @@ public class Chlorophyll implements ModInitializer {
1719 public static final Logger logger = LogUtils .getLogger ();
1820
1921 private static final AtomicInteger threadIdGenerator = new AtomicInteger ();
20- public static final ScheduledThreadPoolExecutor workerPool = new ScheduledThreadPoolExecutor (Runtime .getRuntime ().availableProcessors (), task -> {
21- final Thread wrapped = new TickThread (task , "Chlorophyll World Scheduler Thread - " + threadIdGenerator .getAndIncrement (), true );
22- wrapped .setPriority (8 );
23- wrapped .setContextClassLoader (MinecraftServer .class .getClassLoader ());
24- return wrapped ;
25- });
22+ public static ScheduledThreadPoolExecutor workerPool ;
23+
24+ private static ChlorophyllConfig chlorophyllConfig ;
2625
2726 public static MinecraftServer server ;
2827
28+ public static ChlorophyllConfig getConfig () {
29+ return chlorophyllConfig ;
30+ }
31+
2932 public static void killAllAndAwait (){
3033 for (ServerLevel level : server .getAllLevels ()){
3134 logger .info ("Kill signalled to level {}" , level .dimension ().location ());
@@ -49,8 +52,22 @@ public static void killAllAndAwait(){
4952 }
5053 }
5154
55+ private static void initExecutor () {
56+ logger .info ("Using {} threads for server level ticking." , chlorophyllConfig .worker_thread_count );
57+
58+ workerPool = new ScheduledThreadPoolExecutor (chlorophyllConfig .worker_thread_count , task -> {
59+ final Thread wrapped = new TickThread (task , "Chlorophyll World Scheduler Thread - " + threadIdGenerator .getAndIncrement (), true );
60+ wrapped .setPriority (8 );
61+ wrapped .setContextClassLoader (MinecraftServer .class .getClassLoader ());
62+ return wrapped ;
63+ });
64+ }
65+
5266 @ Override
5367 public void onInitialize () {
54- logger .info ("Using {} threads for server level ticking." , workerPool .getCorePoolSize ());
68+ AutoConfig .register (ChlorophyllConfig .class , Toml4jConfigSerializer ::new );
69+
70+ chlorophyllConfig = AutoConfig .getConfigHolder (ChlorophyllConfig .class ).getConfig ();
71+ initExecutor ();
5572 }
5673}
0 commit comments