Skip to content

Commit 1ade9e7

Browse files
committed
Added nullable World support to controllers
Refactored controllers and related methods to support `@Nullable World` parameters. Adjusted method signatures and default behaviors, introducing helper methods for context handling. This simplifies multi-world and default-world operations.
1 parent 33c02e0 commit 1ade9e7

14 files changed

+183
-377
lines changed

plugin/src/main/java/net/thenextlvl/service/controller/chat/GroupManagerChatController.java

Lines changed: 7 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import net.thenextlvl.service.api.chat.ChatProfile;
55
import net.thenextlvl.service.model.chat.GroupManagerChatProfile;
66
import org.anjocaido.groupmanager.GroupManager;
7+
import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder;
78
import org.anjocaido.groupmanager.dataholder.WorldDataHolder;
8-
import org.bukkit.OfflinePlayer;
99
import org.bukkit.World;
1010
import org.bukkit.plugin.Plugin;
1111
import org.bukkit.plugin.java.JavaPlugin;
@@ -21,55 +21,20 @@ public class GroupManagerChatController implements ChatController {
2121
private final GroupManager groupManager = JavaPlugin.getPlugin(GroupManager.class);
2222

2323
@Override
24-
public CompletableFuture<ChatProfile> loadProfile(OfflinePlayer player) {
25-
return getProfile(player)
26-
.map(CompletableFuture::completedFuture)
27-
.orElseGet(() -> CompletableFuture.completedFuture(null));
28-
}
29-
30-
@Override
31-
public CompletableFuture<ChatProfile> loadProfile(OfflinePlayer player, World world) {
32-
return getProfile(player, world)
33-
.map(CompletableFuture::completedFuture)
34-
.orElseGet(() -> CompletableFuture.completedFuture(null));
35-
}
36-
37-
@Override
38-
public CompletableFuture<ChatProfile> loadProfile(UUID uuid) {
39-
return getProfile(uuid)
40-
.map(CompletableFuture::completedFuture)
41-
.orElseGet(() -> CompletableFuture.completedFuture(null));
42-
}
43-
44-
@Override
45-
public CompletableFuture<ChatProfile> loadProfile(UUID uuid, World world) {
24+
public CompletableFuture<ChatProfile> loadProfile(UUID uuid, @Nullable World world) {
4625
return getProfile(uuid, world)
4726
.map(CompletableFuture::completedFuture)
4827
.orElseGet(() -> CompletableFuture.completedFuture(null));
4928
}
5029

5130
@Override
52-
public Optional<ChatProfile> getProfile(OfflinePlayer player) {
53-
var holder = groupManager.getWorldsHolder().getDefaultWorld();
54-
return getProfile(holder, player.getUniqueId(), player.getName());
31+
public Optional<ChatProfile> getProfile(UUID uuid, @Nullable World world) {
32+
return getProfile(getHolder(world), uuid, null);
5533
}
5634

57-
@Override
58-
public Optional<ChatProfile> getProfile(OfflinePlayer player, World world) {
59-
var holder = groupManager.getWorldsHolder().getWorldData(world.getName());
60-
return getProfile(holder, player.getUniqueId(), player.getName());
61-
}
62-
63-
@Override
64-
public Optional<ChatProfile> getProfile(UUID uuid) {
65-
var holder = groupManager.getWorldsHolder().getDefaultWorld();
66-
return getProfile(holder, uuid, null);
67-
}
68-
69-
@Override
70-
public Optional<ChatProfile> getProfile(UUID uuid, World world) {
71-
var holder = groupManager.getWorldsHolder().getWorldData(world.getName());
72-
return getProfile(holder, uuid, null);
35+
private @Nullable OverloadedWorldHolder getHolder(@Nullable World world) {
36+
if (world == null) return groupManager.getWorldsHolder().getDefaultWorld();
37+
return groupManager.getWorldsHolder().getWorldData(world.getName());
7338
}
7439

7540
private Optional<ChatProfile> getProfile(@Nullable WorldDataHolder holder, UUID uuid, @Nullable String name) {

plugin/src/main/java/net/thenextlvl/service/controller/chat/LuckPermsChatController.java

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.bukkit.World;
1111
import org.bukkit.plugin.Plugin;
1212
import org.jspecify.annotations.NullMarked;
13+
import org.jspecify.annotations.Nullable;
1314

1415
import java.util.Optional;
1516
import java.util.UUID;
@@ -25,33 +26,24 @@ public LuckPermsChatController(Plugin plugin) {
2526
}
2627

2728
@Override
28-
public CompletableFuture<ChatProfile> loadProfile(UUID uuid) {
29-
return luckPerms.getUserManager().loadUser(uuid).thenApply(user ->
30-
new LuckPermsChatProfile(user, QueryOptions.defaultContextualOptions()));
31-
}
32-
33-
@Override
34-
public CompletableFuture<ChatProfile> loadProfile(UUID uuid, World world) {
29+
public CompletableFuture<ChatProfile> loadProfile(UUID uuid, @Nullable World world) {
3530
return luckPerms.getUserManager().loadUser(uuid).thenApply(user -> {
36-
var options = QueryOptions.contextual(ImmutableContextSet.of("world", world.getName()));
37-
return new LuckPermsChatProfile(user, options);
31+
return new LuckPermsChatProfile(user, getOptions(world));
3832
});
3933
}
4034

4135
@Override
42-
public Optional<ChatProfile> getProfile(UUID uuid) {
43-
return Optional.ofNullable(luckPerms.getUserManager().getUser(uuid)).map(user ->
44-
new LuckPermsChatProfile(user, QueryOptions.defaultContextualOptions()));
45-
}
46-
47-
@Override
48-
public Optional<ChatProfile> getProfile(UUID uuid, World world) {
36+
public Optional<ChatProfile> getProfile(UUID uuid, @Nullable World world) {
4937
return Optional.ofNullable(luckPerms.getUserManager().getUser(uuid)).map(user -> {
50-
var options = QueryOptions.contextual(ImmutableContextSet.of("world", world.getName()));
51-
return new LuckPermsChatProfile(user, options);
38+
return new LuckPermsChatProfile(user, getOptions(world));
5239
});
5340
}
5441

42+
private QueryOptions getOptions(@Nullable World world) {
43+
if (world == null) return QueryOptions.defaultContextualOptions();
44+
return QueryOptions.contextual(ImmutableContextSet.of("world", world.getName()));
45+
}
46+
5547
@Override
5648
public Plugin getPlugin() {
5749
return plugin;

plugin/src/main/java/net/thenextlvl/service/controller/group/GroupManagerGroupController.java

Lines changed: 21 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import net.thenextlvl.service.model.group.GroupManagerGroup;
77
import net.thenextlvl.service.model.permission.GroupManagerPermissionHolder;
88
import org.anjocaido.groupmanager.GroupManager;
9+
import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder;
910
import org.anjocaido.groupmanager.dataholder.WorldDataHolder;
10-
import org.bukkit.OfflinePlayer;
1111
import org.bukkit.World;
1212
import org.bukkit.plugin.Plugin;
1313
import org.bukkit.plugin.java.JavaPlugin;
@@ -32,59 +32,30 @@ public CompletableFuture<Group> createGroup(String name) {
3232
}
3333

3434
@Override
35-
public CompletableFuture<Group> createGroup(String name, World world) {
35+
public CompletableFuture<Group> createGroup(String name, @Nullable World world) {
36+
if (world == null) return createGroup(name);
3637
var holder = groupManager.getWorldsHolder().getWorldData(world.getName());
3738
if (holder == null) return CompletableFuture.completedFuture(null);
3839
return CompletableFuture.completedFuture(new GroupManagerGroup(holder.createGroup(name)));
3940
}
4041

4142
@Override
42-
public CompletableFuture<Group> loadGroup(String name) {
43-
return CompletableFuture.completedFuture(getGroup(name).orElse(null));
44-
}
45-
46-
@Override
47-
public CompletableFuture<Group> loadGroup(String name, World world) {
43+
public CompletableFuture<Group> loadGroup(String name, @Nullable World world) {
4844
return CompletableFuture.completedFuture(getGroup(name, world).orElse(null));
4945
}
5046

5147
@Override
52-
public CompletableFuture<GroupHolder> loadGroupHolder(OfflinePlayer player) {
53-
return CompletableFuture.completedFuture(getGroupHolder(player).orElse(null));
54-
}
55-
56-
@Override
57-
public CompletableFuture<GroupHolder> loadGroupHolder(OfflinePlayer player, World world) {
58-
return CompletableFuture.completedFuture(getGroupHolder(player, world).orElse(null));
59-
}
60-
61-
@Override
62-
public CompletableFuture<GroupHolder> loadGroupHolder(UUID uuid) {
63-
return CompletableFuture.completedFuture(getGroupHolder(uuid).orElse(null));
64-
}
65-
66-
@Override
67-
public CompletableFuture<GroupHolder> loadGroupHolder(UUID uuid, World world) {
48+
public CompletableFuture<GroupHolder> loadGroupHolder(UUID uuid, @Nullable World world) {
6849
return CompletableFuture.completedFuture(getGroupHolder(uuid, world).orElse(null));
6950
}
7051

7152
@Override
72-
public CompletableFuture<Set<Group>> loadGroups() {
73-
return CompletableFuture.completedFuture(getGroups());
74-
}
75-
76-
@Override
77-
public CompletableFuture<Set<Group>> loadGroups(World world) {
53+
public CompletableFuture<Set<Group>> loadGroups(@Nullable World world) {
7854
return CompletableFuture.completedFuture(getGroups(world));
7955
}
8056

8157
@Override
82-
public CompletableFuture<Boolean> deleteGroup(Group group) {
83-
return deleteGroup(group.getName());
84-
}
85-
86-
@Override
87-
public CompletableFuture<Boolean> deleteGroup(Group group, World world) {
58+
public CompletableFuture<Boolean> deleteGroup(Group group, @Nullable World world) {
8859
return deleteGroup(group.getName(), world);
8960
}
9061

@@ -94,7 +65,8 @@ public CompletableFuture<Boolean> deleteGroup(String name) {
9465
}
9566

9667
@Override
97-
public CompletableFuture<Boolean> deleteGroup(String name, World world) {
68+
public CompletableFuture<Boolean> deleteGroup(String name, @Nullable World world) {
69+
if (world == null) return deleteGroup(name);
9870
var holder = groupManager.getWorldsHolder().getWorldData(world.getName());
9971
if (holder != null) CompletableFuture.completedFuture(holder.removeGroup(name));
10072
return CompletableFuture.completedFuture(null);
@@ -107,35 +79,17 @@ public Optional<Group> getGroup(String name) {
10779
}
10880

10981
@Override
110-
public Optional<Group> getGroup(String name, World world) {
82+
public Optional<Group> getGroup(String name, @Nullable World world) {
83+
if (world == null) return getGroup(name);
11184
var holder = groupManager.getWorldsHolder().getWorldData(world.getName());
11285
return Optional.ofNullable(holder)
11386
.map(holder1 -> holder1.getGroup(name))
11487
.map(GroupManagerGroup::new);
11588
}
11689

11790
@Override
118-
public Optional<GroupHolder> getGroupHolder(OfflinePlayer player) {
119-
var holder = groupManager.getWorldsHolder().getDefaultWorld();
120-
return getHolder(holder, player.getUniqueId(), player.getName());
121-
}
122-
123-
@Override
124-
public Optional<GroupHolder> getGroupHolder(OfflinePlayer player, World world) {
125-
var holder = groupManager.getWorldsHolder().getWorldData(world.getName());
126-
return getHolder(holder, player.getUniqueId(), player.getName());
127-
}
128-
129-
@Override
130-
public Optional<GroupHolder> getGroupHolder(UUID uuid) {
131-
var holder = groupManager.getWorldsHolder().getDefaultWorld();
132-
return getHolder(holder, uuid, null);
133-
}
134-
135-
@Override
136-
public Optional<GroupHolder> getGroupHolder(UUID uuid, World world) {
137-
var holder = groupManager.getWorldsHolder().getWorldData(world.getName());
138-
return getHolder(holder, uuid, null);
91+
public Optional<GroupHolder> getGroupHolder(UUID uuid, @Nullable World world) {
92+
return getHolder(getHolder(world), uuid, null);
13993
}
14094

14195
@Override
@@ -146,14 +100,20 @@ public Set<Group> getGroups() {
146100
}
147101

148102
@Override
149-
public Set<Group> getGroups(World world) {
150-
var holder = groupManager.getWorldsHolder().getWorldData(world.getName());
103+
public Set<Group> getGroups(@Nullable World world) {
104+
if (world == null) return getGroups();
105+
var holder = getHolder(world);
151106
if (holder == null) return Set.of();
152107
return holder.getGroups().values().stream()
153108
.map(GroupManagerGroup::new)
154109
.collect(Collectors.toUnmodifiableSet());
155110
}
156111

112+
private @Nullable OverloadedWorldHolder getHolder(@Nullable World world) {
113+
if (world == null) return groupManager.getWorldsHolder().getDefaultWorld();
114+
return groupManager.getWorldsHolder().getWorldData(world.getName());
115+
}
116+
157117
private Optional<GroupHolder> getHolder(@Nullable WorldDataHolder holder, UUID uuid, @Nullable String name) {
158118
if (holder == null) return Optional.empty();
159119
var user = name != null ? holder.getUser(uuid.toString(), name) : holder.getUser(uuid.toString());

0 commit comments

Comments
 (0)