Skip to content

Commit e85a317

Browse files
committed
Added config file
1 parent 4d3ed79 commit e85a317

5 files changed

Lines changed: 39 additions & 11 deletions

File tree

build.gradle

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ base {
1212

1313
repositories {
1414
maven { url = "https://api.modrinth.com/maven" }
15+
maven { url "https://maven.shedaniel.me/" }
16+
maven { url "https://maven.terraformersmc.com/releases/" }
1517
}
1618

1719
dependencies {
@@ -20,7 +22,10 @@ dependencies {
2022
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
2123

2224
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
23-
modImplementation "maven.modrinth:moonrise-opt:a8Zqa1bJ"
25+
modImplementation "maven.modrinth:moonrise-opt:J5ayzvZp"
26+
modApi("me.shedaniel.cloth:cloth-config-fabric:17.0.144") {
27+
exclude(group: "net.fabricmc.fabric-api")
28+
}
2429
}
2530

2631
loom {

src/main/java/me/mrhua269/chlorophyll/Chlorophyll.java

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import com.mojang.logging.LogUtils;
44
import me.mrhua269.chlorophyll.utils.bridges.ITaskSchedulingLevel;
55
import me.mrhua269.chlorophyll.utils.TickThread;
6+
import me.shedaniel.autoconfig.AutoConfig;
7+
import me.shedaniel.autoconfig.serializer.Toml4jConfigSerializer;
68
import net.fabricmc.api.ModInitializer;
79
import net.minecraft.server.MinecraftServer;
810
import 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
}
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
package me.mrhua269.chlorophyll;
22

3-
public class ChlorophyllConfig {
3+
import me.shedaniel.autoconfig.ConfigData;
4+
import me.shedaniel.autoconfig.annotation.Config;
5+
6+
@Config(name = "chlorophyll")
7+
public class ChlorophyllConfig implements ConfigData {
8+
public int worker_thread_count = Runtime.getRuntime().availableProcessors();
49
}

src/main/java/me/mrhua269/chlorophyll/mixins/MinecraftServerMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public void onTickChildren(MinecraftServer minecraftServer, BooleanSupplier bool
5050
Chlorophyll.server = (MinecraftServer) (Object)this;
5151
this.shouldPollChunkTask = false;
5252

53-
// Active the tick loops
53+
// Try activating the tick loops
5454
for (ServerLevel level : this.getAllLevels()){
5555
((ITaskSchedulingLevel) level).chlorophyll$setupTickLoop();
5656
}

src/main/resources/fabric.mod.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"fabricloader": ">=${loader_version}",
2828
"fabric": "*",
2929
"minecraft": "${minecraft_version}",
30-
"moonrise": "*"
30+
"moonrise": "*",
31+
"cloth-config": "*"
3132
}
3233
}

0 commit comments

Comments
 (0)