mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2024-11-27 01:05:38 +00:00
Rework command interface for rollback.
This commit is contained in:
parent
3bcc4fd7a7
commit
b2eec1ef01
@ -1,9 +1,8 @@
|
||||
package me.StevenLawson.TotalFreedomMod.Commands;
|
||||
|
||||
import me.StevenLawson.TotalFreedomMod.TFM_RollbackManager;
|
||||
import me.StevenLawson.TotalFreedomMod.TFM_UserList;
|
||||
import me.StevenLawson.TotalFreedomMod.TFM_Util;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -15,74 +14,61 @@ public class Command_rollback extends TFM_Command
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
if (args.length > 2)
|
||||
if (args.length == 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (args.length == 1 && args[0].equalsIgnoreCase("purgeall"))
|
||||
{
|
||||
TFM_Util.adminAction(sender.getName(), "Puring all rollback data", false);
|
||||
playerMsg("Purged entries for " + TFM_RollbackManager.purgeEntries() + " players.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("purge"))
|
||||
{
|
||||
OfflinePlayer p;
|
||||
try
|
||||
if (args[0].equalsIgnoreCase("purgeall"))
|
||||
{
|
||||
p = getPlayer(args[1]);
|
||||
}
|
||||
catch (CantFindPlayerException ex)
|
||||
{
|
||||
p = server.getOfflinePlayer(args[1]);
|
||||
if (!p.hasPlayedBefore())
|
||||
{
|
||||
playerMsg("Player is not online, or never joined the server.", ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!TFM_RollbackManager.canRollback(p.getName()))
|
||||
{
|
||||
playerMsg("No rollback data found for that player", ChatColor.RED);
|
||||
TFM_Util.adminAction(sender.getName(), "Purging all rollback history.", false);
|
||||
playerMsg("Purged all rollback history for " + TFM_RollbackManager.purgeEntries() + " players.");
|
||||
}
|
||||
else
|
||||
{
|
||||
playerMsg("Purged " + TFM_RollbackManager.purgeEntries(p.getName()) + " entries.");
|
||||
return true;
|
||||
String playerName = getPlayerName(args[0]);
|
||||
TFM_Util.adminAction(sender.getName(), "Rolling back player: " + playerName, false);
|
||||
playerMsg("Rolled back " + TFM_RollbackManager.purgeEntries(playerName) + " edits for " + playerName + ".");
|
||||
}
|
||||
}
|
||||
|
||||
if (args.length != 1)
|
||||
else if (args.length == 2)
|
||||
{
|
||||
if (args[0].equalsIgnoreCase("purge"))
|
||||
{
|
||||
String playerName = getPlayerName(args[1]);
|
||||
playerMsg("Purged " + TFM_RollbackManager.purgeEntries(playerName) + " rollback history entries for " + playerName + ".");
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
OfflinePlayer p;
|
||||
return true;
|
||||
}
|
||||
|
||||
private String getPlayerName(String playerNameInput)
|
||||
{
|
||||
String playerName = null;
|
||||
|
||||
try
|
||||
{
|
||||
p = getPlayer(args[0]);
|
||||
Player player = getPlayer(playerNameInput);
|
||||
if (player != null)
|
||||
{
|
||||
playerName = player.getName();
|
||||
}
|
||||
}
|
||||
catch (CantFindPlayerException ex)
|
||||
{
|
||||
p = server.getOfflinePlayer(args[0]);
|
||||
if (!p.hasPlayedBefore())
|
||||
{
|
||||
playerMsg("Player is not online, or never joined the server.", ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!TFM_RollbackManager.canRollback(p.getName()))
|
||||
if (playerName == null)
|
||||
{
|
||||
playerMsg("Player has no rollback data set.", ChatColor.RED);
|
||||
return true;
|
||||
playerName = TFM_UserList.getInstance(plugin).searchByPartialName(playerNameInput);
|
||||
}
|
||||
|
||||
TFM_Util.adminAction(sender.getName(), "Rolling back player: " + p.getName(), false);
|
||||
playerMsg("Rolled back " + TFM_RollbackManager.rollback(p.getName()) + " blocks");
|
||||
return true;
|
||||
return playerName;
|
||||
}
|
||||
}
|
||||
|
@ -40,18 +40,16 @@ public class TFM_RollbackManager
|
||||
|
||||
public static int purgeEntries()
|
||||
{
|
||||
int count = 0;
|
||||
Iterator<List<TFM_RollbackManager_Entry>> it = PLAYER_HISTORY_MAP.values().iterator();
|
||||
while (it.hasNext())
|
||||
{
|
||||
List<TFM_RollbackManager_Entry> playerEntryList = it.next();
|
||||
if (playerEntryList != null)
|
||||
{
|
||||
count += playerEntryList.size();
|
||||
playerEntryList.clear();
|
||||
}
|
||||
}
|
||||
return count;
|
||||
return PLAYER_HISTORY_MAP.size();
|
||||
}
|
||||
|
||||
public static int purgeEntries(String playerName)
|
||||
|
@ -4,8 +4,10 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -125,6 +127,25 @@ public class TFM_UserList
|
||||
exportList();
|
||||
}
|
||||
|
||||
public String searchByPartialName(String needle)
|
||||
{
|
||||
needle = needle.toLowerCase().trim();
|
||||
Integer minEditDistance = null;
|
||||
String minEditMatch = null;
|
||||
Iterator<String> it = _userlist.keySet().iterator();
|
||||
while (it.hasNext())
|
||||
{
|
||||
String haystack = it.next();
|
||||
int editDistance = StringUtils.getLevenshteinDistance(needle, haystack.toLowerCase());
|
||||
if (minEditDistance == null || minEditDistance.intValue() > editDistance)
|
||||
{
|
||||
minEditDistance = editDistance;
|
||||
minEditMatch = haystack;
|
||||
}
|
||||
}
|
||||
return minEditMatch;
|
||||
}
|
||||
|
||||
public class TFM_UserListEntry
|
||||
{
|
||||
private String _username;
|
||||
|
Loading…
Reference in New Issue
Block a user