EDIT: Not done, just don't like people looking at my shitwork
Command.java
Code:
public interface Command
{
public void execute(Client player, String[] args);
}
CommandListener.java
Code:
public class CommandListener implements PacketType
{
public enum Rank
{
MEMBER,
MODERATOR,
ADMIN,
OWNER,
CODER,
DONATOR;
public String getCleanName()
{
return Misc.capitalize(name().toLowerCase());
}
}
public enum Commands
{
SETRANK("Sets any characters rank.", Rank.CODER,
new Command()
{
@Override
public void execute(Client player, String[] args)
{
if(args.length != 3)
{
return;
}
Client PlayerToRankUp = PlayerHandler.get(args[1].replace('_', ' '));
PlayerToRankUp.playerRights = Integer.parseInt(args[2]);
PlayerToRankUp.disconnected = true;
player.sendMessage("You have set "+Misc.capitalize(PlayerToRankUp.playerName)+" to player rights " +PlayerToRankUp.playerRights+".");
}
}),
HELP("Requests help from any online staff members.", Rank.MEMBER,
new Command()
{
@Override
public void execute(Client player, String[] args)
{
player.sendMessage("You have requested help from "+ MassMessage.MessageAllStaff("" + Misc.capitalize(player.playerName) + " is requesting assistance!") +" staff member(s).");
player.sendMessage("Please wait for a staff member to reply.");
}
}),
PNPC("Changes you into an npc, specified by the id entered.", Rank.ADMIN,
new Command()
{
@Override
public void execute(Client player, String[]args)
{
int npc = Integer.parseInt(args[1]);
if (npc < 9999)
{
player.npcId2 = npc;
player.isNpc = true;
player.updateRequired = true;
player.appearanceUpdateRequired = true;
}
}
}),
UNPC("Reverts you to your normal player.", Rank.ADMIN,
new Command()
{
@Override
public void execute(Client player, String[] args)
{
player.isNpc = false;
player.updateRequired = true;
player.appearanceUpdateRequired = true;
}
}),
COMMANDS("Gives you a list of all the commands Ingame.", Rank.MEMBER,
new Command()
{
@Override
public void execute(Client player, String[] args)
{
if(player.checkBusy())
{
return;
}
player.getPA().closeAllWindows();
int index = 8144;
for(int i = index; i < 8195; i++)
{
player.getPA().sendFrame126("", i);
}
player.getPA().sendFrame126("@[email protected]" + Config.SERVER_NAME + " Commands", index+=2);
for(Rank r : Rank.values())
{
if(hasRights(player, r))
index += (printCommands(player, r, index) - index);
}
player.getPA().showInterface(8134);
}
});
private String description;
private Rank rank;
private Command c;
Commands(String description, Rank rank, Command c)
{
this.description = description;
this.rank = rank;
this.c = c;
}
public String getCommandName()
{
return name().toLowerCase();
}
public String getDescription()
{
return description;
}
public Rank getRank()
{
return rank;
}
public Command getCommand()
{
return c;
}
}
public static int printCommands(Client player, Rank r, int index)
{
index++;
player.getPA().sendFrame126("@[email protected]" + r.getCleanName() + " Commands: ", index++);
for(Commands c : Commands.values())
{
if(c.getRank().equals(r))
{
player.getPA().sendFrame126("@[email protected]" + c.getCommandName() + " - " + c.getDescription(), index++);
}
}
return index;
}
public static boolean hasRights(Client player, Rank r)
{
Byte byte_Rank = (byte)r.ordinal();
Rank playerRank = Rank.values()[player.playerRights];
if(playerRank.equals(r))
{
return true;
}
if(playerRank.ordinal() < Rank.DONATOR.ordinal())
{
if(playerRank.ordinal() > byte_Rank)
{
return true;
}
}
else
{
if(r.equals(Rank.MEMBER))
{
return true;
}
if(byte_Rank >= Rank.DONATOR.ordinal())
{
if(playerRank.ordinal() > byte_Rank ||
(playerRank.ordinal() > Rank.MEMBER.ordinal() &&
playerRank.ordinal() < Rank.DONATOR.ordinal()))
{
return true;
}
}
}
return false;
}
@Override
public void processPacket(Client player, int packetType, int packetSize)
{
String playerCommand = player.getInStream().readString();
if (Config.SERVER_DEBUG)
{
Misc.println(player.playerName + " playerCommand: " + playerCommand);
}
if(ClanChatHandler.chat(player, playerCommand))
{
return;
}
String args[] = playerCommand.split(" ");
for(Commands c : Commands.values())
{
if(args[0].equalsIgnoreCase(c.getCommandName()))
{
if(hasRights(player, c.getRank()))
{
c.getCommand().execute(player, args);
}
}
}
}
}
Talked to lare and he helped me think of a better way~
so like idunno 50% to him