Created
September 28, 2020 19:23
-
-
Save zkingboos/0884efd7c0b7ef40e8db22b660c4e1e6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public final class DelayCommandExecutor implements CommandExecutor { | |
private final DelayService delayService = new DelayService(); | |
@Override | |
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { | |
final Player player = (Player) sender; | |
if(delayService.isPlayerInDelay(player)) { | |
final int remainPlayerDelay = delayService.getRemainPlayerDelay(player); | |
player.sendMessage(String.format("You're in delay, remain time %ss%n", remainPlayerDelay)); | |
return true; | |
} | |
//TODO: Logic here | |
delayService.updatePlayerDelayToRegistry(player, 10); | |
return true; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public final class DelayService { | |
private final Map<String, Integer> delayRegistry; | |
public DelayService() { | |
this.delayRegistry = new HashMap<>(); | |
} | |
public int getPlayerDelayFromRegistry(Player player) { | |
final Integer cachedDelay = delayRegistry.get(player.getName()); | |
return cachedDelay != null | |
? cachedDelay | |
: 0; | |
} | |
public void updatePlayerDelayToRegistry(Player player, int delay) { | |
final int totalDelay = (int) (System.currentTimeMillis() / 1000) + delay; | |
delayRegistry.put(player.getName(), totalDelay); | |
} | |
public int getRemainPlayerDelay(Player player) { | |
final int playerDelayFromRegistry = getPlayerDelayFromRegistry(player); | |
return (int) (playerDelayFromRegistry - (System.currentTimeMillis() / 1000)); | |
} | |
public boolean isPlayerInDelay(Player player) { | |
return getPlayerDelayFromRegistry(player) >= (System.currentTimeMillis() / 1000); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment