Add checkcooldown command
This commit is contained in:
parent
9cf41f4f01
commit
55ba20cdb6
|
@ -35,6 +35,7 @@ import cz.boosik.boosCooldown.Listeners.BoosPlayerToggleSprintListener;
|
|||
import cz.boosik.boosCooldown.Listeners.BoosSignChangeListener;
|
||||
import cz.boosik.boosCooldown.Listeners.BoosSignInteractListener;
|
||||
import cz.boosik.boosCooldown.Managers.BoosConfigManager;
|
||||
import cz.boosik.boosCooldown.Managers.BoosCoolDownManager;
|
||||
import cz.boosik.boosCooldown.Managers.BoosLimitManager;
|
||||
import cz.boosik.boosCooldown.Runnables.BoosGlobalLimitResetRunnable;
|
||||
import net.milkbowl.vault.Vault;
|
||||
|
@ -209,6 +210,25 @@ public class BoosCoolDown extends JavaPlugin implements Runnable {
|
|||
return true;
|
||||
}
|
||||
} else if (args.length == 2) {
|
||||
if (sender.hasPermission("booscooldowns.check.cooldown") && args[0].equalsIgnoreCase("checkcooldown")) {
|
||||
final String regexCommand = BoosCoolDownListener.getRegexCommand(args[1], BoosConfigManager.getCommands((Player)sender));
|
||||
if (BoosCoolDownManager.getTime((Player) sender, regexCommand) == null) {
|
||||
BoosChat.sendMessageToCommandSender(sender, BoosConfigManager.getCheckCoolDownOkMessage().replaceAll("&command&",
|
||||
args[1]));
|
||||
} else {
|
||||
final long secondsBetween = BoosCoolDownManager.getSecondsBetween(BoosCoolDownManager.getTime((Player) sender, regexCommand));
|
||||
final int coolDown = BoosConfigManager.getCoolDown(regexCommand, (Player) sender);
|
||||
if (secondsBetween > coolDown) {
|
||||
BoosChat.sendMessageToCommandSender(sender, BoosConfigManager.getCheckCoolDownOkMessage().replaceAll("&command&",
|
||||
args[1]));
|
||||
} else {
|
||||
BoosChat.sendMessageToCommandSender(sender,
|
||||
BoosCoolDownManager.getFormatedCooldownMessage(args[1], coolDown, secondsBetween,
|
||||
BoosConfigManager.getCheckCoolDownMessage()));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
final String jmeno = args[1];
|
||||
final Player player = Bukkit.getPlayerExact(jmeno);
|
||||
final UUID uuid = player.getUniqueId();
|
||||
|
|
|
@ -251,47 +251,41 @@ public class BoosCoolDownListener implements Listener {
|
|||
event.setMessage(originalCommand);
|
||||
}
|
||||
if (on && commands != null) {
|
||||
for (final String group : commands) {
|
||||
final String group2 = group.replace("*", ".*");
|
||||
if (originalCommand.matches("(?i)" + group2)) {
|
||||
regexCommad = group;
|
||||
if (BoosConfigManager.getWarmupEnabled()) {
|
||||
warmupTime = BoosConfigManager.getWarmUp(regexCommad,
|
||||
player);
|
||||
}
|
||||
if (BoosConfigManager.getCooldownEnabled()) {
|
||||
cooldownTime = BoosConfigManager.getCoolDown(
|
||||
regexCommad, player);
|
||||
}
|
||||
if (BoosConfigManager.getPriceEnabled()) {
|
||||
price = BoosConfigManager.getPrice(regexCommad, player);
|
||||
}
|
||||
if (BoosConfigManager.getXpPriceEnabled()) {
|
||||
xpPrice = BoosConfigManager.getXpPrice(regexCommad,
|
||||
player);
|
||||
xpRequirement = BoosConfigManager.getXpRequirement(regexCommad, player);
|
||||
}
|
||||
if (BoosConfigManager.getPlayerPointsEnabled()) {
|
||||
playerPoints = BoosConfigManager.getPlayerPointsPrice(regexCommad,
|
||||
player);
|
||||
}
|
||||
if (BoosConfigManager.getItemCostEnabled()) {
|
||||
item = BoosConfigManager.getItemCostItem(regexCommad,
|
||||
player);
|
||||
name = BoosConfigManager.getItemCostName(regexCommad,
|
||||
player);
|
||||
lore = BoosConfigManager.getItemCostLore(regexCommad,
|
||||
player);
|
||||
count = BoosConfigManager.getItemCostCount(regexCommad,
|
||||
player);
|
||||
enchants = BoosConfigManager.getItemCostEnchants(regexCommad,
|
||||
player);
|
||||
}
|
||||
if (BoosConfigManager.getLimitEnabled()) {
|
||||
limit = BoosConfigManager.getLimit(regexCommad, player);
|
||||
}
|
||||
break;
|
||||
}
|
||||
regexCommad = getRegexCommand(originalCommand, commands);
|
||||
if (BoosConfigManager.getWarmupEnabled()) {
|
||||
warmupTime = BoosConfigManager.getWarmUp(regexCommad,
|
||||
player);
|
||||
}
|
||||
if (BoosConfigManager.getCooldownEnabled()) {
|
||||
cooldownTime = BoosConfigManager.getCoolDown(
|
||||
regexCommad, player);
|
||||
}
|
||||
if (BoosConfigManager.getPriceEnabled()) {
|
||||
price = BoosConfigManager.getPrice(regexCommad, player);
|
||||
}
|
||||
if (BoosConfigManager.getXpPriceEnabled()) {
|
||||
xpPrice = BoosConfigManager.getXpPrice(regexCommad,
|
||||
player);
|
||||
xpRequirement = BoosConfigManager.getXpRequirement(regexCommad, player);
|
||||
}
|
||||
if (BoosConfigManager.getPlayerPointsEnabled()) {
|
||||
playerPoints = BoosConfigManager.getPlayerPointsPrice(regexCommad,
|
||||
player);
|
||||
}
|
||||
if (BoosConfigManager.getItemCostEnabled()) {
|
||||
item = BoosConfigManager.getItemCostItem(regexCommad,
|
||||
player);
|
||||
name = BoosConfigManager.getItemCostName(regexCommad,
|
||||
player);
|
||||
lore = BoosConfigManager.getItemCostLore(regexCommad,
|
||||
player);
|
||||
count = BoosConfigManager.getItemCostCount(regexCommad,
|
||||
player);
|
||||
enchants = BoosConfigManager.getItemCostEnchants(regexCommad,
|
||||
player);
|
||||
}
|
||||
if (BoosConfigManager.getLimitEnabled()) {
|
||||
limit = BoosConfigManager.getLimit(regexCommad, player);
|
||||
}
|
||||
if (!BoosConfigManager.getConfirmCommandEnabled(player) || (commandQueue
|
||||
.containsKey(uuid + "@" + originalCommand) && commandQueue.get(uuid + "@" + originalCommand))) {
|
||||
|
@ -378,6 +372,16 @@ public class BoosCoolDownListener implements Listener {
|
|||
event.setMessage(originalCommand);
|
||||
}
|
||||
|
||||
public static String getRegexCommand(final String originalCommand, final Set<String> commands) {
|
||||
for (final String group : commands) {
|
||||
final String group2 = group.replace("*", ".*");
|
||||
if (originalCommand.matches("(?i)" + group2)) {
|
||||
return group;
|
||||
}
|
||||
}
|
||||
return originalCommand;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL)
|
||||
private void onPlayerChatEvent(final AsyncPlayerChatEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
|
|
|
@ -227,6 +227,14 @@ public class BoosConfigManager {
|
|||
return conf.getString("options.messages.cooling_down", "&6Wait&e &seconds& seconds&6 before you can use command&e &command& &6again.&f");
|
||||
}
|
||||
|
||||
public static String getCheckCoolDownMessage() {
|
||||
return conf.getString("options.messages.check_cooldown", "&6Command&e &command& &6is still on cooldown. It will be available again in&e &seconds& &unit&.&f");
|
||||
}
|
||||
|
||||
public static String getCheckCoolDownOkMessage() {
|
||||
return conf.getString("options.messages.check_cooldown_ok", "&6Command&e &command& &6is available.");
|
||||
}
|
||||
|
||||
static Set<String> getCooldowns(final Player player) {
|
||||
final String cool = getCommandGroup(player);
|
||||
return conf.getConfigurationSection("commands.groups." + cool).getKeys(false);
|
||||
|
|
|
@ -23,11 +23,7 @@ public class BoosCoolDownManager {
|
|||
if (lastTime == null) {
|
||||
return false;
|
||||
}
|
||||
final Calendar calcurrTime = Calendar.getInstance();
|
||||
calcurrTime.setTime(getCurrTime());
|
||||
final Calendar callastTime = Calendar.getInstance();
|
||||
callastTime.setTime(lastTime);
|
||||
final long secondsBetween = secondsBetween(callastTime, calcurrTime);
|
||||
final long secondsBetween = getSecondsBetween(lastTime);
|
||||
return (secondsBetween <= time) && secondsBetween != 0;
|
||||
}
|
||||
|
||||
|
@ -48,11 +44,7 @@ public class BoosCoolDownManager {
|
|||
}
|
||||
return false;
|
||||
} else {
|
||||
final Calendar calcurrTime = Calendar.getInstance();
|
||||
calcurrTime.setTime(getCurrTime());
|
||||
final Calendar callastTime = Calendar.getInstance();
|
||||
callastTime.setTime(lastTime);
|
||||
final long secondsBetween = secondsBetween(callastTime, calcurrTime);
|
||||
final long secondsBetween = getSecondsBetween(lastTime);
|
||||
long waitSeconds = coolDownSeconds - secondsBetween;
|
||||
long waitMinutes = (long) Math.floor(waitSeconds / 60.0);
|
||||
final long waitHours = (long) Math.floor(waitMinutes / 60.0);
|
||||
|
@ -129,7 +121,7 @@ public class BoosCoolDownManager {
|
|||
}
|
||||
}
|
||||
|
||||
private static Date getTime(final Player player, final String regexCommand) {
|
||||
public static Date getTime(final Player player, final String regexCommand) {
|
||||
final int pre2 = regexCommand.toLowerCase().hashCode();
|
||||
String confTime = "";
|
||||
confTime = BoosConfigManager.getConfusers().getString(
|
||||
|
@ -158,47 +150,12 @@ public class BoosCoolDownManager {
|
|||
if (lastTime == null) {
|
||||
return true;
|
||||
} else {
|
||||
final Calendar calcurrTime = Calendar.getInstance();
|
||||
calcurrTime.setTime(getCurrTime());
|
||||
final Calendar callastTime = Calendar.getInstance();
|
||||
callastTime.setTime(lastTime);
|
||||
final long secondsBetween = secondsBetween(callastTime, calcurrTime);
|
||||
long waitSeconds = time - secondsBetween;
|
||||
long waitMinutes = (long) Math.floor(waitSeconds / 60.0);
|
||||
final long waitHours = (long) Math.floor(waitMinutes / 60.0);
|
||||
final long secondsBetween = getSecondsBetween(lastTime);
|
||||
if (secondsBetween > time) {
|
||||
return true;
|
||||
} else {
|
||||
String msg = BoosConfigManager.getCoolDownMessage();
|
||||
final StringBuilder stringBuilder = new StringBuilder();
|
||||
msg = msg.replaceAll("&command&", originalCommand);
|
||||
if (waitSeconds >= 3600) {
|
||||
stringBuilder.append(waitHours);
|
||||
stringBuilder.append(" ");
|
||||
stringBuilder.append(BoosConfigManager.getUnitHoursMessage());
|
||||
stringBuilder.append(", ");
|
||||
waitSeconds = waitSeconds - (waitHours * 3600);
|
||||
}
|
||||
if (waitSeconds >= 60) {
|
||||
waitMinutes = waitMinutes - (waitHours * 60);
|
||||
stringBuilder.append(waitMinutes);
|
||||
stringBuilder.append(" ");
|
||||
stringBuilder.append(BoosConfigManager.getUnitMinutesMessage());
|
||||
stringBuilder.append(", ");
|
||||
waitSeconds = waitSeconds - (waitMinutes * 60);
|
||||
}
|
||||
String secs = Long.toString(waitSeconds);
|
||||
if (secs.equals("0")) {
|
||||
secs = "1";
|
||||
}
|
||||
stringBuilder.append(secs);
|
||||
stringBuilder.append(" ");
|
||||
stringBuilder.append(BoosConfigManager.getUnitSecondsMessage());
|
||||
|
||||
msg = msg.replaceAll("&seconds&", stringBuilder.toString());
|
||||
msg = msg.replaceAll("&unit&", "");
|
||||
msg = msg.replaceAll(" +", " ");
|
||||
|
||||
msg = getFormatedCooldownMessage(originalCommand, time, secondsBetween, msg);
|
||||
BoosChat.sendMessageToPlayer(player, msg);
|
||||
return false;
|
||||
}
|
||||
|
@ -207,6 +164,49 @@ public class BoosCoolDownManager {
|
|||
return true;
|
||||
}
|
||||
|
||||
public static String getFormatedCooldownMessage(final String originalCommand, final int time, final long secondsBetween, String msg) {
|
||||
long waitSeconds = time - secondsBetween;
|
||||
long waitMinutes = (long) Math.floor(waitSeconds / 60.0);
|
||||
final long waitHours = (long) Math.floor(waitMinutes / 60.0);
|
||||
final StringBuilder stringBuilder = new StringBuilder();
|
||||
msg = msg.replaceAll("&command&", originalCommand);
|
||||
if (waitSeconds >= 3600) {
|
||||
stringBuilder.append(waitHours);
|
||||
stringBuilder.append(" ");
|
||||
stringBuilder.append(BoosConfigManager.getUnitHoursMessage());
|
||||
stringBuilder.append(", ");
|
||||
waitSeconds = waitSeconds - (waitHours * 3600);
|
||||
}
|
||||
if (waitSeconds >= 60) {
|
||||
waitMinutes = waitMinutes - (waitHours * 60);
|
||||
stringBuilder.append(waitMinutes);
|
||||
stringBuilder.append(" ");
|
||||
stringBuilder.append(BoosConfigManager.getUnitMinutesMessage());
|
||||
stringBuilder.append(", ");
|
||||
waitSeconds = waitSeconds - (waitMinutes * 60);
|
||||
}
|
||||
String secs = Long.toString(waitSeconds);
|
||||
if (secs.equals("0")) {
|
||||
secs = "1";
|
||||
}
|
||||
stringBuilder.append(secs);
|
||||
stringBuilder.append(" ");
|
||||
stringBuilder.append(BoosConfigManager.getUnitSecondsMessage());
|
||||
|
||||
msg = msg.replaceAll("&seconds&", stringBuilder.toString());
|
||||
msg = msg.replaceAll("&unit&", "");
|
||||
msg = msg.replaceAll(" +", " ");
|
||||
return msg;
|
||||
}
|
||||
|
||||
public static long getSecondsBetween(final Date lastTime) {
|
||||
final Calendar calcurrTime = Calendar.getInstance();
|
||||
calcurrTime.setTime(getCurrTime());
|
||||
final Calendar callastTime = Calendar.getInstance();
|
||||
callastTime.setTime(lastTime);
|
||||
return secondsBetween(callastTime, calcurrTime);
|
||||
}
|
||||
|
||||
private static long secondsBetween(final Calendar startDate, final Calendar endDate) {
|
||||
long secondsBetween = 0;
|
||||
secondsBetween = (endDate.getTimeInMillis() - startDate
|
||||
|
|
|
@ -64,6 +64,8 @@ options:
|
|||
gamemode.&f'
|
||||
cooling_down: '&6Wait&e &seconds& &unit&&6 before you can use command&e &command&
|
||||
&6again.&f'
|
||||
cooldown_check: '&6Command&e &command& &6is still on cooldown. It will be available again in&e &seconds& &unit&.&f'
|
||||
check_cooldown_ok: '&6Command&e &command& &6is available.'
|
||||
warming_up: '&6Wait&e &seconds& &unit&&6 before command&e &command& &6has warmed
|
||||
up.&f'
|
||||
warmup_already_started: '&6Warm-Up process for&e &command& &6has already started.&f'
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
name: boosCooldowns
|
||||
main: cz.boosik.boosCooldown.BoosCoolDown
|
||||
version: 3.17.0
|
||||
version: 3.17.1
|
||||
api-version: 1.13
|
||||
authors: [LordBoos (boosik)]
|
||||
softdepend: [Vault, PlayerPoints]
|
||||
|
@ -114,4 +114,7 @@ permissions:
|
|||
default: false
|
||||
booscooldowns.signs.server.place:
|
||||
description: Player can place/create boosCooldowns signs (marked as server on second line). !!WARNING!! With this permission, player can create sign with commands that are run as if used from console!
|
||||
default: false
|
||||
default: false
|
||||
booscooldowns.check.cooldown:
|
||||
description: Player can use "/booscooldowns checkcooldown [command]" to check if a command is still on cooldown or not.
|
||||
default: true
|
2
pom.xml
2
pom.xml
|
@ -11,7 +11,7 @@
|
|||
<packaging>pom</packaging>
|
||||
<url>http://maven.apache.org</url>
|
||||
<properties>
|
||||
<boosCooldowns.version>3.17.0</boosCooldowns.version>
|
||||
<boosCooldowns.version>3.17.1</boosCooldowns.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<minecraft.version>1.16.1</minecraft.version>
|
||||
|
|
Loading…
Reference in New Issue