Skip to content

Commit db49adb

Browse files
committed
Improve config
1 parent b84534f commit db49adb

19 files changed

Lines changed: 201 additions & 63 deletions

File tree

modules/bungeecord/src/main/java/team/avion/bungeecord/GeyserVoice.java

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@
3333
import team.avion.proxy.VoiceCraftProxySessionManager;
3434

3535
public class GeyserVoice extends Plugin implements BaseGeyserVoice {
36+
private static final String TRANSPORT_HOST_PATH = "config.voicecraft.transport.host";
37+
private static final String TRANSPORT_PORT_PATH = "config.voicecraft.transport.port";
38+
private static final String TRANSPORT_LOGIN_TOKEN_PATH = "config.voicecraft.transport.login-token";
39+
private static final String LEGACY_HOST_PATH = "config.voicecraft.host";
40+
private static final String LEGACY_PORT_PATH = "config.voicecraft.port";
41+
private static final String LEGACY_LOGIN_TOKEN_PATH = "config.voicecraft.login-token";
42+
3643
private static @Getter Configuration config;
3744
private static @Getter GeyserVoice instance;
3845

@@ -88,9 +95,9 @@ public void reload() {
8895
Logger.info(Language.getMessage(lang, "plugin-config-loaded"));
8996
Logger.info(Language.getMessage(lang, "plugin-command-executor"));
9097

91-
host = getConfig().getString("config.voicecraft.host");
92-
port = getConfig().getInt("config.voicecraft.port");
93-
loginToken = getConfig().getString("config.voicecraft.login-token");
98+
host = getTransportHost();
99+
port = getTransportPort();
100+
loginToken = getTransportLoginToken();
94101
int proximityDistance = getConfig().getInt("config.voice.proximity-distance", 30);
95102
boolean proximityToggle = getConfig().getBoolean("config.voice.proximity-toggle", true);
96103
boolean voiceEffects = getConfig().getBoolean("config.voice.voice-effects", true);
@@ -117,9 +124,9 @@ public Boolean connect(String host, int port, String loginToken) {
117124
return false;
118125
}
119126

120-
getConfig().set("config.voicecraft.host", host);
121-
getConfig().set("config.voicecraft.port", port);
122-
getConfig().set("config.voicecraft.login-token", loginToken);
127+
getConfig().set(TRANSPORT_HOST_PATH, host);
128+
getConfig().set(TRANSPORT_PORT_PATH, port);
129+
getConfig().set(TRANSPORT_LOGIN_TOKEN_PATH, loginToken);
123130
saveConfig();
124131
reload();
125132
return isConnected;
@@ -367,4 +374,19 @@ private InputStream openConfigTemplate(String language) {
367374
InputStream input = getResourceAsStream("config/" + language + ".yml");
368375
return input != null ? input : getResourceAsStream("config/en.yml");
369376
}
377+
378+
private String getTransportHost() {
379+
String value = getConfig().getString(TRANSPORT_HOST_PATH);
380+
return value != null ? value : getConfig().getString(LEGACY_HOST_PATH);
381+
}
382+
383+
private int getTransportPort() {
384+
int value = getConfig().getInt(TRANSPORT_PORT_PATH, -1);
385+
return value > 0 ? value : getConfig().getInt(LEGACY_PORT_PATH);
386+
}
387+
388+
private String getTransportLoginToken() {
389+
String value = getConfig().getString(TRANSPORT_LOGIN_TOKEN_PATH);
390+
return value != null ? value : getConfig().getString(LEGACY_LOGIN_TOKEN_PATH);
391+
}
370392
}

modules/bungeecord/src/main/resources/config.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
auto-reconnect: true
55

66
voicecraft:
7-
host: "127.0.0.1"
8-
port: 9050
9-
login-token: "__GENERATED_LOGIN_TOKEN__"
7+
transport:
8+
host: "127.0.0.1"
9+
port: 9050
10+
login-token: "__GENERATED_LOGIN_TOKEN__"
11+
voice:
12+
port: 1111
1013

1114
voice:
1215
proximity-distance: 30

modules/bungeecord/src/main/resources/config/en.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
auto-reconnect: true # Reconnect to VoiceCraft after a dropped connection
55

66
voicecraft:
7-
host: "127.0.0.1" # VoiceCraft TCP host
8-
port: 9050 # VoiceCraft TCP port
9-
login-token: "__GENERATED_LOGIN_TOKEN__" # VoiceCraft LoginToken
7+
transport:
8+
host: "127.0.0.1" # VoiceCraft TCP host
9+
port: 9050 # VoiceCraft TCP port
10+
login-token: "__GENERATED_LOGIN_TOKEN__" # VoiceCraft LoginToken
11+
voice:
12+
port: 1111 # VoiceCraft voice port
1013

1114
voice:
1215
proximity-distance: 30 # Maximum voice distance

modules/bungeecord/src/main/resources/config/ja.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
auto-reconnect: true # 切断時に VoiceCraft へ再接続します
55

66
voicecraft:
7-
host: "127.0.0.1" # VoiceCraft の TCP ホスト
8-
port: 9050 # VoiceCraft の TCP ポート
9-
login-token: "__GENERATED_LOGIN_TOKEN__" # VoiceCraft の LoginToken
7+
transport:
8+
host: "127.0.0.1" # VoiceCraft の TCP ホスト
9+
port: 9050 # VoiceCraft の TCP ポート
10+
login-token: "__GENERATED_LOGIN_TOKEN__" # VoiceCraft の LoginToken
11+
voice:
12+
port: 1111 # VoiceCraft voice port
1013

1114
voice:
1215
proximity-distance: 30 # ボイスの最大距離

modules/bungeecord/src/main/resources/config/nl.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
auto-reconnect: true # Opnieuw verbinden met VoiceCraft na verbindingsverlies
55

66
voicecraft:
7-
host: "127.0.0.1" # VoiceCraft TCP-host
8-
port: 9050 # VoiceCraft TCP-poort
9-
login-token: "__GENERATED_LOGIN_TOKEN__" # VoiceCraft LoginToken
7+
transport:
8+
host: "127.0.0.1" # VoiceCraft TCP-host
9+
port: 9050 # VoiceCraft TCP-poort
10+
login-token: "__GENERATED_LOGIN_TOKEN__" # VoiceCraft LoginToken
11+
voice:
12+
port: 1111 # VoiceCraft voice port
1013

1114
voice:
1215
proximity-distance: 30 # Maximale spraakafstand

modules/bungeecord/src/main/resources/config/ru.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
auto-reconnect: true # Переподключаться к VoiceCraft после потери соединения
55

66
voicecraft:
7-
host: "127.0.0.1" # TCP-хост VoiceCraft
8-
port: 9050 # TCP-порт VoiceCraft
9-
login-token: "__GENERATED_LOGIN_TOKEN__" # LoginToken сервера VoiceCraft
7+
transport:
8+
host: "127.0.0.1" # TCP-хост VoiceCraft
9+
port: 9050 # TCP-порт VoiceCraft
10+
login-token: "__GENERATED_LOGIN_TOKEN__" # LoginToken сервера VoiceCraft
11+
voice:
12+
port: 1111 # Порт голосового сервера VoiceCraft
1013

1114
voice:
1215
proximity-distance: 30 # Максимальная дистанция голоса

modules/paper/src/main/java/team/avion/paper/GeyserVoice.java

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@
3333
* Main plugin class for GeyserVoice.
3434
*/
3535
public class GeyserVoice extends JavaPlugin implements BaseGeyserVoice {
36+
private static final String TRANSPORT_HOST_PATH = "config.voicecraft.transport.host";
37+
private static final String TRANSPORT_PORT_PATH = "config.voicecraft.transport.port";
38+
private static final String TRANSPORT_LOGIN_TOKEN_PATH = "config.voicecraft.transport.login-token";
39+
private static final String LEGACY_HOST_PATH = "config.voicecraft.host";
40+
private static final String LEGACY_PORT_PATH = "config.voicecraft.port";
41+
private static final String LEGACY_LOGIN_TOKEN_PATH = "config.voicecraft.login-token";
42+
private static final String MANAGED_VOICE_PORT_PATH = "config.voicecraft.voice.port";
43+
3644
private static @Getter GeyserVoice instance;
3745
private @Getter boolean isConnected = false;
3846
private @Getter String host = "";
@@ -109,9 +117,9 @@ public void reload() {
109117
}
110118
usesProxy = newUsesProxy;
111119

112-
host = getConfig().getString("config.voicecraft.host");
113-
port = getConfig().getInt("config.voicecraft.port");
114-
loginToken = getConfig().getString("config.voicecraft.login-token");
120+
host = getTransportHost();
121+
port = getTransportPort();
122+
loginToken = getTransportLoginToken();
115123
int proximityDistance = getConfig().getInt("config.voice.proximity-distance");
116124
boolean proximityToggle = getConfig().getBoolean("config.voice.proximity-toggle");
117125
boolean voiceEffects = getConfig().getBoolean("config.voice.voice-effects");
@@ -150,9 +158,9 @@ public void reload() {
150158
*/
151159
public Boolean connect(String host, int port, String loginToken) {
152160
if (Objects.nonNull(host) && Objects.nonNull(loginToken)) {
153-
getConfig().set("config.voicecraft.host", host);
154-
getConfig().set("config.voicecraft.port", port);
155-
getConfig().set("config.voicecraft.login-token", loginToken);
161+
getConfig().set(TRANSPORT_HOST_PATH, host);
162+
getConfig().set(TRANSPORT_PORT_PATH, port);
163+
getConfig().set(TRANSPORT_LOGIN_TOKEN_PATH, loginToken);
156164
saveConfig();
157165
reloadConfig();
158166
reload();
@@ -397,4 +405,23 @@ private InputStream openConfigTemplate(String templatePath) {
397405
InputStream input = getResource(templatePath);
398406
return input != null ? input : getResource("config/en.yml");
399407
}
408+
409+
public int getManagedVoicePort() {
410+
return getConfig().getInt(MANAGED_VOICE_PORT_PATH, 1111);
411+
}
412+
413+
private String getTransportHost() {
414+
String value = getConfig().getString(TRANSPORT_HOST_PATH);
415+
return value != null ? value : getConfig().getString(LEGACY_HOST_PATH);
416+
}
417+
418+
private int getTransportPort() {
419+
int value = getConfig().getInt(TRANSPORT_PORT_PATH, -1);
420+
return value > 0 ? value : getConfig().getInt(LEGACY_PORT_PATH);
421+
}
422+
423+
private String getTransportLoginToken() {
424+
String value = getConfig().getString(TRANSPORT_LOGIN_TOKEN_PATH);
425+
return value != null ? value : getConfig().getString(LEGACY_LOGIN_TOKEN_PATH);
426+
}
400427
}

modules/paper/src/main/java/team/avion/paper/voicecraft/VoiceCraftProcessManager.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ private LaunchTarget resolveReleaseLaunchTarget() throws IOException, Interrupte
200200
writeReleaseMarker(releaseMarker, releaseId);
201201
}
202202

203+
updateManagedServerProperties(installDirectory);
204+
203205
if (!Files.exists(executablePath)) {
204206
plugin.Logger.error("Managed VoiceCraft executable was not found after extraction: " + executablePath);
205207
return null;
@@ -235,6 +237,22 @@ private Path resolveManagedExecutable(Path installDirectory, String platform) {
235237
return installDirectory.resolve(fileName).normalize();
236238
}
237239

240+
private void updateManagedServerProperties(Path installDirectory) throws IOException {
241+
Path serverPropertiesPath = installDirectory.resolve("config").resolve("ServerProperties.json").normalize();
242+
if (!Files.exists(serverPropertiesPath)) {
243+
plugin.Logger.warn("Managed VoiceCraft config file was not found: " + serverPropertiesPath);
244+
return;
245+
}
246+
247+
String content = Files.readString(serverPropertiesPath, StandardCharsets.UTF_8);
248+
String updated = content.replaceFirst("\"Port\"\\s*:\\s*\\d+",
249+
"\"Port\": " + plugin.getManagedVoicePort());
250+
if (!updated.equals(content)) {
251+
Files.writeString(serverPropertiesPath, updated, StandardCharsets.UTF_8,
252+
StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE);
253+
}
254+
}
255+
238256
private void downloadAndExtractRelease(Path installDirectory, String assetName) throws IOException, InterruptedException {
239257
String downloadUrl = buildReleaseUrl(VoiceCraftRuntimeDefaults.GITHUB_REPOSITORY,
240258
VoiceCraftRuntimeDefaults.RELEASE, assetName);

modules/paper/src/main/resources/config.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77
enabled: false
88

99
voicecraft:
10-
host: "127.0.0.1"
11-
port: 9050
12-
login-token: "__GENERATED_LOGIN_TOKEN__"
10+
transport:
11+
host: "127.0.0.1"
12+
port: 9050
13+
login-token: "__GENERATED_LOGIN_TOKEN__"
14+
voice:
15+
port: 1111
1316
auto-start: true
1417
shutdown-on-disable: true
1518
invariant-globalization: true

modules/paper/src/main/resources/config/en.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@
77
enabled: false # Enable when this Paper server is behind Velocity/Bungee
88

99
voicecraft:
10-
host: "127.0.0.1" # VoiceCraft TCP host
11-
port: 9050 # VoiceCraft TCP port
12-
login-token: "__GENERATED_LOGIN_TOKEN__" # VoiceCraft LoginToken
10+
transport:
11+
host: "127.0.0.1" # VoiceCraft TCP host
12+
port: 9050 # VoiceCraft TCP port
13+
login-token: "__GENERATED_LOGIN_TOKEN__" # VoiceCraft LoginToken
14+
voice:
15+
port: 1111 # Managed VoiceCraft voice port
1316
auto-start: true # Start managed VoiceCraft automatically
1417
shutdown-on-disable: true # Stop managed VoiceCraft when the plugin disables
18+
invariant-globalization: true # Run .NET without system ICU packages
1519
ready-timeout-ms: 20000 # How long to wait for VoiceCraft startup
1620
install-directory: "voicecraft-runtime" # Folder for downloaded VoiceCraft binaries
1721

0 commit comments

Comments
 (0)