feat: add global & server leveling, quests, achievements, guilds land-claiming, social & toggleable configs
This commit is contained in:
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"))
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user