Add welcome message

This commit is contained in:
rtm516 2021-01-17 14:53:57 +00:00
parent d180ab3795
commit 11bd70bdc9
No known key found for this signature in database
GPG key ID: 331715B8B007C67A
7 changed files with 37 additions and 2 deletions

View file

@ -52,6 +52,9 @@ public class GeyserConnectConfig {
private String motd;
@JsonProperty("welcome-file")
private String welcomeFile = "welcome.txt";
@JsonProperty("debug-mode")
private boolean debugMode;

View file

@ -119,6 +119,11 @@ public class MasterServer {
storageManager.setupStorage();
// Create the base welcome.txt file
try {
FileUtils.fileOrCopiedFromResource(new File(MasterServer.getInstance().getGeyserConnectConfig().getWelcomeFile()), "welcome.txt", (x) -> x);
} catch (IOException ignored) { }
start(geyserConnectConfig.getPort());
logger.start();

View file

@ -48,8 +48,9 @@ import org.geysermc.connector.entity.attribute.AttributeType;
import org.geysermc.connector.network.BedrockProtocol;
import org.geysermc.connector.network.session.auth.BedrockClientData;
import org.geysermc.connector.utils.AttributeUtils;
import org.geysermc.connector.utils.LanguageUtils;
import org.geysermc.connector.utils.FileUtils;
import java.io.File;
import java.io.IOException;
import java.security.interfaces.ECPublicKey;
import java.util.ArrayList;
@ -203,7 +204,17 @@ public class PacketHandler implements BedrockPacketHandler {
public boolean handle(SetLocalPlayerAsInitializedPacket packet) {
masterServer.getLogger().debug("Player initialized: " + player.getDisplayName());
player.sendWindow(FormID.MAIN, UIHandler.getServerList(player.getServers()));;
String message = "";
try {
File messageFile = FileUtils.fileOrCopiedFromResource(new File(MasterServer.getInstance().getGeyserConnectConfig().getWelcomeFile()), "welcome.txt", (x) -> x);
message = new String(FileUtils.readAllBytes(messageFile));
} catch (IOException ignored) { }
if (!message.trim().isEmpty()) {
player.sendWindow(FormID.WELCOME, UIHandler.getMessageWindow(message));
} else {
player.sendWindow(FormID.MAIN, UIHandler.getServerList(player.getServers()));
}
return false;
}
@ -225,6 +236,10 @@ public class PacketHandler implements BedrockPacketHandler {
} else {
// Send the response to the correct response function
switch (id) {
case WELCOME:
player.sendWindow(FormID.MAIN, UIHandler.getServerList(player.getServers()));
break;
case MAIN:
UIHandler.handleServerListResponse(player, (SimpleFormResponse) window.getResponse());
break;

View file

@ -30,6 +30,7 @@ import lombok.Getter;
@Getter
public enum FormID {
WELCOME,
MAIN,
DIRECT_CONNECT(true),
EDIT_SERVERS(true),

View file

@ -182,6 +182,13 @@ public class UIHandler {
.build();
}
public static FormWindow getMessageWindow(String message) {
CustomFormWindow window = new CustomFormBuilder("Notice")
.addComponent(new LabelComponent(message))
.build();
return window;
}
/**
* Handle the server list response
*

View file

@ -20,6 +20,10 @@ max-players: 100
# MOTD to display
motd: "GeyserConnect Proxy"
# Welcome message file, if file exists and is not empty this will show on join
# This is loaded live so will update without a server restart
welcome-file: welcome.txt
# Config for the Geyser listener
geyser:
# The port that will listen for connections

View file