Skip to content

Commit 12d1be0

Browse files
authored
Release 7.x.x (#34)
* GH-33 Use kyori adventure's components whenever it's possible * Rebrand from dev.peri to org.mythicprojects * Set default GlobalAdventureSerializer if MiniMessage or legacy serializer is available * Simplify GlobalAdventureSerializer code * Move MessageDispatcher to interface * Utilize new MessageDispatcher API * Add more javadocs * add VelocityMessageDispatcher#all * Mark #all #allPlayers and #console as deprecated in VelocityMessageDispatcher * Convert ComponentTransformer to ComponentSerializer to allow serialzation of any Component type * Create StringReplaceable to different from standard Replaceable and prevent using wrong placeholder type * Don't unnecessarily change package * Update package in example * Fix ActionBarHolderSerializer * Fix title serialization, revert old actionbar serialization * Make compilable, bump dependencies, force Java 21 * Drop deprecated API, hopes everything works
1 parent f1bc327 commit 12d1be0

File tree

65 files changed

+1361
-884
lines changed

Some content is hidden

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

65 files changed

+1361
-884
lines changed

README.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
YetAnotherMessagesLibrary (YAML)
22
===========
33
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4-
![Version](https://repo.titanvale.net/api/badge/latest/releases/dev/peri/yetanothermessageslibrary/core?color=42c611&name=Releases&prefix=v)
5-
![Version](https://repo.titanvale.net/api/badge/latest/snapshots/dev/peri/yetanothermessageslibrary/core?color=d45f48&name=Snapshots&prefix=v)
4+
![Version](https://repo.mythicprojects.org/api/badge/latest/releases/org/mythicprojects/yetanothermessageslibrary/core?color=42c611&name=Releases&prefix=v)
5+
![Version](https://repo.mythicprojects.org/api/badge/latest/snapshots/org/mythicprojects/yetanothermessageslibrary/core?color=d45f48&name=Snapshots&prefix=v)
66
![GitHub repo size](https://img.shields.io/github/repo-size/P3ridot/YetAnotherMessagesLibrary)
77

88
Lightweight and modular *Minecraft Messages Library* based on [adventure](https://github.com/KyoriPowered/adventure).
@@ -21,8 +21,8 @@ Implementations of values/messages suppliers or utilities class to easily add su
2121

2222
### Replaceable
2323
Implementations of `Replaceable` interface to easily replace placeholders in messages
24-
- [okaeri-placeholders](https://github.com/OkaeriPoland/okaeri-placeholders)
2524
- [PlaceholderAPI](https://github.com/PlaceholderAPI/PlaceholderAPI)
25+
- [okaeri-placeholders **\[EXPERIMENTAL\]**](https://github.com/OkaeriPoland/okaeri-placeholders)
2626

2727

2828
## Maven/Gradle
@@ -31,13 +31,13 @@ Implementations of `Replaceable` interface to easily replace placeholders in mes
3131
```xml
3232
<!-- Releases -->
3333
<repository>
34-
<id>titanvale-releases</id>
35-
<url>https://repo.titanvale.net/releases</url>
34+
<id>mythic-releases</id>
35+
<url>https://repo.mythicprojects.org/releases</url>
3636
</repository>
3737
<!-- Snapshots -->
3838
<repository>
39-
<id>titanvale-snapshots</id>
40-
<url>https://repo.titanvale.net/snapshots</url>
39+
<id>mythic-snapshots</id>
40+
<url>https://repo.mythicprojects.org/snapshots</url>
4141
</repository>
4242
```
4343

@@ -55,13 +55,13 @@ Implementations of `Replaceable` interface to easily replace placeholders in mes
5555
repositories {
5656
// Releases
5757
maven {
58-
name = "titanvale-releases"
59-
url = "https://repo.titanvale.net/releases"
58+
name = "mythic-releases"
59+
url = "https://repo.mythicprojects.org/releases"
6060
}
6161
// Snapshots
6262
maven {
63-
name = "titanvale-snapshots"
64-
url = "https://repo.titanvale.net/snapshots"
63+
name = "mythic-snapshots"
64+
url = "https://repo.mythicprojects.org/snapshots"
6565
}
6666
}
6767
```

build.gradle

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,25 @@ plugins {
55

66
allprojects {
77
group 'dev.peri.yetanothermessageslibrary'
8-
version '6.8.0-SNAPSHOT'
8+
version '7.0.0-SNAPSHOT'
99

1010
apply plugin: 'java-library'
1111
apply plugin: 'maven-publish'
1212
apply plugin: 'com.github.johnrengelman.shadow'
1313

14-
sourceCompatibility = JavaVersion.VERSION_1_8
15-
targetCompatibility = JavaVersion.VERSION_1_8
14+
sourceCompatibility = JavaVersion.VERSION_21
15+
targetCompatibility = JavaVersion.VERSION_21
1616

1717
compileJava.options.encoding = 'UTF-8'
1818
}
1919

2020
subprojects {
2121
repositories {
22-
mavenCentral()
22+
maven { url "https://repo.titanvale.net/releases" }
23+
maven { url "https://repo.titanvale.net/snapshots" }
2324

2425
maven { url "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" }
2526
maven { url "https://s01.oss.sonatype.org/content/repositories/snapshots/" }
26-
maven { url "https://repo.papermc.io/repository/maven-public/" }
27-
maven { url "https://storehouse.okaeri.eu/repository/maven-public/" }
2827
maven { url "https://repo.extendedclip.com/content/repositories/placeholderapi/" }
2928
}
3029

@@ -43,13 +42,12 @@ subprojects {
4342
publications {
4443
libraries(MavenPublication) {
4544
artifactId = project.name.toLowerCase()
46-
4745
from components.java
4846

4947
pom {
50-
url = "https://github.com/P3ridot/YetAnotherMessagesLibrary"
48+
url = "https://github.com/Mythic-Projects/YetAnotherMessagesLibrary"
5149
name = project.name
52-
description = "YetAnotherMessagesLibrary is simple Miecraft Messages Library based on `adventure`. It allows to easily send messages to players with built-in support for localization and placeholders."
50+
description = "YetAnotherMessagesLibrary is simple Minecraft Messages Library based on `adventure`. It allows to easily send messages to players with built-in support for localization and placeholders."
5351

5452
developers {
5553
developer {
@@ -60,9 +58,9 @@ subprojects {
6058
}
6159

6260
scm {
63-
url = "https://github.com/P3ridot/YetAnotherMessagesLibrary.git"
64-
connection = "git@github.com:P3ridot/YetAnotherMessagesLibrary.git"
65-
developerConnection = "git@github.com:P3ridot/YetAnotherMessagesLibrary.git"
61+
url = "https://github.com/Mythic-Projects/YetAnotherMessagesLibrary.git"
62+
connection = "git@github.com:Mythic-Projects/YetAnotherMessagesLibrary.git"
63+
developerConnection = "git@github.com:Mythic-Projects/YetAnotherMessagesLibrary.git"
6664
}
6765

6866
licenses {
@@ -93,8 +91,8 @@ subprojects {
9391

9492
repositories {
9593
maven {
96-
name "titanvale-repo"
97-
url "https://repo.titanvale.net/${version.toString().endsWith('SNAPSHOT') ? 'snapshots' : 'releases'}"
94+
name "mythic"
95+
url "https://repo.mythicprojects.org/${version.toString().endsWith('SNAPSHOT') ? 'snapshots' : 'releases'}"
9896

9997
credentials {
10098
username = System.getenv("MAVEN_NAME")
@@ -103,4 +101,4 @@ subprojects {
103101
}
104102
}
105103
}
106-
}
104+
}

core/build.gradle

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
dependencies {
2-
compileOnlyApi adventure.api
3-
compileOnlyApi adventure.minimessage
4-
compileOnlyApi adventure.serializer.legacy
2+
api project(':tools')
53
}

core/src/main/java/dev/peri/yetanothermessageslibrary/MessageService.java

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
package dev.peri.yetanothermessageslibrary;
22

33
import dev.peri.yetanothermessageslibrary.locale.LocaleProvider;
4+
import dev.peri.yetanothermessageslibrary.replace.ComponentReplacer;
45
import dev.peri.yetanothermessageslibrary.replace.Replaceable;
6+
import dev.peri.yetanothermessageslibrary.replace.StringReplaceable;
57
import dev.peri.yetanothermessageslibrary.replace.StringReplacer;
68
import java.util.List;
79
import java.util.Locale;
810
import java.util.Map;
911
import java.util.function.Function;
12+
import net.kyori.adventure.text.Component;
1013
import org.jetbrains.annotations.NotNull;
1114
import org.jetbrains.annotations.Nullable;
1215
import org.jetbrains.annotations.Unmodifiable;
1316

14-
public interface MessageService<C extends MessageRepository> {
17+
public interface MessageService<REPOSITORY extends MessageRepository> {
1518

1619
/**
1720
* Get message from repository
@@ -23,7 +26,7 @@ public interface MessageService<C extends MessageRepository> {
2326
* @param <T> type of message
2427
* @return message
2528
*/
26-
default <T> T get(@Nullable Object entity, @NotNull Function<@NotNull C, @Nullable T> valueSupplier) {
29+
default <T> T get(@Nullable Object entity, @NotNull Function<@NotNull REPOSITORY, @Nullable T> valueSupplier) {
2730
Locale locale = this.getLocale(entity);
2831
return valueSupplier.apply(this.getRepository(locale));
2932
}
@@ -36,7 +39,7 @@ default <T> T get(@Nullable Object entity, @NotNull Function<@NotNull C, @Nullab
3639
* @param <T> type of message
3740
* @return message
3841
*/
39-
default <T> T get(@NotNull Function<@NotNull C, @Nullable T> valueSupplier) {
42+
default <T> T get(@NotNull Function<@NotNull REPOSITORY, @Nullable T> valueSupplier) {
4043
return this.get(null, valueSupplier);
4144
}
4245

@@ -50,7 +53,7 @@ default <T> T get(@NotNull Function<@NotNull C, @Nullable T> valueSupplier) {
5053
* @param replacements replacements to replace in message
5154
* @return message with replaced placeholders
5255
*/
53-
default String get(@Nullable Object entity, @NotNull Function<@NotNull C, @Nullable String> stringSupplier, @NotNull Replaceable... replacements) {
56+
default String getString(@Nullable Object entity, @NotNull Function<@NotNull REPOSITORY, @Nullable String> stringSupplier, @NotNull StringReplaceable... replacements) {
5457
String string = this.get(entity, stringSupplier);
5558
if (string == null) {
5659
return null;
@@ -59,6 +62,25 @@ default String get(@Nullable Object entity, @NotNull Function<@NotNull C, @Nulla
5962
return StringReplacer.replace(locale, string, replacements);
6063
}
6164

65+
/**
66+
* Get message from repository and replace placeholders
67+
*
68+
* @param entity entity to find locale for using registered {@link LocaleProvider}
69+
* use default locale if entity is null or no {@link LocaleProvider} is registered
70+
* can be {@link Locale} if you want to use specific locale
71+
* @param componentSupplier function to get message from repository
72+
* @param replacements replacements to replace in message
73+
* @return message with replaced placeholders
74+
*/
75+
default Component getComponent(@Nullable Object entity, @NotNull Function<@NotNull REPOSITORY, @Nullable Component> componentSupplier, @NotNull Replaceable... replacements) {
76+
Component component = this.get(entity, componentSupplier);
77+
if (component == null) {
78+
return null;
79+
}
80+
Locale locale = this.getLocale(entity);
81+
return ComponentReplacer.replace(locale, component, replacements);
82+
}
83+
6284
/**
6385
* Get message from repository with default locale and replace placeholders
6486
*
@@ -69,7 +91,7 @@ default String get(@Nullable Object entity, @NotNull Function<@NotNull C, @Nulla
6991
* @param replacements replacements to replace in message
7092
* @return message with replaced placeholders
7193
*/
72-
default List<String> getList(@Nullable Object entity, @NotNull Function<@NotNull C, @Nullable List<String>> listSupplier, @NotNull Replaceable... replacements) {
94+
default List<String> getStringList(@Nullable Object entity, @NotNull Function<@NotNull REPOSITORY, @Nullable List<String>> listSupplier, @NotNull StringReplaceable... replacements) {
7395
List<String> stringList = this.get(entity, listSupplier);
7496
if (stringList == null || stringList.isEmpty()) {
7597
return stringList;
@@ -78,6 +100,25 @@ default List<String> getList(@Nullable Object entity, @NotNull Function<@NotNull
78100
return StringReplacer.replace(locale, stringList, replacements);
79101
}
80102

103+
/**
104+
* Get message from repository with default locale and replace placeholders
105+
*
106+
* @param entity entity to find locale for using registered {@link LocaleProvider}
107+
* use default locale if entity is null or no {@link LocaleProvider} is registered
108+
* can be {@link Locale} if you want to use specific locale
109+
* @param listSupplier function to get message from repository
110+
* @param replacements replacements to replace in message
111+
* @return message with replaced placeholders
112+
*/
113+
default List<Component> getComponentList(@Nullable Object entity, @NotNull Function<@NotNull REPOSITORY, @Nullable List<Component>> listSupplier, @NotNull Replaceable... replacements) {
114+
List<Component> componentList = this.get(entity, listSupplier);
115+
if (componentList == null || componentList.isEmpty()) {
116+
return componentList;
117+
}
118+
Locale locale = this.getLocale(entity);
119+
return ComponentReplacer.replace(locale, componentList, replacements);
120+
}
121+
81122
/**
82123
* Set default locale that will be used if:
83124
* <ul>
@@ -148,31 +189,31 @@ default List<String> getList(@Nullable Object entity, @NotNull Function<@NotNull
148189
*
149190
* @return message repositories
150191
*/
151-
@NotNull @Unmodifiable Map<Locale, C> getMessageRepositories();
192+
@NotNull @Unmodifiable Map<Locale, REPOSITORY> getMessageRepositories();
152193

153194
/**
154195
* Get message repository for locale
155196
*
156197
* @param locale locale
157198
* @return message repository
158199
*/
159-
@NotNull C getRepository(@NotNull Locale locale);
200+
@NotNull REPOSITORY getRepository(@NotNull Locale locale);
160201

161202
/**
162203
* Register message repository for locale
163204
*
164205
* @param locale locale
165206
* @param messageRepository message repository
166207
*/
167-
void registerRepository(@NotNull Locale locale, @NotNull C messageRepository);
208+
void registerRepository(@NotNull Locale locale, @NotNull REPOSITORY messageRepository);
168209

169210
/**
170211
* Register message repository for locale and set it as default
171212
*
172213
* @param defaultLocale default locale
173214
* @param messageRepository message repository
174215
*/
175-
default void registerDefaultRepository(@NotNull Locale defaultLocale, @NotNull C messageRepository) {
216+
default void registerDefaultRepository(@NotNull Locale defaultLocale, @NotNull REPOSITORY messageRepository) {
176217
this.setDefaultLocale(defaultLocale);
177218
this.registerRepository(defaultLocale, messageRepository);
178219
}

core/src/main/java/dev/peri/yetanothermessageslibrary/SendableMessageService.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
import org.jetbrains.annotations.NotNull;
99
import org.jetbrains.annotations.Nullable;
1010

11-
public interface SendableMessageService<R, C extends MessageRepository, D extends MessageDispatcher<R, ? extends D>> extends MessageService<C> {
11+
public interface SendableMessageService<RECEIVER, REPOSITORY extends MessageRepository, DISPATCHER extends MessageDispatcher<RECEIVER, ? extends DISPATCHER>>
12+
extends MessageService<REPOSITORY> {
1213

1314
/**
1415
* Wrap message in {@link MessageDispatcher} to easily send it
@@ -17,12 +18,12 @@ public interface SendableMessageService<R, C extends MessageRepository, D extend
1718
* @return MessageDispatcher
1819
*/
1920
@SuppressWarnings("unchecked")
20-
default D getMessage(@NotNull Function<@NotNull C, @Nullable Sendable> messageSupplier) {
21+
default DISPATCHER getMessage(@NotNull Function<@NotNull REPOSITORY, @Nullable Sendable> messageSupplier) {
2122
return this.getDispatcherFactory().prepareDispatcher(this.getViewerService(), this::getLocale, (entity) -> this.get(entity, messageSupplier));
2223
}
2324

24-
@NotNull ViewerService<R> getViewerService();
25+
@NotNull ViewerService<RECEIVER> getViewerService();
2526

26-
@NotNull MessageDispatcherFactory<R, ? extends D> getDispatcherFactory();
27+
@NotNull MessageDispatcherFactory<RECEIVER, ? extends DISPATCHER> getDispatcherFactory();
2728

2829
}

core/src/main/java/dev/peri/yetanothermessageslibrary/SimpleMessageService.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
import org.jetbrains.annotations.Nullable;
1313
import org.jetbrains.annotations.Unmodifiable;
1414

15-
public abstract class SimpleMessageService<C extends MessageRepository> implements MessageService<C> {
15+
public abstract class SimpleMessageService<REPOSITORY extends MessageRepository> implements MessageService<REPOSITORY> {
1616

1717
private Locale defaultLocale = Locale.getDefault();
1818
private final Collection<LocaleProvider<?>> localeProviders = new LinkedHashSet<>();
19-
private final Map<Locale, C> messageRepositories = new LinkedHashMap<>();
19+
private final Map<Locale, REPOSITORY> messageRepositories = new LinkedHashMap<>();
2020

2121
@Override
2222
public @NotNull Locale getDefaultLocale() {
@@ -45,13 +45,13 @@ public void registerLocaleProvider(@NotNull LocaleProvider<?> localeProvider) {
4545
}
4646

4747
@Override
48-
public @NotNull @Unmodifiable Map<Locale, C> getMessageRepositories() {
48+
public @NotNull @Unmodifiable Map<Locale, REPOSITORY> getMessageRepositories() {
4949
return Collections.unmodifiableMap(this.messageRepositories);
5050
}
5151

5252
@Override
53-
public @NotNull C getRepository(@NotNull Locale locale) {
54-
C messageRepository = this.messageRepositories.get(locale);
53+
public @NotNull REPOSITORY getRepository(@NotNull Locale locale) {
54+
REPOSITORY messageRepository = this.messageRepositories.get(locale);
5555
if (messageRepository == null) {
5656
// If we can't find message repository for language wariant (for e.g. en_GB) we will try to find message repository for language (for e.g. en)
5757
messageRepository = this.messageRepositories.get(Locale.forLanguageTag(locale.getLanguage()));
@@ -69,7 +69,7 @@ public void registerLocaleProvider(@NotNull LocaleProvider<?> localeProvider) {
6969
}
7070

7171
@Override
72-
public void registerRepository(@NotNull Locale locale, @NotNull C messageRepository) {
72+
public void registerRepository(@NotNull Locale locale, @NotNull REPOSITORY messageRepository) {
7373
Validate.notNull(locale, "Locale cannot be null");
7474
Validate.notNull(messageRepository, "Message repository cannot be null");
7575
this.messageRepositories.put(locale, messageRepository);

0 commit comments

Comments
 (0)