mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
145 lines
6.9 KiB
Diff
145 lines
6.9 KiB
Diff
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
|
|
From: File <noreply+automated@papermc.io>
|
|
Date: Sun, 20 Apr 1997 06:37:42 -0700
|
|
Subject: [PATCH] purpur File Patches
|
|
|
|
|
|
diff --git a/net/minecraft/server/gui/MinecraftServerGui.java b/net/minecraft/server/gui/MinecraftServerGui.java
|
|
index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b3788623900db41 100644
|
|
--- a/net/minecraft/server/gui/MinecraftServerGui.java
|
|
+++ b/net/minecraft/server/gui/MinecraftServerGui.java
|
|
@@ -39,6 +39,11 @@ public class MinecraftServerGui extends JComponent {
|
|
private Thread logAppenderThread;
|
|
private final Collection<Runnable> finalizers = Lists.newArrayList();
|
|
final AtomicBoolean isClosing = new AtomicBoolean();
|
|
+ // Purpur start - GUI Improvements
|
|
+ private final CommandHistory history = new CommandHistory();
|
|
+ private String currentCommand = "";
|
|
+ private int historyIndex = 0;
|
|
+ // Purpur end - GUI Improvements
|
|
|
|
public static MinecraftServerGui showFrameFor(final DedicatedServer server) {
|
|
try {
|
|
@@ -46,7 +51,7 @@ public class MinecraftServerGui extends JComponent {
|
|
} catch (Exception var3) {
|
|
}
|
|
|
|
- final JFrame jFrame = new JFrame("Minecraft server");
|
|
+ final JFrame jFrame = new JFrame("Purpur Minecraft server"); // Purpur - Improve GUI
|
|
final MinecraftServerGui minecraftServerGui = new MinecraftServerGui(server);
|
|
jFrame.setDefaultCloseOperation(2);
|
|
jFrame.add(minecraftServerGui);
|
|
@@ -54,7 +59,7 @@ public class MinecraftServerGui extends JComponent {
|
|
jFrame.setLocationRelativeTo(null);
|
|
jFrame.setVisible(true);
|
|
// Paper start - Improve ServerGUI
|
|
- jFrame.setName("Minecraft server");
|
|
+ jFrame.setName("Purpur Minecraft server"); // Purpur - Improve GUI
|
|
try {
|
|
jFrame.setIconImage(javax.imageio.ImageIO.read(java.util.Objects.requireNonNull(MinecraftServerGui.class.getClassLoader().getResourceAsStream("logo.png"))));
|
|
} catch (java.io.IOException ignore) {
|
|
@@ -64,7 +69,7 @@ public class MinecraftServerGui extends JComponent {
|
|
@Override
|
|
public void windowClosing(WindowEvent event) {
|
|
if (!minecraftServerGui.isClosing.getAndSet(true)) {
|
|
- jFrame.setTitle("Minecraft server - shutting down!");
|
|
+ jFrame.setTitle("Purpur Minecraft server - shutting down!"); // Purpur - Improve GUI
|
|
server.halt(true);
|
|
minecraftServerGui.runFinalizers();
|
|
}
|
|
@@ -112,7 +117,7 @@ public class MinecraftServerGui extends JComponent {
|
|
|
|
private JComponent buildChatPanel() {
|
|
JPanel jPanel = new JPanel(new BorderLayout());
|
|
- JTextArea jTextArea = new JTextArea();
|
|
+ org.purpurmc.purpur.gui.JColorTextPane jTextArea = new org.purpurmc.purpur.gui.JColorTextPane(); // Purpur - GUI Improvements
|
|
JScrollPane jScrollPane = new JScrollPane(jTextArea, 22, 30);
|
|
jTextArea.setEditable(false);
|
|
jTextArea.setFont(MONOSPACED);
|
|
@@ -121,10 +126,43 @@ public class MinecraftServerGui extends JComponent {
|
|
String trimmed = jTextField.getText().trim();
|
|
if (!trimmed.isEmpty()) {
|
|
this.server.handleConsoleInput(trimmed, this.server.createCommandSourceStack());
|
|
+ // Purpur start - GUI Improvements
|
|
+ history.add(trimmed);
|
|
+ historyIndex = -1;
|
|
+ // Purpur end - GUI Improvements
|
|
}
|
|
|
|
jTextField.setText("");
|
|
});
|
|
+ // Purpur start - GUI Improvements
|
|
+ jTextField.getInputMap().put(javax.swing.KeyStroke.getKeyStroke("UP"), "up");
|
|
+ jTextField.getInputMap().put(javax.swing.KeyStroke.getKeyStroke("DOWN"), "down");
|
|
+ jTextField.getActionMap().put("up", new javax.swing.AbstractAction() {
|
|
+ @Override
|
|
+ public void actionPerformed(java.awt.event.ActionEvent actionEvent) {
|
|
+ if (historyIndex < 0) {
|
|
+ currentCommand = jTextField.getText();
|
|
+ }
|
|
+ if (historyIndex < history.size() - 1) {
|
|
+ jTextField.setText(history.get(++historyIndex));
|
|
+ }
|
|
+ }
|
|
+ });
|
|
+ jTextField.getActionMap().put("down", new javax.swing.AbstractAction() {
|
|
+ @Override
|
|
+ public void actionPerformed(java.awt.event.ActionEvent actionEvent) {
|
|
+ if (historyIndex >= 0) {
|
|
+ if (historyIndex == 0) {
|
|
+ --historyIndex;
|
|
+ jTextField.setText(currentCommand);
|
|
+ } else {
|
|
+ --historyIndex;
|
|
+ jTextField.setText(history.get(historyIndex));
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ });
|
|
+ // Purpur end - GUI Improvements
|
|
jTextArea.addFocusListener(new FocusAdapter() {
|
|
@Override
|
|
public void focusGained(FocusEvent event) {
|
|
@@ -159,7 +197,7 @@ public class MinecraftServerGui extends JComponent {
|
|
}
|
|
|
|
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 line) {
|
|
+ public void print(org.purpurmc.purpur.gui.JColorTextPane textArea, JScrollPane scrollPane, String line) { // Purpur - GUI Improvements
|
|
if (!SwingUtilities.isEventDispatchThread()) {
|
|
SwingUtilities.invokeLater(() -> this.print(textArea, scrollPane, line));
|
|
} else {
|
|
@@ -170,10 +208,11 @@ public class MinecraftServerGui extends JComponent {
|
|
flag = verticalScrollBar.getValue() + verticalScrollBar.getSize().getHeight() + MONOSPACED.getSize() * 4 > verticalScrollBar.getMaximum();
|
|
}
|
|
|
|
- try {
|
|
+ /*try { // Purpur - GUI Improvements
|
|
document.insertString(document.getLength(), MinecraftServerGui.ANSI.matcher(line).replaceAll(""), null); // CraftBukkit
|
|
} catch (BadLocationException var8) {
|
|
- }
|
|
+ }*/ // Purpur - GUI Improvements
|
|
+ textArea.append(line); // Purpur - GUI Improvements
|
|
|
|
if (flag) {
|
|
verticalScrollBar.setValue(Integer.MAX_VALUE);
|
|
@@ -181,6 +220,18 @@ public class MinecraftServerGui extends JComponent {
|
|
}
|
|
}
|
|
|
|
+ // Purpur start - GUI Improvements
|
|
+ public static class CommandHistory extends java.util.LinkedList<String> {
|
|
+ @Override
|
|
+ public boolean add(String command) {
|
|
+ if (size() > 1000) {
|
|
+ remove();
|
|
+ }
|
|
+ return super.offerFirst(command);
|
|
+ }
|
|
+ }
|
|
+ // Purpur end - GUI Improvements
|
|
+
|
|
// Paper start - Add onboarding message for initial server start
|
|
private JComponent buildOnboardingPanel() {
|
|
String onboardingLink = "https://docs.papermc.io/paper/next-steps";
|