mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2024-11-27 01:05:38 +00:00
command cooldowns
This commit is contained in:
parent
69fb21f57c
commit
ee44b5fb7f
@ -13,4 +13,6 @@ public @interface CommandPermissions
|
|||||||
SourceType source();
|
SourceType source();
|
||||||
|
|
||||||
boolean blockHostConsole() default false;
|
boolean blockHostConsole() default false;
|
||||||
|
|
||||||
|
int cooldown() default 0;
|
||||||
}
|
}
|
@ -7,7 +7,7 @@ import org.bukkit.command.Command;
|
|||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH)
|
@CommandPermissions(level = Rank.OP, source = SourceType.BOTH, cooldown = 30)
|
||||||
@CommandParameters(description = "Op everyone on the server, optionally change everyone's gamemode at the same time.", usage = "/<command> [-c | -s | -a]")
|
@CommandParameters(description = "Op everyone on the server, optionally change everyone's gamemode at the same time.", usage = "/<command> [-c | -s | -a]")
|
||||||
public class Command_opall extends FreedomCommand
|
public class Command_opall extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
@ -2,6 +2,7 @@ package me.totalfreedom.totalfreedommod.command;
|
|||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Timer;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Timer;
|
||||||
|
import java.util.TimerTask;
|
||||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||||
@ -20,6 +24,9 @@ public class FreedomCommandExecutor<C extends AeroCommandBase<?>> extends Abstra
|
|||||||
{
|
{
|
||||||
|
|
||||||
private final TotalFreedomMod plugin;
|
private final TotalFreedomMod plugin;
|
||||||
|
//
|
||||||
|
private Map<CommandSender, FreedomCommand> commandCooldown = new HashMap<>();
|
||||||
|
private final Timer timer = new Timer();
|
||||||
|
|
||||||
public FreedomCommandExecutor(TotalFreedomMod plugin, AeroCommandHandler<?> handler, String name, C command)
|
public FreedomCommandExecutor(TotalFreedomMod plugin, AeroCommandHandler<?> handler, String name, C command)
|
||||||
{
|
{
|
||||||
@ -76,9 +83,29 @@ public class FreedomCommandExecutor<C extends AeroCommandBase<?>> extends Abstra
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isOnCooldown(sender))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return commandBase.runCommand(sender, command, label, args);
|
boolean run = commandBase.runCommand(sender, command, label, args);
|
||||||
|
FreedomCommand c = getCommand();
|
||||||
|
CommandPermissions perms = c.getPerms();
|
||||||
|
if (perms.cooldown() > 0 && !plugin.al.isAdmin(sender))
|
||||||
|
{
|
||||||
|
commandCooldown.put(sender, c);
|
||||||
|
timer.schedule(new TimerTask()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
commandCooldown.remove(sender);
|
||||||
|
}
|
||||||
|
}, perms.cooldown() * 1000);
|
||||||
|
}
|
||||||
|
return run;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -162,6 +189,17 @@ public class FreedomCommandExecutor<C extends AeroCommandBase<?>> extends Abstra
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isOnCooldown(CommandSender sender)
|
||||||
|
{
|
||||||
|
final FreedomCommand command = getCommand();
|
||||||
|
if (commandCooldown.containsKey(sender) && commandCooldown.containsValue(command))
|
||||||
|
{
|
||||||
|
sender.sendMessage(ChatColor.RED + "You're on cooldown for this command.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public static class FreedomExecutorFactory implements AeroCommandExecutorFactory
|
public static class FreedomExecutorFactory implements AeroCommandExecutorFactory
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user