Skip to content

Commit

Permalink
[BREAKING] Switch ExemptionManager to UUID use.
Browse files Browse the repository at this point in the history
Removes access by name and entity-id for now. Access by name might be
re-added, though any kind of mappings will likely be maintained
somewhere near DataManager.
  • Loading branch information
asofold committed Jan 19, 2015
1 parent e6e8bf7 commit 33cd108
Show file tree
Hide file tree
Showing 5 changed files with 155 additions and 261 deletions.
Expand Up @@ -2,6 +2,7 @@

import java.util.LinkedList;
import java.util.List;
import java.util.UUID;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
Expand All @@ -17,33 +18,51 @@

public class ExemptionsCommand extends BaseCommand {

public ExemptionsCommand(JavaPlugin plugin) {
super(plugin, "exemptions", Permissions.COMMAND_EXEMPTIONS, new String[]{"exe"});
}

@Override
public boolean onCommand(CommandSender sender, Command command,
String label, String[] args) {
if (args.length != 2) return false;
String playerName = args[1].trim();
Player player = DataManager.getPlayer(playerName);
if (player != null) playerName = player.getName();
final List<String> entries = new LinkedList<String>();
for (CheckType type : CheckType.values()){
if (NCPExemptionManager.isExempted(playerName, type)) entries.add(type.toString());
}
if (entries.isEmpty()) sender.sendMessage(TAG + "No exemption entries available for " + playerName +" .");
else sender.sendMessage(TAG + "Exemptions for " + playerName + ": " + StringUtil.join(entries, ", "));
return true;
}

/* (non-Javadoc)
* @see fr.neatmonster.nocheatplus.command.AbstractCommand#onTabComplete(org.bukkit.command.CommandSender, org.bukkit.command.Command, java.lang.String, java.lang.String[])
*/
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
// Fill in players.
return null;
}
public ExemptionsCommand(JavaPlugin plugin) {
super(plugin, "exemptions", Permissions.COMMAND_EXEMPTIONS, new String[]{"exe"});
}

@Override
public boolean onCommand(CommandSender sender, Command command,
String label, String[] args) {
if (args.length != 2) return false;
String playerName = args[1].trim();
Player player = DataManager.getPlayer(playerName);
UUID id;
if (player != null) {
playerName = player.getName();
id = player.getUniqueId();
} else {
id = DataManager.getUUID(playerName);
}
final List<String> entries = new LinkedList<String>();
if (id == null) {
sender.sendMessage(TAG + "Not online nor a UUID: " + playerName);
return true;
} else {
for (CheckType type : CheckType.values()){
if (NCPExemptionManager.isExempted(id, type)) {
entries.add(type.toString());
}
}
}
if (entries.isEmpty()) {
sender.sendMessage(TAG + "No exemption entries available for " + playerName +" .");
}
else {
// TODO: Compress entries ?
sender.sendMessage(TAG + "Exemptions for " + playerName + ": " + StringUtil.join(entries, ", "));
}
return true;
}

/* (non-Javadoc)
* @see fr.neatmonster.nocheatplus.command.AbstractCommand#onTabComplete(org.bukkit.command.CommandSender, org.bukkit.command.Command, java.lang.String, java.lang.String[])
*/
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
// Fill in players.
return null;
}

}
Expand Up @@ -2,72 +2,83 @@

import java.util.Arrays;
import java.util.List;
import java.util.UUID;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

import fr.neatmonster.nocheatplus.checks.CheckType;
import fr.neatmonster.nocheatplus.command.CommandUtil;
import fr.neatmonster.nocheatplus.command.BaseCommand;
import fr.neatmonster.nocheatplus.command.CommandUtil;
import fr.neatmonster.nocheatplus.hooks.NCPExemptionManager;
import fr.neatmonster.nocheatplus.permissions.Permissions;
import fr.neatmonster.nocheatplus.players.DataManager;
import fr.neatmonster.nocheatplus.utilities.StringUtil;

