mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-08 19:34:09 +01:00
103 lines
4.8 KiB
Diff
103 lines
4.8 KiB
Diff
--- a/net/minecraft/server/gui/MinecraftServerGui.java
|
|
+++ b/net/minecraft/server/gui/MinecraftServerGui.java
|
|
@@ -59,6 +59,15 @@
|
|
jframe.pack();
|
|
jframe.setLocationRelativeTo((Component) null);
|
|
jframe.setVisible(true);
|
|
+ jframe.setName("Minecraft server"); // Paper - Improve ServerGUI
|
|
+
|
|
+ // Paper start - Improve ServerGUI
|
|
+ try {
|
|
+ jframe.setIconImage(javax.imageio.ImageIO.read(Objects.requireNonNull(MinecraftServerGui.class.getClassLoader().getResourceAsStream("logo.png"))));
|
|
+ } catch (java.io.IOException ignore) {
|
|
+ }
|
|
+ // Paper end - Improve ServerGUI
|
|
+
|
|
jframe.addWindowListener(new WindowAdapter() {
|
|
public void windowClosing(WindowEvent windowevent) {
|
|
if (!servergui.isClosing.getAndSet(true)) {
|
|
@@ -81,6 +90,7 @@
|
|
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) {
|
|
@@ -95,8 +105,8 @@
|
|
|
|
private JComponent buildInfoPanel() {
|
|
JPanel jpanel = new JPanel(new BorderLayout());
|
|
- StatsComponent guistatscomponent = new StatsComponent(this.server);
|
|
- Collection collection = this.finalizers;
|
|
+ com.destroystokyo.paper.gui.GuiStatsComponent guistatscomponent = new com.destroystokyo.paper.gui.GuiStatsComponent(this.server); // Paper - Make GUI graph fancier
|
|
+ Collection<Runnable> collection = this.finalizers; // CraftBukkit - decompile error
|
|
|
|
Objects.requireNonNull(guistatscomponent);
|
|
collection.add(guistatscomponent::close);
|
|
@@ -106,6 +116,39 @@
|
|
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);
|
|
@@ -132,7 +175,7 @@
|
|
|
|
jtextfield.setText("");
|
|
});
|
|
- jtextarea.addFocusListener(new FocusAdapter(this) {
|
|
+ jtextarea.addFocusListener(new FocusAdapter() { // CraftBukkit - decompile error
|
|
public void focusGained(FocusEvent focusevent) {}
|
|
});
|
|
jpanel.add(jscrollpane, "Center");
|
|
@@ -166,6 +209,7 @@
|
|
this.finalizers.forEach(Runnable::run);
|
|
}
|
|
|
|
+ private static final java.util.regex.Pattern ANSI = java.util.regex.Pattern.compile("\\e\\[[\\d;]*[^\\d;]"); // CraftBukkit // Paper
|
|
public void print(JTextArea textArea, JScrollPane scrollPane, String message) {
|
|
if (!SwingUtilities.isEventDispatchThread()) {
|
|
SwingUtilities.invokeLater(() -> {
|
|
@@ -181,7 +225,7 @@
|
|
}
|
|
|
|
try {
|
|
- document.insertString(document.getLength(), message, (AttributeSet) null);
|
|
+ document.insertString(document.getLength(), MinecraftServerGui.ANSI.matcher(message).replaceAll(""), (AttributeSet) null); // CraftBukkit
|
|
} catch (BadLocationException badlocationexception) {
|
|
;
|
|
}
|