JSON and color codes for disconnect message

This commit is contained in:
Adrian Bergqvist 2023-02-17 17:20:39 +01:00
parent e690ead1eb
commit 529d7e7636
No known key found for this signature in database
GPG Key ID: FAE7D8EDE225E686
3 changed files with 18 additions and 6 deletions

View File

@ -3,6 +3,9 @@ package org.adde0109.ambassador;
import com.electronwill.nightconfig.core.conversion.InvalidValueException;
import com.electronwill.nightconfig.core.file.CommentedFileConfig;
import com.google.gson.annotations.Expose;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
import java.net.URL;
import java.nio.file.Path;
@ -18,6 +21,8 @@ public class AmbassadorConfig {
@Expose
private int serverSwitchCancellationTime = 120;
private net.kyori.adventure.text.@MonotonicNonNull Component messageAsAsComponent;
private AmbassadorConfig(int resetTimeout, String kickResetMessage, int serverSwitchCancellationTime) {
this.resetTimeout = resetTimeout;
this.disconnectResetMessage = kickResetMessage;
@ -63,8 +68,15 @@ public class AmbassadorConfig {
return resetTimeout;
}
public String getDisconnectResetMessage() {
return disconnectResetMessage;
public net.kyori.adventure.text.Component getDisconnectResetMessage() {
if (messageAsAsComponent == null) {
if (disconnectResetMessage.startsWith("{")) {
messageAsAsComponent = GsonComponentSerializer.gson().deserialize(disconnectResetMessage);
} else {
messageAsAsComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(disconnectResetMessage);
}
}
return messageAsAsComponent;
}
public int getServerSwitchCancellationTime() {

View File

@ -11,7 +11,6 @@ import com.velocitypowered.proxy.protocol.StateRegistry;
import com.velocitypowered.proxy.protocol.packet.LoginPluginResponse;
import com.velocitypowered.proxy.protocol.packet.PluginMessage;
import io.netty.buffer.Unpooled;
import net.kyori.adventure.text.Component;
import org.adde0109.ambassador.Ambassador;
import org.adde0109.ambassador.velocity.client.FML2CRPMResetCompleteDecoder;
import org.adde0109.ambassador.velocity.client.OutboundForgeHandshakeHolder;
@ -74,7 +73,7 @@ public enum VelocityForgeClientConnectionPhase implements ClientConnectionPhase
Ambassador.getTemporaryForced().put(player.getUsername(), player.getConnectionInFlight().getServer(),
Ambassador.getInstance().config.getServerSwitchCancellationTime(), TimeUnit.SECONDS);
//Disconnect - Reset Timeout
player.disconnect(Component.text(Ambassador.getInstance().config.getDisconnectResetMessage()));
player.disconnect(Ambassador.getInstance().config.getDisconnectResetMessage());
}, Ambassador.getInstance().config.getResetTimeout(), TimeUnit.MILLISECONDS);
}
@Override

View File

@ -4,6 +4,7 @@ config-version = "1.0"
# How long to wait for the client to reset before disconnecting (In milliseconds)
reset-timeout = 1000
# Message displayed to the player when disconnected from proxy during server switch.
disconnect-reset-message = "Please reconnect"
# How long the player has to reconnect before canceling the server switch. (In seconds)
# Legacy color codes and JSON are accepted.
disconnect-reset-message = "&6Please reconnect"
# How much time the player has to reconnect before canceling the server switch. (In seconds)
server-switch-cancellation-time = 120