Skip to content

Commit 3d810b9

Browse files
authored
Merge pull request #29 from BitAspire/croabeast
chore: update CLV runtime dependencies
2 parents 1a8451c + dc343c1 commit 3d810b9

8 files changed

Lines changed: 62 additions & 51 deletions

File tree

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ plugins {
1010
}
1111

1212
group = "com.bitaspire"
13-
version = "1.2.1"
13+
version = "1.2.3"
1414

1515
repositories {
1616
mavenLocal()

gradle/wrapper/gradle-wrapper.jar

4.59 KB
Binary file not shown.
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip
44
networkTimeout=10000
5+
retries=0
6+
retryBackOffMs=500
57
validateDistributionUrl=true
68
zipStoreBase=GRADLE_USER_HOME
79
zipStorePath=wrapper/dists

gradlew

Lines changed: 2 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradlew.bat

Lines changed: 10 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

libraries/CyberCore-2.0.0.jar

1.28 KB
Binary file not shown.

src/main/java/com/bitaspire/cyberlevels/command/CLVTabComplete.java

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,18 @@ public class CLVTabComplete implements TabCompleter {
2525

2626
private static final String PLAYER_PREFIX = "CyberLevels.player.";
2727
private static final String ADMIN_PREFIX = "CyberLevels.admin.";
28-
29-
private static final Map<String, String> COMMAND_PERMISSIONS = new HashMap<>();
28+
private static final long PLAYER_NAME_CACHE_MILLIS = 5000L;
29+
30+
private static final List<String> EXP_AMOUNT_SUGGESTIONS = Collections.unmodifiableList(
31+
Arrays.asList("<amount>", "5", "100", "250", "1000")
32+
);
33+
private static final List<String> LEVEL_AMOUNT_SUGGESTIONS = Collections.unmodifiableList(
34+
Arrays.asList("<amount>", "1", "2", "5")
35+
);
36+
private static final Set<String> MUTATION_COMMANDS = Collections.unmodifiableSet(new HashSet<>(
37+
Arrays.asList("addexp", "setexp", "removeexp", "addlevel", "setlevel", "removelevel")
38+
));
39+
private static final Map<String, String> COMMAND_PERMISSIONS = new LinkedHashMap<>();
3040

3141
static {
3242
COMMAND_PERMISSIONS.put("about", PLAYER_PREFIX + "about");
@@ -48,6 +58,9 @@ public class CLVTabComplete implements TabCompleter {
4858
}
4959

5060
private final CyberLevels main;
61+
private long playerNamesCachedAt = 0L;
62+
private boolean playerNamesCachedOfflineMode = false;
63+
private List<String> cachedPlayerNames = Collections.emptyList();
5164

5265
/**
5366
* Produces context-aware tab completions for the CyberLevels command set.
@@ -84,16 +97,14 @@ public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Comman
8497
break;
8598

8699
case "addexp": case "setexp": case "removeexp":
87-
return partialMatch(args[1], Arrays.asList("<amount>", "5", "100", "250", "1000"));
100+
return partialMatch(args[1], EXP_AMOUNT_SUGGESTIONS);
88101

89102
case "addlevel": case "setlevel": case "removelevel":
90-
return partialMatch(args[1], Arrays.asList("<amount>", "1", "2", "5"));
103+
return partialMatch(args[1], LEVEL_AMOUNT_SUGGESTIONS);
91104
}
92105
}
93106

94-
if (args.length == 3 &&
95-
Arrays.asList("addexp", "setexp", "removeexp", "addlevel", "setlevel", "removelevel")
96-
.contains(args[0].toLowerCase()))
107+
if (args.length == 3 && MUTATION_COMMANDS.contains(args[0].toLowerCase(Locale.ENGLISH)))
97108
{
98109
List<String> suggestions = new ArrayList<>();
99110
suggestions.add("[<player>]");
@@ -105,9 +116,16 @@ public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Comman
105116
}
106117

107118
private List<String> getPlayerNames() {
108-
List<String> players = new ArrayList<>();
119+
boolean offlineMode = main.cache().config().isTabCompleteLoadOfflineUsers();
120+
long now = System.currentTimeMillis();
121+
122+
if (offlineMode == playerNamesCachedOfflineMode &&
123+
now - playerNamesCachedAt <= PLAYER_NAME_CACHE_MILLIS)
124+
return cachedPlayerNames;
125+
126+
LinkedHashSet<String> players = new LinkedHashSet<>();
109127

110-
if (main.cache().config().isTabCompleteLoadOfflineUsers()) {
128+
if (offlineMode) {
111129
for (OfflinePlayer p : Bukkit.getOfflinePlayers()) {
112130
String name = p.getName();
113131
if (name != null) players.add(name);
@@ -118,13 +136,18 @@ private List<String> getPlayerNames() {
118136
}
119137
}
120138

121-
return players;
139+
List<String> snapshot = new ArrayList<>(players);
140+
snapshot.sort(String.CASE_INSENSITIVE_ORDER);
141+
cachedPlayerNames = snapshot;
142+
playerNamesCachedOfflineMode = offlineMode;
143+
playerNamesCachedAt = now;
144+
return cachedPlayerNames;
122145
}
123146

124147
private List<String> partialMatch(String input, List<String> options) {
125148
List<String> matches = new ArrayList<>();
126149
StringUtil.copyPartialMatches(input, options, matches);
127-
Collections.sort(matches);
150+
matches.sort(String.CASE_INSENSITIVE_ORDER);
128151
return matches;
129152
}
130153
}

src/main/java/com/bitaspire/cyberlevels/hook/HookManager.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,33 +82,33 @@ public HookManager(CyberLevels main) {
8282
"ms&7.", "");
8383
}
8484

85-
private synchronized boolean loadAxHoesIfReady() {
86-
if (axHoesLoaded) return false;
87-
if (!main.isEnabled("AxHoes")) return false;
85+
private synchronized void loadAxHoesIfReady() {
86+
if (axHoesLoaded || !main.isEnabled("AxHoes")) return;
8887

89-
final long l = System.currentTimeMillis();
88+
long l = System.currentTimeMillis();
9089
AxHoesHook hook = new AxHoesHook(main, this);
9190
hooks.add(hook);
91+
9292
// Only register here if the global register() pass has already run; otherwise it'll be
9393
// picked up by hooks.forEach(Hook::register) later. Registering twice would attach the
9494
// listener twice and double-count every PlayerXPGainEvent.
9595
if (globalRegistered) hook.register();
96+
9697
axHoesLoaded = true;
9798
main.logger("&7Loaded &eAxHoes&7 plugin hook in &a" + (System.currentTimeMillis() - l) + "ms&7.");
98-
return true;
9999
}
100100

101-
private synchronized boolean loadAxPickIfReady() {
102-
if (axPickLoaded) return false;
103-
if (!main.isEnabled("AxPickaxes")) return false;
101+
private synchronized void loadAxPickIfReady() {
102+
if (axPickLoaded || !main.isEnabled("AxPickaxes")) return;
104103

105-
final long l = System.currentTimeMillis();
104+
long l = System.currentTimeMillis();
106105
AxPickHook hook = new AxPickHook(main, this);
107106
hooks.add(hook);
107+
108108
if (globalRegistered) hook.register();
109+
109110
axPickLoaded = true;
110111
main.logger("&7Loaded &eAxPickaxes&7 plugin hook in &a" + (System.currentTimeMillis() - l) + "ms&7.");
111-
return true;
112112
}
113113

114114
void sendExp(Player player, ExpSource source, String item) {
@@ -150,7 +150,8 @@ public double externalMultiplier(Player player) {
150150
if (player == null) return 1D;
151151

152152
double multiplier = 1D;
153-
if (axBoostersHook != null) multiplier *= axBoostersHook.getMultiplier(player);
153+
if (axBoostersHook != null)
154+
multiplier *= axBoostersHook.getMultiplier(player);
154155
return multiplier;
155156
}
156157

0 commit comments

Comments
 (0)