1
mirror of https://github.com/CarmJos/MineConfiguration.git synced 2026-06-04 13:55:03 +08:00

feat(conf): 搭配XSeries实现部分配置类的跨版本支持。

This commit is contained in:
2023-05-27 00:12:37 +08:00
parent 437e1d6d61
commit 8f3d574446
15 changed files with 139 additions and 125 deletions
+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<artifactId>mineconfiguration-parent</artifactId>
<groupId>cc.carm.lib</groupId>
<version>2.6.0</version>
<version>2.6.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<properties>
@@ -47,11 +47,20 @@ public abstract class ConfigMessage<M, T extends AbstractText<R>, R>
sendFunction.accept(receiver, message);
}
@Override
public @Nullable M parse(@Nullable R sender, @NotNull Map<String, Object> placeholders) {
protected <N> @Nullable N parseTo(@Nullable R sender, @NotNull Map<String, Object> placeholders,
@NotNull BiFunction<@Nullable R, @NotNull String, @Nullable N> parser) {
T value = get();
if (value == null || value.getMessage().isEmpty()) return null;
else return value.parse(this.messageParser, sender, placeholders);
else return value.parse(parser, sender, placeholders);
}
public @Nullable String parseString(@Nullable R sender, @NotNull Map<String, Object> placeholders) {
return parseTo(sender, placeholders, (r, s) -> s);
}
@Override
public @Nullable M parse(@Nullable R sender, @NotNull Map<String, Object> placeholders) {
return parseTo(sender, placeholders, this.messageParser);
}
public void set(@Nullable String value) {
@@ -4,6 +4,7 @@ import cc.carm.lib.configuration.core.function.ConfigDataFunction;
import cc.carm.lib.configuration.core.value.ValueManifest;
import cc.carm.lib.configuration.core.value.type.ConfiguredList;
import cc.carm.lib.mineconfiguration.common.data.AbstractText;
import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -68,14 +69,22 @@ public abstract class ConfigMessageList<M, T extends AbstractText<R>, R>
.collect(Collectors.toList());
}
public @Nullable M parseToLine(@Nullable R receiver, @NotNull Object... values) {
return parseToLine(receiver, "\n", ParamsUtils.buildParams(this.params, values));
}
public @Nullable M parseToLine(@Nullable R receiver, @NotNull Map<String, Object> placeholders) {
return parseToLine(receiver, "\n", placeholders);
}
public @Nullable M parseToLine(@Nullable R receiver, @NotNull String delimiter, @NotNull Map<String, Object> placeholders) {
List<T> list = get();
if (list.isEmpty()) return null;
List<String> messages = list.stream().map(T::getMessage).collect(Collectors.toList());
if (String.join("", messages).isEmpty()) return null;
String combined = String.join("\n", messages);
String combined = String.join(delimiter, messages);
T text = textBuilder.apply(combined);
return text.parse(this.messageParser, receiver, placeholders);