-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathRPGMethods.java
More file actions
117 lines (100 loc) · 4.1 KB
/
Copy pathRPGMethods.java
File metadata and controls
117 lines (100 loc) · 4.1 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package com.projectkorra.rpg;
import net.luckperms.api.node.Node;
import org.bukkit.NamespacedKey;
import org.bukkit.Registry;
import org.bukkit.Sound;
import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarStyle;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Nullable;
import java.time.Duration;
import java.util.Arrays;
import java.util.Locale;
import static com.projectkorra.rpg.ProjectKorraRPG.luckPermsAPI;
public class RPGMethods {
/**
* @param player Player who will lose permission
* @param permission Permission to remove from the player as a string
* @author CrashCringle
* @Description This method is a simplified way of removing
* Permissions to players via LuckPerms
*/
public static void removePermission(final Player player, final String permission) {
if (luckPermsAPI == null)
return;
luckPermsAPI.getUserManager().getUser(player.getUniqueId()).data()
.remove(Node.builder(permission).build());
luckPermsAPI.getUserManager().saveUser(luckPermsAPI.getUserManager().getUser(player.getUniqueId()));
}
/**
* @param player Player who will receive permission
* @param permission Permission to give to the player as a string
* @author CrashCringle
* @Description This method is a simplified way of adding
* Permissions to players via LuckPerms
*/
public static void addPermission(final Player player, final String permission) {
if (luckPermsAPI == null)
return;
luckPermsAPI.getUserManager().getUser(player.getUniqueId()).data()
.add(Node.builder(permission).build());
luckPermsAPI.getUserManager().saveUser(luckPermsAPI.getUserManager().getUser(player.getUniqueId()));
}
public static BarColor convertStringToBarColor(final String colorStr) {
if (colorStr == null) {
return BarColor.RED;
}
try {
return BarColor.valueOf(colorStr.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException exception) {
ProjectKorraRPG.getPlugin().getLogger().warning("Failed BarColor conversion for String: '" + colorStr + "'! Possible values: " + Arrays.toString(BarColor.values()));
return null;
}
}
public static BarStyle convertStringToBarStyle(final String styleStr) {
if (styleStr == null) {
return BarStyle.SOLID;
}
try {
return BarStyle.valueOf(styleStr.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException exception) {
ProjectKorraRPG.getPlugin().getLogger().warning("Failed BarColor conversion for String: '" + styleStr + "'! Possible values: " + Arrays.toString(BarStyle.values()));
return null;
}
}
public static @Nullable Sound resolveSound(final String raw) {
if (raw == null) return null;
String soundId = raw.trim().toLowerCase(Locale.ROOT);
if (soundId.isEmpty()) return null;
NamespacedKey key = soundId.contains(":") ? NamespacedKey.fromString(soundId) : NamespacedKey.minecraft(soundId);
return (key == null) ? null : Registry.SOUNDS.get(key);
}
/**
* @param period String to convert to duration
* @return Duration in the period string
* @author CrashCringle
* @Description This method converts a period string like 3d4h to a duration object
*/
public static Duration periodStringToDuration(final String period) {
// Can be in the formats like: 1s, 1m, 1h, 1d, 2d1h10s etc etc.
Duration duration = Duration.ZERO;
if (period == null || period.isEmpty()) {
ProjectKorraRPG.getPlugin().getLogger().info("Invalid period string: " + period);
return duration;
}
String[] parts = period.split("(?<=\\D)(?=\\d)");
for (String part : parts) {
String unit = part.replaceAll("\\d", "");
double value = Double.parseDouble(part.replaceAll("\\D", ""));
duration = switch (unit) {
case "w" -> duration.plusHours((long) (value * 168));
case "d" -> duration.plusHours((long) (value * 24));
case "h" -> duration.plusHours((long) value);
case "m" -> duration.plusMinutes((long) value);
case "s" -> duration.plusSeconds((long) value);
default -> duration;
};
}
return duration;
}
}