feat: add global & server leveling, quests, achievements, guilds land-claiming, social & toggleable configs

This commit is contained in:
SCOPEDD committed 2026-09-29 03:24:27 -04:00
1 parent 4b79f69c20
commit b4cef85b1f
40 files changed
+10261 -27

No files matched your search

@@ -8,7 +8,19 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Properties;
public record Settings(URI panel, String token) {
public record Settings(
URI panel,
String token,
boolean levelingEnabled,
double globalXpMultiplier,
double serverXpMultiplier,
boolean questsEnabled,
boolean achievementsEnabled,
boolean guildsEnabled,
boolean landClaimingEnabled,
boolean socialEnabled,
boolean chatPrefixesEnabled
) {
public Settings {
if (panel == null || panel.getHost() == null || panel.getRawUserInfo() != null
|| panel.getRawQuery() != null || panel.getRawFragment() != null
@@ -21,19 +33,79 @@ public record Settings(URI panel, String token) {
}
}
public Settings(URI panel, String token) {
this(panel, token, true, 1.0, 1.5, true, true, true, true, true, true);
}
public static Settings of(String panel, String token) {
return new Settings(URI.create(panel.trim().replaceAll("/+$", "")), token);
return of(panel, token, true, 1.0, 1.5, true, true, true, true, true, true);
}
public static Settings of(
String panel,
String token,
boolean levelingEnabled,
double globalXpMultiplier,
double serverXpMultiplier,
boolean questsEnabled,
boolean achievementsEnabled,
boolean guildsEnabled,
boolean landClaimingEnabled,
boolean socialEnabled,
boolean chatPrefixesEnabled
) {
return new Settings(
URI.create(panel.trim().replaceAll("/+$", "")),
token,
levelingEnabled,
globalXpMultiplier,
serverXpMultiplier,
questsEnabled,
achievementsEnabled,
guildsEnabled,
landClaimingEnabled,
socialEnabled,
chatPrefixesEnabled
);
}
public static Settings load(Path path) throws IOException {
if (!Files.exists(path)) {
Files.createDirectories(path.toAbsolutePath().getParent());
Files.writeString(path, "# SCOPENET server integration\npanel-url=https://panel.example.com\ntoken=\n", StandardCharsets.UTF_8);
String defaultProps = """
# SCOPENET server integration
panel-url=https://panel.example.com
token=
# Feature Toggles (set false to disable systems on this server)
leveling.enabled=true
leveling.global_xp_multiplier=1.0
leveling.server_xp_multiplier=1.5
quests.enabled=true
achievements.enabled=true
guilds.enabled=true
guilds.land_claiming=true
social.enabled=true
social.chat_prefixes=true
""";
Files.writeString(path, defaultProps, StandardCharsets.UTF_8);
}
Properties properties = new Properties();
try (Reader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8)) {
properties.load(reader);
}
return of(properties.getProperty("panel-url", ""), properties.getProperty("token", ""));
return of(
properties.getProperty("panel-url", ""),
properties.getProperty("token", ""),
Boolean.parseBoolean(properties.getProperty("leveling.enabled", "true")),
Double.parseDouble(properties.getProperty("leveling.global_xp_multiplier", "1.0")),
Double.parseDouble(properties.getProperty("leveling.server_xp_multiplier", "1.5")),
Boolean.parseBoolean(properties.getProperty("quests.enabled", "true")),
Boolean.parseBoolean(properties.getProperty("achievements.enabled", "true")),
Boolean.parseBoolean(properties.getProperty("guilds.enabled", "true")),
Boolean.parseBoolean(properties.getProperty("guilds.land_claiming", "true")),
Boolean.parseBoolean(properties.getProperty("social.enabled", "true")),
Boolean.parseBoolean(properties.getProperty("social.chat_prefixes", "true"))
);
}
}