-
Notifications
You must be signed in to change notification settings - Fork 70
Expand file tree
/
Copy pathRank.java
More file actions
69 lines (60 loc) · 1.98 KB
/
Rank.java
File metadata and controls
69 lines (60 loc) · 1.98 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
package sh.okx.rankup.ranks;
import java.util.List;
import lombok.AccessLevel;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.ranks.requirements.RankRequirements;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.util.folia.FoliaScheduler;
@EqualsAndHashCode
@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
public class Rank {
@Getter
protected final ConfigurationSection section;
protected final RankupPlugin plugin;
@Getter
protected final String next;
@Getter
protected final String rank;
@Getter
protected final String displayName;
@Getter
protected final RankRequirements requirements;
@Getter
protected final List<String> commands;
public boolean isIn(Player player) {
return plugin.getPermissions().inGroup(player.getUniqueId(), rank);
}
public boolean hasRequirements(Player player) {
return requirements.hasRequirements(player);
}
public Requirement getRequirement(Player player, String name) {
return requirements.getRequirement(player, name);
}
public void applyRequirements(Player player) {
requirements.applyRequirements(player);
}
public void runCommands(Player player, Rank next) {
final Runnable runnable = () -> {
for (String command : commands) {
String string = plugin.newMessageBuilder(command).replacePlayer(player).replaceOldRank(this).replaceRank(next).toString(player);
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), string);
}
};
if (FoliaScheduler.isFolia()) FoliaScheduler.getGlobalRegionScheduler().run(plugin, $ -> runnable.run());
else runnable.run();
}
@Override
public String toString() {
return "Rank{" +
"next='" + next + '\'' +
", rank='" + rank + '\'' +
", commands=" + commands +
'}';
}
}