Skip to content

Commit 8b54dcc

Browse files
committed
Added support for nullable World parameters
Refactored `EconomyController` and `BankController` methods to include `@Nullable` `World` parameters. Adjusted method signatures and default behaviors to accommodate this change.
1 parent b36da65 commit 8b54dcc

File tree

4 files changed

+144
-171
lines changed

4 files changed

+144
-171
lines changed

plugin/src/main/java/net/thenextlvl/service/wrapper/service/BankServiceWrapper.java

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

1415
import java.util.Optional;
1516
import java.util.Set;
@@ -35,48 +36,28 @@ public Currency getDefaultCurrency() {
3536
}
3637

3738
@Override
38-
public CompletableFuture<Bank> createBank(OfflinePlayer player, String name) {
39+
public CompletableFuture<Bank> createBank(OfflinePlayer player, String name, @Nullable World world) {
3940
return CompletableFuture.completedFuture(economy.createBank(name, player))
4041
.thenApply(bank -> getBank(name).orElseThrow());
4142
}
4243

4344
@Override
44-
public CompletableFuture<Bank> createBank(OfflinePlayer player, String name, World world) {
45-
return createBank(player, name);
46-
}
47-
48-
@Override
49-
public CompletableFuture<Bank> createBank(UUID uuid, String name) {
50-
return createBank(provider.getServer().getOfflinePlayer(uuid), name);
51-
}
52-
53-
@Override
54-
public CompletableFuture<Bank> createBank(UUID uuid, String name, World world) {
45+
public CompletableFuture<Bank> createBank(UUID uuid, String name, @Nullable World world) {
5546
return createBank(provider.getServer().getOfflinePlayer(uuid), name, world);
5647
}
5748

5849
@Override
59-
public CompletableFuture<Bank> loadBank(String name) {
60-
return CompletableFuture.completedFuture(getBank(name).orElse(null));
50+
public CompletableFuture<Optional<Bank>> loadBank(String name) {
51+
return CompletableFuture.completedFuture(getBank(name));
6152
}
6253

6354
@Override
64-
public CompletableFuture<Bank> loadBank(UUID uuid) {
65-
return CompletableFuture.completedFuture(getBank(uuid).orElse(null));
55+
public CompletableFuture<Optional<Bank>> loadBank(UUID uuid, @Nullable World world) {
56+
return CompletableFuture.completedFuture(getBank(uuid, world));
6657
}
6758

6859
@Override
69-
public CompletableFuture<Bank> loadBank(UUID uuid, World world) {
70-
return CompletableFuture.completedFuture(getBank(uuid, world).orElse(null));
71-
}
72-
73-
@Override
74-
public CompletableFuture<@Unmodifiable Set<Bank>> loadBanks() {
75-
return CompletableFuture.completedFuture(getBanks());
76-
}
77-
78-
@Override
79-
public CompletableFuture<@Unmodifiable Set<Bank>> loadBanks(World world) {
60+
public CompletableFuture<@Unmodifiable Set<Bank>> loadBanks(@Nullable World world) {
8061
return CompletableFuture.completedFuture(getBanks(world));
8162
}
8263

@@ -87,40 +68,30 @@ public CompletableFuture<Boolean> deleteBank(String name) {
8768
}
8869

8970
@Override
90-
public CompletableFuture<Boolean> deleteBank(UUID uuid) {
91-
return deleteBank(getBank(uuid).orElseThrow().getName());
92-
}
93-
94-
@Override
95-
public CompletableFuture<Boolean> deleteBank(UUID uuid, World world) {
71+
public CompletableFuture<Boolean> deleteBank(UUID uuid, @Nullable World world) {
9672
return deleteBank(getBank(uuid, world).orElseThrow().getName());
9773
}
9874

9975
@Override
10076
public @Unmodifiable Set<Bank> getBanks() {
10177
return economy.getBanks().stream()
102-
.map(bank -> new WrappedBank(bank, null, economy, plugin))
78+
.map(bank -> new WrappedBank(this, bank, null, economy, plugin))
10379
.collect(Collectors.toUnmodifiableSet());
10480
}
10581

106-
@Override
107-
public @Unmodifiable Set<Bank> getBanks(World world) {
108-
return getBanks();
109-
}
110-
11182
@Override
11283
public Optional<Bank> getBank(String name) {
11384
return Optional.of(new WrappedBank(this, name, null, economy, provider));
11485
}
11586

11687
@Override
117-
public Optional<Bank> getBank(UUID uuid) {
88+
public Optional<Bank> getBank(UUID uuid, @Nullable World world) {
11889
return Optional.empty();
11990
}
12091

12192
@Override
122-
public Optional<Bank> getBank(UUID uuid, World world) {
123-
return Optional.empty();
93+
public boolean hasMultiWorldSupport() {
94+
return false;
12495
}
12596

12697
@Override

plugin/src/main/java/net/thenextlvl/service/wrapper/service/EconomyServiceWrapper.java

Lines changed: 27 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22

33
import net.milkbowl.vault.economy.Economy;
44
import net.thenextlvl.service.api.economy.Account;
5-
import net.thenextlvl.service.api.economy.currency.Currency;
65
import net.thenextlvl.service.api.economy.EconomyController;
7-
import net.thenextlvl.service.wrapper.Wrapper;
86
import net.thenextlvl.service.wrapper.service.model.WrappedAccount;
97
import org.bukkit.OfflinePlayer;
108
import org.bukkit.World;
119
import org.bukkit.plugin.Plugin;
1210
import org.jetbrains.annotations.Unmodifiable;
1311
import org.jspecify.annotations.NullMarked;
12+
import org.jspecify.annotations.Nullable;
1413

1514
import java.util.Arrays;
15+
import java.util.List;
1616
import java.util.Optional;
1717
import java.util.Set;
1818
import java.util.UUID;
@@ -32,90 +32,67 @@ public EconomyServiceWrapper(Economy economy, Plugin provider) {
3232
}
3333

3434
@Override
35-
public CompletableFuture<@Unmodifiable Set<Account>> loadAccounts() {
36-
return CompletableFuture.completedFuture(getAccounts());
35+
public CompletableFuture<@Unmodifiable Set<Account>> loadAccounts(@Nullable World world) {
36+
return CompletableFuture.completedFuture(getAccounts(world));
3737
}
3838

3939
@Override
40-
public @Unmodifiable Set<Account> getAccounts() {
40+
public @Unmodifiable Set<Account> getAccounts(@Nullable World world) {
4141
return Arrays.stream(provider.getServer().getOfflinePlayers())
42-
.filter(economy::hasAccount)
43-
.map(player -> new WrappedAccount(this, null, economy, player))
42+
.filter(player -> economy.hasAccount(player, world != null ? world.getName() : null))
43+
.map(player -> new WrappedAccount(this, world, economy, player))
4444
.collect(Collectors.toUnmodifiableSet());
4545
}
4646

4747
@Override
48-
public Optional<Account> getAccount(OfflinePlayer player) {
49-
if (!economy.hasAccount(player)) return Optional.empty();
50-
return Optional.of(new WrappedAccount(this, null, economy, player));
51-
}
52-
53-
@Override
54-
public Optional<Account> getAccount(OfflinePlayer player, World world) {
55-
if (!economy.hasAccount(player, world.getName())) return Optional.empty();
48+
public Optional<Account> getAccount(OfflinePlayer player, @Nullable World world) {
49+
if (!economy.hasAccount(player, world != null ? world.getName() : null)) return Optional.empty();
5650
return Optional.of(new WrappedAccount(this, world, economy, player));
5751
}
5852

5953
@Override
60-
public Optional<Account> getAccount(UUID uuid) {
61-
return getAccount(provider.getServer().getOfflinePlayer(uuid));
62-
}
63-
64-
@Override
65-
public Optional<Account> getAccount(UUID uuid, World world) {
54+
public Optional<Account> getAccount(UUID uuid, @Nullable World world) {
6655
return getAccount(provider.getServer().getOfflinePlayer(uuid), world);
6756
}
6857

6958
@Override
70-
public CompletableFuture<Account> createAccount(OfflinePlayer player) {
71-
return CompletableFuture.completedFuture(economy.createPlayerAccount(player))
72-
.thenApply(account -> getAccount(player).orElseThrow());
59+
public CompletableFuture<Account> createAccount(OfflinePlayer player, @Nullable World world) {
60+
var created = economy.createPlayerAccount(player, world != null ? world.getName() : null);
61+
if (created) loadAccount(player, world).thenApply(account -> account.orElseThrow(() ->
62+
new IllegalStateException("Could not find player account after creation")));
63+
return CompletableFuture.failedFuture(new IllegalStateException(
64+
"Similar account already exists"
65+
));
7366
}
7467

7568
@Override
76-
public CompletableFuture<Account> createAccount(OfflinePlayer player, World world) {
77-
return CompletableFuture.completedFuture(economy.createPlayerAccount(player, world.getName()))
78-
.thenApply(account -> getAccount(player, world).orElseThrow());
69+
public CompletableFuture<Account> createAccount(UUID uuid, @Nullable World world) {
70+
return createAccount(plugin.getServer().getOfflinePlayer(uuid), world);
7971
}
8072

8173
@Override
82-
public CompletableFuture<Account> createAccount(UUID uuid) {
83-
return createAccount(provider.getServer().getOfflinePlayer(uuid));
84-
}
85-
86-
@Override
87-
public CompletableFuture<Account> createAccount(UUID uuid, World world) {
88-
return createAccount(provider.getServer().getOfflinePlayer(uuid), world);
89-
}
90-
91-
@Override
92-
public CompletableFuture<Optional<Account>> loadAccount(OfflinePlayer player) {
93-
return CompletableFuture.completedFuture(getAccount(player));
94-
}
95-
96-
@Override
97-
public CompletableFuture<Optional<Account>> loadAccount(OfflinePlayer player, World world) {
74+
public CompletableFuture<Optional<Account>> loadAccount(OfflinePlayer player, @Nullable World world) {
9875
return CompletableFuture.completedFuture(getAccount(player, world));
9976
}
10077

10178
@Override
102-
public CompletableFuture<Optional<Account>> loadAccount(UUID uuid) {
103-
return loadAccount(provider.getServer().getOfflinePlayer(uuid));
79+
public CompletableFuture<Optional<Account>> loadAccount(UUID uuid, @Nullable World world) {
80+
return loadAccount(provider.getServer().getOfflinePlayer(uuid), world);
10481
}
10582

10683
@Override
107-
public CompletableFuture<Optional<Account>> loadAccount(UUID uuid, World world) {
108-
return loadAccount(provider.getServer().getOfflinePlayer(uuid), world);
84+
public CompletableFuture<Boolean> deleteAccount(UUID uuid, @Nullable World world) {
85+
return CompletableFuture.completedFuture(false);
10986
}
11087

11188
@Override
112-
public CompletableFuture<Boolean> deleteAccount(UUID uuid) {
89+
public CompletableFuture<Boolean> deleteAccounts(List<UUID> accounts, @Nullable World world) {
11390
return CompletableFuture.completedFuture(false);
11491
}
11592

11693
@Override
117-
public CompletableFuture<Boolean> deleteAccount(UUID uuid, World world) {
118-
return CompletableFuture.completedFuture(false);
94+
public boolean hasMultiWorldSupport() {
95+
return false;
11996
}
12097

12198
@Override

0 commit comments

Comments
 (0)