mirror of
https://github.com/TotalFreedomMC/ZeroTelnetClient.git
synced 2024-12-22 16:25:14 +00:00
Added automatic enabling of telnet.enhanced.
Better title display.
This commit is contained in:
parent
2077e4ba33
commit
ba202365c7
5 changed files with 127 additions and 34 deletions
|
@ -1,5 +1,7 @@
|
|||
package me.StevenLawson.BukkitTelnetClient;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
|
@ -7,6 +9,7 @@ import java.io.InputStreamReader;
|
|||
import java.io.PrintStream;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.Timer;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.net.telnet.TelnetClient;
|
||||
|
||||
|
@ -17,6 +20,7 @@ public class BTC_ConnectionManager
|
|||
private String hostname;
|
||||
private int port;
|
||||
private boolean canDoDisconnect = false;
|
||||
private String loginName;
|
||||
|
||||
public BTC_ConnectionManager()
|
||||
{
|
||||
|
@ -31,12 +35,12 @@ public class BTC_ConnectionManager
|
|||
btc.getTxtServer().setEnabled(false);
|
||||
btc.getBtnDisconnect().setEnabled(true);
|
||||
|
||||
btc.setTitle("BukkitTelnetClient - " + BukkitTelnetClient.VERSION_STRING + " - " + hostname + ":" + port);
|
||||
|
||||
System.out.println("Connecting to " + hostname + ":" + port + "...");
|
||||
|
||||
this.hostname = hostname;
|
||||
this.port = port;
|
||||
this.loginName = null;
|
||||
updateTitle(true);
|
||||
|
||||
startConnectThread();
|
||||
}
|
||||
|
@ -92,7 +96,9 @@ public class BTC_ConnectionManager
|
|||
btc.getBtnSend().setEnabled(false);
|
||||
btc.getTxtCommand().setEnabled(false);
|
||||
|
||||
btc.setTitle("BukkitTelnetClient - " + BukkitTelnetClient.VERSION_STRING + " - Disconnected");
|
||||
loginName = null;
|
||||
|
||||
updateTitle(false);
|
||||
|
||||
System.out.println("\nDisconnected.");
|
||||
}
|
||||
|
@ -101,10 +107,18 @@ public class BTC_ConnectionManager
|
|||
private final PrintStream consoleStream = new PrintStream(consoleBuffer);
|
||||
|
||||
public void sendCommand(String text)
|
||||
{
|
||||
sendCommand(text, true);
|
||||
}
|
||||
|
||||
public void sendCommand(String text, boolean verbose)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (verbose)
|
||||
{
|
||||
consoleStream.format("%s\r\n", text);
|
||||
}
|
||||
|
||||
this.telnetClient.getOutputStream().write((text + "\n").getBytes());
|
||||
this.telnetClient.getOutputStream().flush();
|
||||
|
@ -115,6 +129,21 @@ public class BTC_ConnectionManager
|
|||
}
|
||||
}
|
||||
|
||||
public void sendDelayedCommand(final String text, final boolean verbose, final int delay)
|
||||
{
|
||||
final Timer timer = new Timer(delay, new ActionListener()
|
||||
{
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent ae)
|
||||
{
|
||||
sendCommand(text, verbose);
|
||||
}
|
||||
});
|
||||
|
||||
timer.setRepeats(false);
|
||||
timer.start();
|
||||
}
|
||||
|
||||
private void startConnectThread()
|
||||
{
|
||||
if (this.connectThread != null)
|
||||
|
@ -160,8 +189,20 @@ public class BTC_ConnectionManager
|
|||
{
|
||||
final String line = consoleBuffer.toString();
|
||||
|
||||
final Map<String, BTC_PlayerListDecoder.PlayerInfo> playerList = BTC_PlayerListDecoder.decodePlayerListMessage(line);
|
||||
|
||||
String _loginName = null;
|
||||
if (BTC_ConnectionManager.this.loginName == null)
|
||||
{
|
||||
_loginName = BTC_PlayerListDecoder.checkForLoginMessage(line);
|
||||
}
|
||||
if (_loginName != null)
|
||||
{
|
||||
BTC_ConnectionManager.this.loginName = _loginName;
|
||||
updateTitle(true);
|
||||
sendDelayedCommand("telnet.enhanced", false, 500);
|
||||
}
|
||||
else
|
||||
{
|
||||
final Map<String, BTC_PlayerListDecoder.PlayerInfo> playerList = BTC_PlayerListDecoder.checkForPlayerListMessage(line);
|
||||
if (playerList != null)
|
||||
{
|
||||
btc.updatePlayerList(playerList);
|
||||
|
@ -173,6 +214,7 @@ public class BTC_ConnectionManager
|
|||
System.out.print(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
consoleBuffer.reset();
|
||||
}
|
||||
|
@ -204,4 +246,33 @@ public class BTC_ConnectionManager
|
|||
});
|
||||
this.connectThread.start();
|
||||
}
|
||||
|
||||
public final void updateTitle(boolean isConnected)
|
||||
{
|
||||
final BTC_MainPanel mainPanel = BukkitTelnetClient.mainPanel;
|
||||
if (mainPanel == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
String title;
|
||||
|
||||
if (isConnected)
|
||||
{
|
||||
if (loginName == null)
|
||||
{
|
||||
title = String.format("BukkitTelnetClient - %s - %s:%d", BukkitTelnetClient.VERSION_STRING, hostname, port);
|
||||
}
|
||||
else
|
||||
{
|
||||
title = String.format("BukkitTelnetClient - %s - %s@%s:%d", BukkitTelnetClient.VERSION_STRING, loginName, hostname, port);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
title = String.format("BukkitTelnetClient - %s - Disconnected", BukkitTelnetClient.VERSION_STRING);
|
||||
}
|
||||
|
||||
mainPanel.setTitle(title);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
|
||||
<Form version="1.6" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
|
||||
<Properties>
|
||||
<Property name="defaultCloseOperation" type="int" value="3"/>
|
||||
<Property name="title" type="java.lang.String" value="BukkitTelnetClient"/>
|
||||
|
@ -269,7 +269,10 @@
|
|||
</Column>
|
||||
</TableColumnModel>
|
||||
</Property>
|
||||
<Property name="columnSelectionAllowed" type="boolean" value="true"/>
|
||||
<Property name="rowSelectionAllowed" type="boolean" value="true"/>
|
||||
<Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor">
|
||||
<JTableSelectionModel selectionMode="0"/>
|
||||
</Property>
|
||||
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
|
||||
<TableHeader reorderingAllowed="true" resizingAllowed="true"/>
|
||||
</Property>
|
||||
|
|
|
@ -154,26 +154,6 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
|||
}
|
||||
}
|
||||
|
||||
public JCheckBox getChkAutoScroll()
|
||||
{
|
||||
return chkAutoScroll;
|
||||
}
|
||||
|
||||
public JCheckBox getChkIgnorePlayerCommands()
|
||||
{
|
||||
return chkIgnorePlayerCommands;
|
||||
}
|
||||
|
||||
public JCheckBox getChkIgnoreServerCommands()
|
||||
{
|
||||
return chkIgnoreServerCommands;
|
||||
}
|
||||
|
||||
public JCheckBox getChkShowChatOnly()
|
||||
{
|
||||
return chkShowChatOnly;
|
||||
}
|
||||
|
||||
public final void saveServersAndTriggerConnect()
|
||||
{
|
||||
String selected_server = (String) txtServer.getSelectedItem();
|
||||
|
@ -381,7 +361,8 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
|||
return canEdit [columnIndex];
|
||||
}
|
||||
});
|
||||
tblPlayers.setColumnSelectionAllowed(true);
|
||||
tblPlayers.setRowSelectionAllowed(true);
|
||||
tblPlayers.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
|
||||
jScrollPane2.setViewportView(tblPlayers);
|
||||
tblPlayers.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
|
||||
|
||||
|
@ -572,4 +553,29 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
|||
{
|
||||
return txtServer;
|
||||
}
|
||||
|
||||
public JCheckBox getChkAutoScroll()
|
||||
{
|
||||
return chkAutoScroll;
|
||||
}
|
||||
|
||||
public JCheckBox getChkIgnorePlayerCommands()
|
||||
{
|
||||
return chkIgnorePlayerCommands;
|
||||
}
|
||||
|
||||
public JCheckBox getChkIgnoreServerCommands()
|
||||
{
|
||||
return chkIgnoreServerCommands;
|
||||
}
|
||||
|
||||
public JCheckBox getChkShowChatOnly()
|
||||
{
|
||||
return chkShowChatOnly;
|
||||
}
|
||||
|
||||
public BTC_ConnectionManager getConnectionManager()
|
||||
{
|
||||
return connectionManager;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,13 +12,25 @@ import org.json.JSONObject;
|
|||
public class BTC_PlayerListDecoder
|
||||
{
|
||||
private static final Pattern PLAYER_LIST_MESSAGE = Pattern.compile(":\\[.+@BukkitTelnet\\]\\$ playerList~(.+)");
|
||||
private static final Pattern LOGIN_MESSAGE = Pattern.compile("\\[.+?@BukkitTelnet\\]\\$ Logged in as (.+)\\.");
|
||||
|
||||
private BTC_PlayerListDecoder()
|
||||
{
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
public static final Map<String, PlayerInfo> decodePlayerListMessage(String message)
|
||||
public static final String checkForLoginMessage(String message)
|
||||
{
|
||||
final Matcher matcher = LOGIN_MESSAGE.matcher(message);
|
||||
if (matcher.find())
|
||||
{
|
||||
return matcher.group(1);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static final Map<String, PlayerInfo> checkForPlayerListMessage(String message)
|
||||
{
|
||||
final Matcher matcher = PLAYER_LIST_MESSAGE.matcher(message);
|
||||
if (matcher.find())
|
||||
|
|
|
@ -73,6 +73,7 @@ public class BukkitTelnetClient
|
|||
public void run()
|
||||
{
|
||||
mainPanel = new BTC_MainPanel();
|
||||
mainPanel.getConnectionManager().updateTitle(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue