Added biome-key-format configuration option to config.yml

This commit is contained in:
OakLoaf
2025-07-03 21:37:45 +01:00
parent 6b60246694
commit 8d8034d4e2
6 changed files with 36 additions and 12 deletions

View File

@@ -8,6 +8,7 @@
package com.dfsek.terra.api.config;
import com.dfsek.terra.api.Platform;
import com.dfsek.terra.api.registry.key.RegistryKey;
public interface PluginConfig {
@@ -23,6 +24,20 @@ public interface PluginConfig {
boolean isDebugLog();
String getBiomeKeyFormat();
default RegistryKey getBiomeKey(ConfigPack pack, RegistryKey biomeKey) {
String format = this.getBiomeKeyFormat()
.replace("%pack_id%", pack.getID().toLowerCase())
.replace("%biome_namespace%", biomeKey.getNamespace().toLowerCase())
.replace("%biome_id%", biomeKey.getID().toLowerCase());
if (format.contains(":")) {
return RegistryKey.parse(format);
} else {
return RegistryKey.of("terra", format);
}
}
int getBiomeSearchResolution();
int getStructureCache();

View File

@@ -5,20 +5,20 @@ import java.util.regex.Pattern;
public final class RegistryKey implements StringIdentifiable, Namespaced {
private static final Pattern ID_PATTERN = Pattern.compile("^[a-zA-Z0-9_-]*$");
private static final Pattern ID_PATTERN = Pattern.compile("^[a-zA-Z0-9/_-]*$");
private final String namespace;
private final String id;
private RegistryKey(String namespace, String id) {
if(!ID_PATTERN.matcher(namespace).matches()) {
throw new IllegalArgumentException(
"Namespace must only contain alphanumeric characters, hyphens, and underscores. \"" + namespace +
"Namespace must only contain alphanumeric characters, hyphens, underscores and forward slashes. \"" + namespace +
"\" is not a valid namespace.");
}
if(!ID_PATTERN.matcher(id).matches()) {
throw new IllegalArgumentException(
"ID must only contain alphanumeric characters, hyphens, and underscores. \"" + id +
"ID must only contain alphanumeric characters, hyphens, underscores and forward slashes. \"" + id +
"\" is not a valid ID.");
}