2024-03-16 19:10:26 +01:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: leguan <longboard.noah@gmail.com>
|
|
|
|
Date: Sun, 10 Mar 2024 20:10:41 +0100
|
|
|
|
Subject: [PATCH] Add onboarding message for initial server start
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/configuration/Configurations.java b/src/main/java/io/papermc/paper/configuration/Configurations.java
|
|
|
|
index c01b4393439838976965823298f12e4762e72eff..218bf89fd7583d6db9f64754c4db8fcce5415bdb 100644
|
|
|
|
--- a/src/main/java/io/papermc/paper/configuration/Configurations.java
|
|
|
|
+++ b/src/main/java/io/papermc/paper/configuration/Configurations.java
|
|
|
|
@@ -126,6 +126,7 @@ public abstract class Configurations<G, W> {
|
|
|
|
if (Files.notExists(configFile)) {
|
|
|
|
node = CommentedConfigurationNode.root(loader.defaultOptions());
|
|
|
|
node.node(Configuration.VERSION_FIELD).raw(this.globalConfigVersion());
|
|
|
|
+ GlobalConfiguration.isFirstStart = true;
|
|
|
|
} else {
|
|
|
|
node = loader.load();
|
|
|
|
this.verifyGlobalConfigVersion(node);
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
2024-04-26 23:29:16 +02:00
|
|
|
index d12fd313730c44dcec3c73fcd8c99c0c84f46743..5f59e733c00de9c0f5692b3b3c092a050a9f409f 100644
|
2024-03-16 19:10:26 +01:00
|
|
|
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
|
|
|
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
|
|
|
@@ -25,6 +25,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
|
|
private static final Logger LOGGER = LogUtils.getLogger();
|
|
|
|
static final int CURRENT_VERSION = 29; // (when you change the version, change the comment, so it conflicts on rebases): <insert changes here>
|
|
|
|
private static GlobalConfiguration instance;
|
|
|
|
+ public static boolean isFirstStart = false;
|
|
|
|
public static GlobalConfiguration get() {
|
|
|
|
return instance;
|
|
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
2024-04-26 17:33:00 +02:00
|
|
|
index 3c3383b00dc76c6d0ffd9b2a6a8cf97ec00f91be..881679270a344f1a4d70c3c47871a495af202109 100644
|
2024-03-16 19:10:26 +01:00
|
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
|
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
2024-04-25 12:27:57 +02:00
|
|
|
@@ -1132,6 +1132,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
2024-03-16 19:10:26 +01:00
|
|
|
long tickSection = Util.getNanos();
|
|
|
|
long currentTime;
|
|
|
|
// Paper end - further improve server tick loop
|
|
|
|
+ // Paper start - Add onboarding message for initial server start
|
|
|
|
+ if (io.papermc.paper.configuration.GlobalConfiguration.isFirstStart) {
|
|
|
|
+ LOGGER.info("*************************************************************************************");
|
|
|
|
+ LOGGER.info("This is the first time you're starting this server.");
|
|
|
|
+ LOGGER.info("It's recommended you read our 'Getting Started' documentation for guidance.");
|
|
|
|
+ LOGGER.info("View this and more helpful information here: https://docs.papermc.io/paper/next-steps");
|
|
|
|
+ LOGGER.info("*************************************************************************************");
|
|
|
|
+ }
|
|
|
|
+ // Paper end - Add onboarding message for initial server start
|
|
|
|
+
|
|
|
|
while (this.running) {
|
2024-04-25 12:27:57 +02:00
|
|
|
long i;
|
|
|
|
|
2024-03-16 19:10:26 +01:00
|
|
|
diff --git a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
2024-04-25 12:27:57 +02:00
|
|
|
index 4d3fe4f56e0b264fa030409919caf52d5f421d46..759062d219ff490a3cb19e710c4d18e3e08288e0 100644
|
2024-03-16 19:10:26 +01:00
|
|
|
--- a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
|
|
|
+++ b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
|
|
|
@@ -90,6 +90,7 @@ public class MinecraftServerGui extends JComponent {
|
|
|
|
this.setLayout(new BorderLayout());
|
|
|
|
|
|
|
|
try {
|
|
|
|
+ this.add(this.buildOnboardingPanel(), "North"); // Paper - Add onboarding message for initial server start
|
|
|
|
this.add(this.buildChatPanel(), "Center");
|
|
|
|
this.add(this.buildInfoPanel(), "West");
|
|
|
|
} catch (Exception exception) {
|
|
|
|
@@ -115,6 +116,39 @@ public class MinecraftServerGui extends JComponent {
|
|
|
|
return jpanel;
|
|
|
|
}
|
|
|
|
|
|
|
|
+ // Paper start - Add onboarding message for initial server start
|
|
|
|
+ private JComponent buildOnboardingPanel() {
|
|
|
|
+ String onboardingLink = "https://docs.papermc.io/paper/next-steps";
|
|
|
|
+ JPanel jPanel = new JPanel();
|
|
|
|
+
|
|
|
|
+ javax.swing.JLabel jLabel = new javax.swing.JLabel("If you need help setting up your server you can visit:");
|
|
|
|
+ jLabel.setFont(MinecraftServerGui.MONOSPACED);
|
|
|
|
+
|
|
|
|
+ javax.swing.JLabel link = new javax.swing.JLabel("<html><u> " + onboardingLink + "</u></html>");
|
|
|
|
+ link.setFont(MinecraftServerGui.MONOSPACED);
|
|
|
|
+ link.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
|
|
|
|
+ link.addMouseListener(new java.awt.event.MouseAdapter() {
|
|
|
|
+ @Override
|
|
|
|
+ public void mouseClicked(final java.awt.event.MouseEvent e) {
|
|
|
|
+ try {
|
|
|
|
+ java.awt.Desktop.getDesktop().browse(java.net.URI.create(onboardingLink));
|
|
|
|
+ } catch (java.io.IOException exception) {
|
|
|
|
+ LOGGER.error("Unable to find a default browser. Please manually visit the website: " + onboardingLink, exception);
|
|
|
|
+ } catch (UnsupportedOperationException exception) {
|
|
|
|
+ LOGGER.error("This platform does not support the BROWSE action. Please manually visit the website: " + onboardingLink, exception);
|
|
|
|
+ } catch (SecurityException exception) {
|
|
|
|
+ LOGGER.error("This action has been denied by the security manager. Please manually visit the website: " + onboardingLink, exception);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ jPanel.add(jLabel);
|
|
|
|
+ jPanel.add(link);
|
|
|
|
+
|
|
|
|
+ return jPanel;
|
|
|
|
+ }
|
|
|
|
+ // Paper end - Add onboarding message for initial server start
|
|
|
|
+
|
|
|
|
private JComponent buildPlayerPanel() {
|
|
|
|
JList<?> jlist = new PlayerListComponent(this.server);
|
|
|
|
JScrollPane jscrollpane = new JScrollPane(jlist, 22, 30);
|