-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConfirmAPI.java
More file actions
59 lines (46 loc) · 1.81 KB
/
Copy pathConfirmAPI.java
File metadata and controls
59 lines (46 loc) · 1.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package ru.cwcode.cwutils.confirmable;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.concurrent.ConcurrentHashMap;
public class ConfirmAPI {
static ConcurrentHashMap<CommandSender, ConfirmRequest> requests = new ConcurrentHashMap<>();
public static ConfirmableBuilder requestBuilder(CommandSender sender, String confirmableString, long timeToConfirm) {
return new ConfirmableBuilder(sender, confirmableString, timeToConfirm);
}
public static String getString(Player player) {
return requests.get(player).required;
}
public static boolean senderAffected(Player player) {
return requests.containsKey(player);
}
public static void onSuccess(Player player) {
ConfirmRequest confirmRequest = requests.get(player);
confirmRequest.stopTimer();
Bukkit.getScheduler().runTask(confirmRequest.plugin, confirmRequest.onSuccess);
requests.remove(player);
}
public static class ConfirmableBuilder {
ConfirmRequest request;
public ConfirmableBuilder(CommandSender sender, String confirmableString, long ticksToRequest) {
request = new ConfirmRequest(sender, confirmableString, ticksToRequest);
}
public ConfirmableBuilder success(Runnable success) {
request.onSuccess = success;
return this;
}
public ConfirmableBuilder expired(Runnable expired) {
request.onExpired = expired;
return this;
}
public void register(JavaPlugin plugin) {
requests.put(request.sender, request);
request.startTimer(plugin);
if (!ChatOutListener.IS_REGISTERED) {
Bukkit.getPluginManager().registerEvents(new ChatOutListener(), plugin);
ChatOutListener.IS_REGISTERED = true;
}
}
}
}