Skip to content

Commit 4990e78

Browse files
committed
top-player-number: add NameProviderManager
1 parent 35297d7 commit 4990e78

File tree

4 files changed

+51
-8
lines changed

4 files changed

+51
-8
lines changed

template/top-player-number/src/main/java/me/hsgamer/topper/template/topplayernumber/TopPlayerNumberTemplate.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
import me.hsgamer.topper.agent.core.DataEntryAgent;
55
import me.hsgamer.topper.storage.core.DataStorage;
66
import me.hsgamer.topper.template.topplayernumber.holder.NumberTopHolder;
7-
import me.hsgamer.topper.template.topplayernumber.manager.EntryConsumeManager;
8-
import me.hsgamer.topper.template.topplayernumber.manager.QueryForwardManager;
9-
import me.hsgamer.topper.template.topplayernumber.manager.TopManager;
10-
import me.hsgamer.topper.template.topplayernumber.manager.TopQueryManager;
7+
import me.hsgamer.topper.template.topplayernumber.manager.*;
118
import me.hsgamer.topper.value.core.ValueProvider;
129
import org.jetbrains.annotations.Nullable;
1310

@@ -23,25 +20,29 @@ public abstract class TopPlayerNumberTemplate {
2320
private final TopQueryManager topQueryManager;
2421
private final EntryConsumeManager entryConsumeManager;
2522
private final QueryForwardManager queryForwardManager;
23+
private final NameProviderManager nameProviderManager;
2624

2725
protected TopPlayerNumberTemplate(Settings settings) {
2826
this.settings = settings;
2927
this.topManager = new TopManager(this);
3028
this.topQueryManager = new TopQueryManager(this);
3129
this.entryConsumeManager = new EntryConsumeManager(this);
3230
this.queryForwardManager = new QueryForwardManager(this);
31+
this.nameProviderManager = new NameProviderManager();
3332
}
3433

3534
public abstract Function<String, DataStorage<UUID, Double>> getStorageSupplier();
3635

3736
public abstract Optional<ValueProvider<UUID, Double>> createValueProvider(Map<String, Object> settings);
3837

39-
public abstract String getName(UUID uuid);
40-
4138
public abstract Agent createTaskAgent(Runnable runnable, boolean async, long delay);
4239

4340
public abstract void logWarning(String message, @Nullable Throwable throwable);
4441

42+
public String getName(UUID uuid) {
43+
return this.nameProviderManager.getName(uuid);
44+
}
45+
4546
public void logWarning(String message) {
4647
logWarning(message, null);
4748
}
@@ -82,6 +83,10 @@ public QueryForwardManager getQueryForwardManager() {
8283
return queryForwardManager;
8384
}
8485

86+
public NameProviderManager getNameProviderManager() {
87+
return nameProviderManager;
88+
}
89+
8590
public interface Settings {
8691
Map<String, NumberTopHolder.Settings> holders();
8792

template/top-player-number/src/main/java/me/hsgamer/topper/template/topplayernumber/holder/NumberTopHolder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public NumberTopHolder(TopPlayerNumberTemplate template, String name, Settings s
3333

3434
List<Agent> agents = new ArrayList<>();
3535
List<DataEntryAgent<UUID, Double>> entryAgents = new ArrayList<>();
36-
this.valueDisplay = new ValueDisplay(template::getName, settings.displaySettings());
36+
this.valueDisplay = new ValueDisplay(template.getNameProviderManager()::getName, settings.displaySettings());
3737

3838
this.storageAgent = new StorageAgent<>(template.getTopManager().buildStorage(name));
3939
storageAgent.setMaxEntryPerCall(template.getSettings().taskSaveEntryPerTick());

template/top-player-number/src/main/java/me/hsgamer/topper/template/topplayernumber/manager/EntryConsumeManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public Optional<Double> getValue(String holder, UUID uuid) {
6565

6666
@Override
6767
public Optional<String> getName(String holder, UUID uuid) {
68-
return Optional.ofNullable(template.getName(uuid));
68+
return Optional.ofNullable(template.getNameProviderManager().getName(uuid));
6969
}
7070

7171
@Override
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package me.hsgamer.topper.template.topplayernumber.manager;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.UUID;
6+
import java.util.function.Function;
7+
8+
public class NameProviderManager {
9+
private final List<Function<UUID, String>> nameProviders = new ArrayList<>();
10+
private Function<UUID, String> defaultNameProvider = null;
11+
12+
public Runnable addNameProvider(Function<UUID, String> nameProvider) {
13+
nameProviders.add(nameProvider);
14+
return () -> nameProviders.remove(nameProvider);
15+
}
16+
17+
public void setDefaultNameProvider(Function<UUID, String> defaultNameProvider) {
18+
this.defaultNameProvider = defaultNameProvider;
19+
}
20+
21+
public String getName(UUID uuid) {
22+
for (Function<UUID, String> nameProvider : nameProviders) {
23+
String name = nameProvider.apply(uuid);
24+
if (name != null) {
25+
return name;
26+
}
27+
}
28+
if (defaultNameProvider != null) {
29+
return defaultNameProvider.apply(uuid);
30+
}
31+
return null;
32+
}
33+
34+
public void clear() {
35+
nameProviders.clear();
36+
defaultNameProvider = null;
37+
}
38+
}

0 commit comments

Comments
 (0)