public class UnexemptCommand extends BaseCommand {

public UnexemptCommand(JavaPlugin plugin) {
super(plugin, "unexempt", Permissions.COMMAND_UNEXEMPT);
}
public UnexemptCommand(JavaPlugin plugin) {
super(plugin, "unexempt", Permissions.COMMAND_UNEXEMPT);
}

@Override
public boolean onCommand(CommandSender sender, Command command,
String label, String[] args) {
// TODO: Reduce copy and paste by introducing some super class.
if (args.length < 2 || args.length > 3) return false;
String playerName = args[1];
final CheckType checkType;
if (args.length == 3){
try{
checkType = CheckType.valueOf(args[2].toUpperCase().replace('-', '_').replace('.', '_'));
} catch (Exception e){
sender.sendMessage(TAG + "Could not interpret: " + args[2]);
sender.sendMessage(TAG + "Check type should be one of: " + StringUtil.join(Arrays.asList(CheckType.values()), " | "));
return true;
}
}
else checkType = CheckType.ALL;
if (playerName.equals("*")){
// Unexempt all.
// TODO: might care to find players only ?
NCPExemptionManager.clear();
sender.sendMessage(TAG + "Removed exemptions for all players for checks: " + checkType);
return true;
}
// Find player.
final Player player = DataManager.getPlayer(playerName);
final UUID id;
if (player != null) {
playerName = player.getName();
id = player.getUniqueId();
} else {
id = DataManager.getUUID(playerName);
}
if (id == null) {
sender.sendMessage(TAG + "Not an online player nor a UUID: " + playerName);
} else {
NCPExemptionManager.unexempt(id, checkType);
sender.sendMessage(TAG + "Remove exemptions for " + playerName + " for checks: " + checkType);
}
return true;
}

@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args)
{
// At least complete CheckType
if (args.length == 3) return CommandUtil.getCheckTypeTabMatches(args[2]);
return null;
}

@Override
public boolean onCommand(CommandSender sender, Command command,
String label, String[] args) {
// TODO: Reduce copy and paste by introducing some super class.
if (args.length < 2 || args.length > 3) return false;
String playerName = args[1];
final CheckType checkType;
if (args.length == 3){
try{
checkType = CheckType.valueOf(args[2].toUpperCase().replace('-', '_').replace('.', '_'));
} catch (Exception e){
sender.sendMessage(TAG + "Could not interpret: " + args[2]);
sender.sendMessage(TAG + "Check type should be one of: " + StringUtil.join(Arrays.asList(CheckType.values()), " | "));
return true;
}
}
else checkType = CheckType.ALL;
if (playerName.equals("*")){
// Unexempt all.
// TODO: might care to find players only ?
NCPExemptionManager.clear();
sender.sendMessage(TAG + "Nobody will be exempted from: " + checkType);
return true;
}
// Find player.
final Player player = DataManager.getPlayer(playerName);
if (player != null) playerName = player.getName();
NCPExemptionManager.unexempt(playerName, checkType);
sender.sendMessage(TAG + "Player " + playerName + " will not be exempted from: " + checkType);
return true;
}

@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args)
{
// At least complete CheckType
if (args.length == 3) return CommandUtil.getCheckTypeTabMatches(args[2]);
return null;
}

/* (non-Javadoc)
* @see fr.neatmonster.nocheatplus.command.AbstractCommand#testPermission(org.bukkit.command.CommandSender, org.bukkit.command.Command, java.lang.String, java.lang.String[])
*/
@Override
public boolean testPermission(CommandSender sender, Command command, String alias, String[] args) {
return super.testPermission(sender, command, alias, args) || args.length >= 2 && args[1].trim().equalsIgnoreCase(sender.getName()) && sender.hasPermission(permission + ".self");
}
/* (non-Javadoc)
* @see fr.neatmonster.nocheatplus.command.AbstractCommand#testPermission(org.bukkit.command.CommandSender, org.bukkit.command.Command, java.lang.String, java.lang.String[])
*/
@Override
public boolean testPermission(CommandSender sender, Command command, String alias, String[] args) {
return super.testPermission(sender, command, alias, args) || args.length >= 2 && args[1].trim().equalsIgnoreCase(sender.getName()) && sender.hasPermission(permission + ".self");
}

}

0 comments on commit 33cd108

Please sign in to comment.