Skip to content

Commit 7f405f8

Browse files
committed
Add Fabric configuration classes and update build.gradle.kts
1 parent af4e259 commit 7f405f8

File tree

4 files changed

+143
-0
lines changed

4 files changed

+143
-0
lines changed

fabric/build.gradle.kts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,21 @@ fabricApi {
2323
}
2424
}
2525

26+
repositories {
27+
mavenCentral()
28+
maven { url = uri("https://jitpack.io") }
29+
}
30+
2631
dependencies {
2732
minecraft("com.mojang:minecraft:1.21.5")
2833
mappings("net.fabricmc:yarn:1.21.5+build.1:v2")
2934
modImplementation("net.fabricmc:fabric-loader:0.16.10")
3035

3136
modImplementation("net.fabricmc.fabric-api:fabric-api:0.119.5+1.21.5")
37+
38+
implementation(project(":api"))
39+
implementation(project(":common"))
40+
implementation("com.github.Carleslc.Simple-YAML:Simple-Yaml:1.8.4")
3241
}
3342

3443
tasks.processResources {
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package it.renvins.serverpulse.fabric.config;
2+
3+
import java.io.File;
4+
import java.io.IOException;
5+
import java.io.InputStream;
6+
import java.nio.file.Files;
7+
import java.nio.file.Path;
8+
import java.util.logging.Level;
9+
10+
import it.renvins.serverpulse.fabric.ServerPulseFabric;
11+
import lombok.Getter;
12+
import org.simpleyaml.configuration.file.YamlFile;
13+
14+
public class FabricConfiguration {
15+
16+
private final String name;
17+
18+
@Getter private final YamlFile config;
19+
20+
public FabricConfiguration(Path dataDir, String name) {
21+
this.name = name;
22+
23+
try {
24+
Files.createDirectories(dataDir);
25+
} catch (IOException e) {
26+
ServerPulseFabric.LOGGER.log(Level.SEVERE,"Failed to create data directory: " + dataDir, e);
27+
}
28+
this.config = new YamlFile(new File(dataDir.toFile(), name));
29+
}
30+
31+
public boolean load() {
32+
try {
33+
if (!config.exists()) {
34+
if (copyDefaultsFromResource()) {
35+
ServerPulseFabric.LOGGER.info("Created configuration file: " + name);
36+
} else {
37+
config.createNewFile();
38+
ServerPulseFabric.LOGGER.info("Configuration file not found, created a new one: " + name);
39+
}
40+
} else {
41+
ServerPulseFabric.LOGGER.info("Loading configuration file: " + name);
42+
}
43+
config.load();
44+
return true;
45+
} catch (Exception e) {
46+
ServerPulseFabric.LOGGER.log(Level.SEVERE,"Failed to load configuration file: " + name, e);
47+
return false;
48+
}
49+
}
50+
51+
private boolean copyDefaultsFromResource() {
52+
try (InputStream in = getClass().getClassLoader().getResourceAsStream(name)) {
53+
if (in != null) {
54+
Files.copy(in, config.getConfigurationFile().toPath());
55+
return true;
56+
} else {
57+
return false;
58+
}
59+
} catch (IOException e) {
60+
ServerPulseFabric.LOGGER.log(Level.SEVERE,"Failed to copy default configuration file: " + name, e);
61+
return false;
62+
}
63+
}
64+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package it.renvins.serverpulse.fabric.config;
2+
3+
import it.renvins.serverpulse.common.config.DatabaseConfiguration;
4+
import lombok.RequiredArgsConstructor;
5+
6+
@RequiredArgsConstructor
7+
public class FabricDatabaseConfiguration implements DatabaseConfiguration {
8+
9+
private final FabricConfiguration configuration;
10+
11+
@Override
12+
public String getHost() {
13+
return configuration.getConfig().getString("metrics.influxdb.url");
14+
}
15+
16+
@Override
17+
public String getOrg() {
18+
return configuration.getConfig().getString("metrics.influxdb.org");
19+
}
20+
21+
@Override
22+
public String getToken() {
23+
return configuration.getConfig().getString("metrics.influxdb.token");
24+
}
25+
26+
@Override
27+
public String getBucket() {
28+
return configuration.getConfig().getString("metrics.influxdb.bucket");
29+
}
30+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package it.renvins.serverpulse.fabric.config;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
import it.renvins.serverpulse.common.config.MetricsConfiguration;
7+
import lombok.RequiredArgsConstructor;
8+
9+
@RequiredArgsConstructor
10+
public class FabricMetricsConfiguration implements MetricsConfiguration {
11+
12+
private final FabricConfiguration configuration;
13+
14+
@Override
15+
public String getServerTag() {
16+
return configuration.getConfig().getString("metrics.tags.server");
17+
}
18+
19+
@Override
20+
public String getMeasurementTable() {
21+
return configuration.getConfig().getString("metrics.influxdb.table");
22+
}
23+
24+
@Override
25+
public long getMetricsInterval() {
26+
return configuration.getConfig().getLong("metrics.interval");
27+
}
28+
29+
@Override
30+
public Map<String, String> getTags() {
31+
Map<String, Object> tags = configuration.getConfig().getConfigurationSection("metrics.tags").getValues(false);
32+
Map<String, String> stringTags = new HashMap<>();
33+
tags.forEach((key, value) -> {
34+
if (value instanceof String && !key.equalsIgnoreCase("server") && !key.equalsIgnoreCase("world")) {
35+
stringTags.put(key, (String) value);
36+
}
37+
});
38+
return stringTags;
39+
}
40+
}

0 commit comments

Comments
 (0)