Skip to content

Commit 8936fa3

Browse files
committed
GH-579 Add repository for language. Remove user settings. (#890)
1 parent 4ce2e55 commit 8936fa3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+409
-312
lines changed

eternalcore-core/src/main/java/com/eternalcode/core/feature/language/Language.java renamed to eternalcore-api/src/main/java/com/eternalcode/core/feature/language/Language.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package com.eternalcode.core.feature.language;
22

3-
import java.util.ArrayList;
43
import java.util.Collections;
4+
import java.util.LinkedHashSet;
55
import java.util.List;
66
import java.util.Locale;
77
import java.util.Objects;
8+
import java.util.Set;
89

910
public class Language {
1011

@@ -13,35 +14,37 @@ public class Language {
1314
public static final Language DEFAULT = Language.fromLocale(Locale.ROOT);
1415

1516
private final String lang;
16-
private final List<String> aliases;
17+
private final Set<String> aliases;
1718

1819
public Language(String lang, List<String> aliases) {
1920
this.lang = lang;
20-
this.aliases = new ArrayList<>(aliases);
21+
this.aliases = new LinkedHashSet<>(aliases);
2122
}
2223

2324
public String getLang() {
2425
return this.lang;
2526
}
2627

27-
public List<String> getAliases() {
28-
return Collections.unmodifiableList(this.aliases);
28+
public Set<String> getAliases() {
29+
return Collections.unmodifiableSet(this.aliases);
2930
}
3031

3132
public boolean isEquals(Language other) {
3233
if (this.lang.equals(other.lang)) {
3334
return true;
3435
}
3536

36-
for (String alias : this.aliases) {
37-
if (alias.equals(other.lang)) {
38-
return true;
39-
}
37+
if (this.lang.startsWith(other.lang) || other.lang.startsWith(this.lang)) {
38+
return true;
39+
}
4040

41-
for (String otherAlias : other.aliases) {
42-
if (alias.equals(otherAlias)) {
43-
return true;
44-
}
41+
if (this.aliases.contains(other.lang)) {
42+
return true;
43+
}
44+
45+
for (String otherAlias : other.aliases) {
46+
if (this.aliases.contains(otherAlias)) {
47+
return true;
4548
}
4649
}
4750

@@ -71,7 +74,7 @@ public static Language fromLocale(Locale locale) {
7174
}
7275

7376
public Locale toLocale() {
74-
return new Locale(this.lang);
77+
return Locale.of(this.lang);
7578
}
7679

7780
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.eternalcode.core.feature.language;
2+
3+
import java.util.UUID;
4+
5+
public interface LanguageProvider {
6+
7+
Language getDefaultLanguage(UUID player);
8+
9+
}
Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
11
package com.eternalcode.core.feature.language;
22

3-
import java.util.Locale;
4-
import org.bukkit.entity.Player;
3+
import java.util.UUID;
4+
import java.util.concurrent.CompletableFuture;
55

66
public interface LanguageService {
77

8-
Locale getPlayerLanguage(Player player);
8+
void setDefaultProvider(LanguageProvider defaultProvider);
9+
10+
LanguageProvider getDefaultProvider();
11+
12+
CompletableFuture<Language> getLanguage(UUID playerUniqueId);
13+
14+
Language getLanguageNow(UUID playerUniqueId);
15+
16+
CompletableFuture<Void> setLanguage(UUID playerUniqueId, Language language);
17+
18+
CompletableFuture<Void> setDefaultLanguage(UUID playerUniqueId);
919

10-
void setPlayerLanguage(Player player, Locale locale);
1120
}

eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/AbstractViewerArgument.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
11
package com.eternalcode.core.bridge.litecommand.argument;
22

3+
import com.eternalcode.core.feature.language.Language;
34
import com.eternalcode.core.translation.Translation;
45
import com.eternalcode.core.translation.TranslationManager;
5-
import com.eternalcode.core.viewer.Viewer;
6-
import com.eternalcode.core.viewer.ViewerService;
76
import dev.rollczi.litecommands.argument.Argument;
87
import dev.rollczi.litecommands.argument.parser.ParseResult;
98
import dev.rollczi.litecommands.argument.resolver.ArgumentResolver;
109
import dev.rollczi.litecommands.invocation.Invocation;
1110
import org.bukkit.command.CommandSender;
11+
import org.bukkit.entity.Player;
1212

1313
public abstract class AbstractViewerArgument<T> extends ArgumentResolver<CommandSender, T> {
1414

15-
protected final ViewerService viewerService;
1615
protected final TranslationManager translationManager;
1716

18-
protected AbstractViewerArgument(ViewerService viewerService, TranslationManager translationManager) {
19-
this.viewerService = viewerService;
17+
protected AbstractViewerArgument(TranslationManager translationManager) {
2018
this.translationManager = translationManager;
2119
}
2220

2321
@Override
2422
protected ParseResult<T> parse(Invocation<CommandSender> invocation, Argument<T> context, String argument) {
25-
Viewer viewer = this.viewerService.any(invocation.sender());
26-
Translation translation = this.translationManager.getMessages(viewer.getLanguage());
23+
if (invocation.sender() instanceof Player player) {
24+
Translation translation = this.translationManager.getMessages(player.getUniqueId());
25+
return this.parse(invocation, argument, translation);
26+
}
2727

28+
Translation translation = this.translationManager.getMessages(Language.DEFAULT);
2829
return this.parse(invocation, argument, translation);
2930
}
3031

eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/EnchantmentArgument.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.eternalcode.core.injector.annotations.lite.LiteArgument;
55
import com.eternalcode.core.translation.Translation;
66
import com.eternalcode.core.translation.TranslationManager;
7-
import com.eternalcode.core.viewer.ViewerService;
87
import dev.rollczi.litecommands.argument.Argument;
98
import dev.rollczi.litecommands.argument.parser.ParseResult;
109
import dev.rollczi.litecommands.invocation.Invocation;
@@ -21,8 +20,8 @@
2120
class EnchantmentArgument extends AbstractViewerArgument<Enchantment> {
2221

2322
@Inject
24-
EnchantmentArgument(ViewerService viewerService, TranslationManager translationManager) {
25-
super(viewerService, translationManager);
23+
EnchantmentArgument(TranslationManager translationManager) {
24+
super(translationManager);
2625
}
2726

2827
@Override

eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/GameModeArgument.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import com.eternalcode.core.injector.annotations.lite.LiteArgument;
66
import com.eternalcode.core.translation.Translation;
77
import com.eternalcode.core.translation.TranslationManager;
8-
import com.eternalcode.core.viewer.ViewerService;
98
import dev.rollczi.litecommands.argument.Argument;
109
import dev.rollczi.litecommands.argument.parser.ParseResult;
1110
import dev.rollczi.litecommands.invocation.Invocation;
@@ -23,8 +22,8 @@ class GameModeArgument extends AbstractViewerArgument<GameMode> {
2322
private final GameModeArgumentSettings gameModeArgumentSettings;
2423

2524
@Inject
26-
GameModeArgument(ViewerService viewerService, TranslationManager translationManager, GameModeArgumentSettings gameModeArgumentSettings) {
27-
super(viewerService, translationManager);
25+
GameModeArgument(TranslationManager translationManager, GameModeArgumentSettings gameModeArgumentSettings) {
26+
super(translationManager);
2827
this.gameModeArgumentSettings = gameModeArgumentSettings;
2928
}
3029

eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/NoticeTypeArgument.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import com.eternalcode.core.notice.NoticeTextType;
66
import com.eternalcode.core.translation.Translation;
77
import com.eternalcode.core.translation.TranslationManager;
8-
import com.eternalcode.core.viewer.ViewerService;
98
import dev.rollczi.litecommands.argument.Argument;
109
import dev.rollczi.litecommands.argument.parser.ParseResult;
1110
import dev.rollczi.litecommands.invocation.Invocation;
@@ -19,8 +18,8 @@
1918
class NoticeTypeArgument extends AbstractViewerArgument<NoticeTextType> {
2019

2120
@Inject
22-
NoticeTypeArgument(ViewerService viewerService, TranslationManager translationManager) {
23-
super(viewerService, translationManager);
21+
NoticeTypeArgument(TranslationManager translationManager) {
22+
super(translationManager);
2423
}
2524

2625
@Override

eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.eternalcode.core.injector.annotations.lite.LiteArgument;
88
import com.eternalcode.core.translation.Translation;
99
import com.eternalcode.core.translation.TranslationManager;
10-
import com.eternalcode.core.viewer.ViewerService;
1110
import dev.rollczi.litecommands.argument.Argument;
1211
import dev.rollczi.litecommands.argument.parser.ParseResult;
1312
import dev.rollczi.litecommands.invocation.Invocation;
@@ -25,12 +24,11 @@ public class PlayerArgument extends AbstractViewerArgument<Player> {
2524

2625
@Inject
2726
public PlayerArgument(
28-
ViewerService viewerService,
2927
TranslationManager translationManager,
3028
Server server,
3129
VanishService vanishService
3230
) {
33-
super(viewerService, translationManager);
31+
super(translationManager);
3432
this.server = server;
3533
this.vanishService = vanishService;
3634
}

eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/UserArgument.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import com.eternalcode.core.translation.TranslationManager;
77
import com.eternalcode.core.user.User;
88
import com.eternalcode.core.user.UserManager;
9-
import com.eternalcode.core.viewer.ViewerService;
109
import dev.rollczi.litecommands.argument.Argument;
1110
import dev.rollczi.litecommands.argument.parser.ParseResult;
1211
import dev.rollczi.litecommands.invocation.Invocation;
@@ -23,8 +22,8 @@ class UserArgument extends AbstractViewerArgument<User> {
2322
private final UserManager userManager;
2423

2524
@Inject
26-
UserArgument(ViewerService viewerService, TranslationManager translationManager, Server server, UserManager userManager) {
27-
super(viewerService, translationManager);
25+
UserArgument(TranslationManager translationManager, Server server, UserManager userManager) {
26+
super(translationManager);
2827
this.server = server;
2928
this.userManager = userManager;
3029
}

eternalcore-core/src/main/java/com/eternalcode/core/feature/afk/AfkKickController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ void onAfkSwitch(AfkSwitchEvent event) {
6060
}
6161

6262
User user = this.userManager.getOrCreate(playerUUID, player.getName());
63-
Translation translation = this.translationManager.getMessages(user);
63+
Translation translation = this.translationManager.getMessages(user.getUniqueId());
6464

6565
Component component = this.miniMessage.deserialize(translation.afk().afkKickReason());
6666
player.kickPlayer(legacySection().serialize(component));

0 commit comments

Comments
 (0)