mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2025-07-04 21:36:41 +00:00
Multiple birds, one commit
Here's a list of things I've fixed/mitigated: - Range bans in ban-related commands (FS-209) - Bug in /tempban where the duration in the broadcast is always wrong - Over-complicated handling of /tempban durations (instead of trying to process them and silently fail, it'll flat out say that an invalid duration is well, invalid) - Inconsistent "player not found" messages in banning commands - (Mitigates) weird issue with case-sensitive usernames in banning commands when the server has restarted since a player last joined - (Mitigates) banned IPs being inaccurate when a player was banned offline whilst containing multiple IPs in their playerdata - Redoing how MovementValidator handled positive and negative infinity exploit items, completely removing the need for Mojangson in the first place and allowing the plugin to run without Essentials once more in the process (related to FS-406) Here is what I've done in addition: - Merged /tban and /noob into /tempban, which now bans for 5 minutes by default (FS-205)
This commit is contained in:
@ -1,12 +1,9 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
||||
import com.earth2me.essentials.User;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -22,20 +19,33 @@ public class Command_unban extends FreedomCommand
|
||||
if (args.length > 0)
|
||||
{
|
||||
String username;
|
||||
final PlayerData entry = plugin.pl.getData(args[0]);
|
||||
String ip;
|
||||
|
||||
if (entry == null)
|
||||
// Gets the IP using Essentials data if available
|
||||
if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null)
|
||||
{
|
||||
msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
|
||||
return true;
|
||||
User essUser = plugin.esb.getEssentialsUser(args[0]);
|
||||
//
|
||||
username = essUser.getName();
|
||||
ip = essUser.getLastLoginAddress();
|
||||
}
|
||||
// Secondary method - using Essentials if available
|
||||
else
|
||||
{
|
||||
final PlayerData entry = plugin.pl.getData(args[0]);
|
||||
if (entry == null)
|
||||
{
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
return true;
|
||||
}
|
||||
username = entry.getName();
|
||||
ip = entry.getIps().get(0);
|
||||
}
|
||||
|
||||
username = entry.getName();
|
||||
final List<String> ips = new ArrayList<>(entry.getIps());
|
||||
|
||||
FUtil.adminAction(sender.getName(), "Unbanning " + username, true);
|
||||
msg(username + " has been unbanned along with the following IPs: " + StringUtils.join(ips, ", "));
|
||||
plugin.bm.removeBan(plugin.bm.getByUsername(username));
|
||||
plugin.bm.removeBan(plugin.bm.getByIp(ip));
|
||||
msg(username + " has been unbanned along with the IP: " + ip);
|
||||
|
||||
if (args.length >= 2)
|
||||
{
|
||||
@ -45,20 +55,6 @@ public class Command_unban extends FreedomCommand
|
||||
msg("Restored edits for: " + username);
|
||||
}
|
||||
}
|
||||
|
||||
for (String ip : ips)
|
||||
{
|
||||
Ban ban = plugin.bm.getByIp(ip);
|
||||
if (ban != null)
|
||||
{
|
||||
plugin.bm.removeBan(ban);
|
||||
}
|
||||
ban = plugin.bm.getByIp(FUtil.getFuzzyIp(ip));
|
||||
if (ban != null)
|
||||
{
|
||||
plugin.bm.removeBan(ban);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user