various fixes and improvements
This commit is contained in:
parent
fefdcc3612
commit
a9b113a436
6 changed files with 92 additions and 34 deletions
|
@ -493,6 +493,8 @@ public class Proxy {
|
|||
this.register(new CommandRevoke());
|
||||
this.register(new CommandRegister());
|
||||
this.register(new CommandDelete());
|
||||
this.register(new CommandList());
|
||||
this.register(new CommandPing());
|
||||
}
|
||||
|
||||
public Map<String, Command> getCommands() {
|
||||
|
|
23
proxy/src/main/java/proxy/command/CommandList.java
Normal file
23
proxy/src/main/java/proxy/command/CommandList.java
Normal file
|
@ -0,0 +1,23 @@
|
|||
package proxy.command;
|
||||
|
||||
import proxy.Proxy;
|
||||
import proxy.handler.ProxyHandler;
|
||||
import proxy.util.Formatter;
|
||||
|
||||
public class CommandList extends Command {
|
||||
public String getName() {
|
||||
return "list";
|
||||
}
|
||||
|
||||
public String getHelp() {
|
||||
return "Displays a list of online players";
|
||||
}
|
||||
|
||||
public void run(Proxy proxy, ProxyHandler player, String[] args) {
|
||||
int cnt = proxy.getPlayers().size();
|
||||
for(ProxyHandler plr : proxy.getPlayers()) {
|
||||
sendMessage(player, (plr.isAdmin() ? Formatter.GOLD : Formatter.GREEN) + plr.getUsername());
|
||||
}
|
||||
sendMessage(player, (cnt == 0 ? Formatter.GRAY + "No players are" : Formatter.DARK_GREEN + (cnt == 1 ? "1 player is" : "%d players are")) + " online", cnt);
|
||||
}
|
||||
}
|
33
proxy/src/main/java/proxy/command/CommandPing.java
Normal file
33
proxy/src/main/java/proxy/command/CommandPing.java
Normal file
|
@ -0,0 +1,33 @@
|
|||
package proxy.command;
|
||||
|
||||
import proxy.Proxy;
|
||||
import proxy.handler.ProxyHandler;
|
||||
|
||||
public class CommandPing extends Command {
|
||||
public String getName() {
|
||||
return "ping";
|
||||
}
|
||||
|
||||
public String getHelp() {
|
||||
return "Display a players latency";
|
||||
}
|
||||
|
||||
public String getArgs() {
|
||||
return "<player>";
|
||||
}
|
||||
|
||||
public void run(Proxy proxy, ProxyHandler player, String[] args) {
|
||||
if(player == null && args.length < 1)
|
||||
throw new RunException("Please provide a player name");
|
||||
ProxyHandler plr = args.length < 1 ? player : proxy.getPlayer(args[0]);
|
||||
if(plr == null)
|
||||
throw new RunException("'%s' is not online", args[0]);
|
||||
if(player != null && plr != player && !player.isAdmin())
|
||||
throw new RunException("You are not allowed to query the latency of another player");
|
||||
sendInfo(player, (plr == player ? "Your latency" : "Latency of %s") + ": %d ms", plr == player ? plr.getPing() : plr.getUsername(), plr.getPing());
|
||||
}
|
||||
|
||||
public Iterable<String> complete(Proxy proxy, ProxyHandler player, String[] args) {
|
||||
return args.length == 1 && (player == null || player.isAdmin()) ? proxy.getPlayerNames() : null;
|
||||
}
|
||||
}
|
|
@ -83,6 +83,7 @@ public class ProxyHandler extends User implements Handler {
|
|||
private int realId = -1;
|
||||
private int prevMode = -1;
|
||||
private int mode = 0;
|
||||
private byte modelFlags = 0x7f;
|
||||
|
||||
private static boolean isAllowedChar(char ch) {
|
||||
return ch != 167 && ch >= 32 && ch != 127;
|
||||
|
@ -147,11 +148,11 @@ public class ProxyHandler extends User implements Handler {
|
|||
}
|
||||
|
||||
public void sendMessage(String message) {
|
||||
this.sendToClient(new S02PacketChat(message, (byte)0));
|
||||
this.sendToClient(new S02PacketChat(message, false));
|
||||
}
|
||||
|
||||
public void sendMessage(String fmt, Object... args) {
|
||||
this.sendToClient(new S02PacketChat(String.format(fmt, args), (byte)0));
|
||||
this.sendToClient(new S02PacketChat(String.format(fmt, args), false));
|
||||
}
|
||||
|
||||
public void update(Connection connection) {
|
||||
|
@ -423,9 +424,7 @@ public class ProxyHandler extends User implements Handler {
|
|||
}
|
||||
else {
|
||||
msg = String.format(Formatter.BLUE + "%s" + Formatter.DARK_GRAY + ": " + Formatter.GRAY + "%s", this.username, packetIn.getMessage());
|
||||
for(ProxyHandler player : this.proxy.getPlayers()) {
|
||||
player.sendToClient(new S02PacketChat(msg, (byte)1));
|
||||
}
|
||||
this.proxy.sendPacket(new S02PacketChat(msg, false));
|
||||
Log.info(Formatter.strip(msg));
|
||||
}
|
||||
}
|
||||
|
@ -450,7 +449,8 @@ public class ProxyHandler extends User implements Handler {
|
|||
if(this.completion.indexOf(' ') == -1) {
|
||||
list = this.completion.indexOf(':') != -1 ? Lists.newArrayList() : Lists.newArrayList(packetIn.getMatches());
|
||||
for(Iterator<String> iter = list.iterator(); iter.hasNext();) {
|
||||
if(iter.next().indexOf(':') != -1)
|
||||
String cmd = iter.next();
|
||||
if(cmd.isEmpty() || cmd.indexOf(':') != -1 || this.proxy.getCommands().containsKey(cmd.substring(1).toLowerCase(Locale.US)))
|
||||
iter.remove();
|
||||
}
|
||||
if(this.admin) {
|
||||
|
@ -548,6 +548,7 @@ public class ProxyHandler extends User implements Handler {
|
|||
public void processClientSettings(C15PacketClientSettings packetIn) {
|
||||
if(this.connected)
|
||||
this.sendToServer(packetIn);
|
||||
this.modelFlags = packetIn.getModelFlags();
|
||||
}
|
||||
|
||||
public void processCreativeInventoryAction(C10PacketCreativeInventoryAction packetIn) {
|
||||
|
@ -678,6 +679,7 @@ public class ProxyHandler extends User implements Handler {
|
|||
this.mode = packetIn.getGameType();
|
||||
this.sendToClient(new S07PacketRespawn(packetIn));
|
||||
// this.sendToClient(new S2EPacketCloseWindow());
|
||||
this.sendToServer(new C15PacketClientSettings(this.modelFlags));
|
||||
}
|
||||
|
||||
public void handleSetCompressionLevel(S46PacketSetCompressionLevel packetIn) {
|
||||
|
|
|
@ -8,41 +8,39 @@ import proxy.network.PacketBuffer;
|
|||
|
||||
public class C15PacketClientSettings implements Packet<ProxyHandler>
|
||||
{
|
||||
private String lang;
|
||||
private int view;
|
||||
private byte chatVisibility;
|
||||
private boolean enableColors;
|
||||
private int modelPartFlags;
|
||||
|
||||
/**
|
||||
* Reads the raw packet data from the data stream.
|
||||
*/
|
||||
public void readPacketData(PacketBuffer buf) throws IOException
|
||||
{
|
||||
this.lang = buf.readStringFromBuffer(7);
|
||||
this.view = buf.readByte();
|
||||
this.chatVisibility = buf.readByte();
|
||||
this.enableColors = buf.readBoolean();
|
||||
this.modelPartFlags = buf.readUnsignedByte();
|
||||
private byte modelPartFlags;
|
||||
|
||||
public C15PacketClientSettings() {
|
||||
}
|
||||
|
||||
public C15PacketClientSettings(byte modelFlags) {
|
||||
this.modelPartFlags = modelFlags;
|
||||
}
|
||||
|
||||
public void readPacketData(PacketBuffer buf) throws IOException
|
||||
{
|
||||
buf.readStringFromBuffer(7);
|
||||
buf.readByte();
|
||||
buf.readByte();
|
||||
buf.readBoolean();
|
||||
this.modelPartFlags = (byte)buf.readUnsignedByte();
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes the raw packet data to the data stream.
|
||||
*/
|
||||
public void writePacketData(PacketBuffer buf) throws IOException
|
||||
{
|
||||
buf.writeString(this.lang);
|
||||
buf.writeByte(this.view);
|
||||
buf.writeByte(this.chatVisibility);
|
||||
buf.writeBoolean(this.enableColors);
|
||||
buf.writeString("en_US");
|
||||
buf.writeByte(16);
|
||||
buf.writeByte(0);
|
||||
buf.writeBoolean(true);
|
||||
buf.writeByte(this.modelPartFlags);
|
||||
}
|
||||
|
||||
/**
|
||||
* Passes this Packet on to the NetHandler for processing.
|
||||
*/
|
||||
public void processPacket(ProxyHandler handler)
|
||||
{
|
||||
handler.processClientSettings(this);
|
||||
}
|
||||
|
||||
public byte getModelFlags() {
|
||||
return this.modelPartFlags;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,10 +16,10 @@ public class S02PacketChat implements Packet<ProxyHandler>
|
|||
{
|
||||
}
|
||||
|
||||
public S02PacketChat(String message, byte type)
|
||||
public S02PacketChat(String message, boolean hotbar)
|
||||
{
|
||||
this.chatComponent = Formatter.toJsonString(message);
|
||||
this.type = type;
|
||||
this.type = (byte)(hotbar ? 2 : 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue