cc.carm.lib
easyplugin-color
diff --git a/common/src/main/java/cc/carm/lib/mineconfiguration/common/AbstractConfiguration.java b/common/src/main/java/cc/carm/lib/mineconfiguration/common/AbstractConfiguration.java
index ce2a561..8f694f2 100644
--- a/common/src/main/java/cc/carm/lib/mineconfiguration/common/AbstractConfiguration.java
+++ b/common/src/main/java/cc/carm/lib/mineconfiguration/common/AbstractConfiguration.java
@@ -1,51 +1,51 @@
package cc.carm.lib.mineconfiguration.common;
-import cc.carm.lib.configuration.core.Configuration;
-import cc.carm.lib.configuration.core.source.ConfigurationProvider;
+import cc.carm.lib.configuration.Configuration;
+import cc.carm.lib.configuration.source.ConfigurationHolder;
import org.jetbrains.annotations.NotNull;
-public abstract class AbstractConfiguration> {
+public abstract class AbstractConfiguration> {
- private final P configProvider;
- private final P messageProvider;
+ private final HOLDER config;
+ private final HOLDER message;
- protected AbstractConfiguration(@NotNull P configProvider, @NotNull P messageProvider) {
- this.configProvider = configProvider;
- this.messageProvider = messageProvider;
+ protected AbstractConfiguration(@NotNull HOLDER config, @NotNull HOLDER message) {
+ this.config = config;
+ this.message = message;
}
public void initializeConfig(@NotNull Configuration configRoot) {
- this.configProvider.initialize(configRoot);
+ this.config.initialize(configRoot);
}
public void initializeMessage(@NotNull Configuration messageRoot) {
- this.messageProvider.initialize(messageRoot);
+ this.message.initialize(messageRoot);
}
public void initializeConfig(@NotNull Class extends Configuration> configRoot) {
- this.configProvider.initialize(configRoot);
+ this.config.initialize(configRoot);
}
public void initializeMessage(@NotNull Class extends Configuration> messageRoot) {
- this.messageProvider.initialize(messageRoot);
+ this.message.initialize(messageRoot);
}
- public P getConfigProvider() {
- return configProvider;
+ public HOLDER getConfig() {
+ return config;
}
- public P getMessageProvider() {
- return messageProvider;
+ public HOLDER getMessage() {
+ return message;
}
public void reload() throws Exception {
- getConfigProvider().reload();
- getMessageProvider().reload();
+ getConfig().reload();
+ getMessage().reload();
}
public void save() throws Exception {
- getConfigProvider().save();
- getMessageProvider().save();
+ getConfig().save();
+ getMessage().save();
}
}
diff --git a/common/src/main/java/cc/carm/lib/mineconfiguration/common/builder/message/MessageConfigBuilder.java b/common/src/main/java/cc/carm/lib/mineconfiguration/common/builder/message/MessageConfigBuilder.java
deleted file mode 100644
index 0cb450e..0000000
--- a/common/src/main/java/cc/carm/lib/mineconfiguration/common/builder/message/MessageConfigBuilder.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cc.carm.lib.mineconfiguration.common.builder.message;
-
-import cc.carm.lib.mineconfiguration.common.data.AbstractText;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.function.BiFunction;
-
-public abstract class MessageConfigBuilder> {
-
- protected final @NotNull Class receiverClazz;
- protected final @NotNull Class textClazz;
-
- public MessageConfigBuilder(@NotNull Class receiverClazz,
- @NotNull Class textClazz) {
- this.receiverClazz = receiverClazz;
- this.textClazz = textClazz;
- }
-
- /**
- * 以单条消息为目标,构建一个消息配置。
- *
- * @param parser 消息解析器,负责将String转换为目标消息类型。
- * @param 消息类型
- * @return 单条消息构建器
- */
- public abstract @NotNull MessageValueBuilder asValue(@NotNull BiFunction<@Nullable R, @NotNull String, @Nullable M> parser);
-
- /**
- * 以多行消息为目标,构建一个消息配置。
- *
- * @param parser 消息解析器
- * @param 消息类型
- * @return 多行消息构建器
- */
- public abstract @NotNull MessageListBuilder asList(@NotNull BiFunction<@Nullable R, @NotNull String, @Nullable M> parser);
-
-
-}
diff --git a/common/src/main/java/cc/carm/lib/mineconfiguration/common/builder/message/MessageListBuilder.java b/common/src/main/java/cc/carm/lib/mineconfiguration/common/builder/message/MessageListBuilder.java
deleted file mode 100644
index 47193c2..0000000
--- a/common/src/main/java/cc/carm/lib/mineconfiguration/common/builder/message/MessageListBuilder.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package cc.carm.lib.mineconfiguration.common.builder.message;
-
-
-import cc.carm.lib.configuration.core.builder.CommonConfigBuilder;
-import cc.carm.lib.configuration.core.value.ValueManifest;
-import cc.carm.lib.mineconfiguration.common.data.AbstractText;
-import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
-import cc.carm.lib.mineconfiguration.common.value.ConfigMessageList;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
-import java.util.function.BiConsumer;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-public abstract class MessageListBuilder, B extends MessageListBuilder>
- extends CommonConfigBuilder, B> {
-
- protected final @NotNull Class receiverClazz;
-
- protected @NotNull String[] params;
- protected @NotNull BiFunction<@Nullable R, @NotNull String, @Nullable M> messageParser;
- protected @NotNull BiConsumer<@NotNull R, @NotNull List> sendFunction;
-
- protected @NotNull Function<@NotNull String, @NotNull String> paramFormatter;
- protected final @NotNull Function textBuilder;
-
- public MessageListBuilder(@NotNull Class receiverClazz,
- @NotNull Function textBuilder,
- @NotNull BiFunction<@Nullable R, @NotNull String, @Nullable M> parser) {
- this.receiverClazz = receiverClazz;
- this.textBuilder = textBuilder;
- this.params = new String[0];
- this.messageParser = parser;
- this.paramFormatter = ParamsUtils.DEFAULT_PARAM_FORMATTER;
- this.sendFunction = (sender, M) -> {
- };
- }
-
- public B defaults(@NotNull String... messages) {
- return defaults(new ArrayList<>(Arrays.stream(messages).map(textBuilder).collect(Collectors.toList())));
- }
-
- public B params(@NotNull String... params) {
- this.params = params;
- return getThis();
- }
-
- public B params(@NotNull List params) {
- this.params = params.toArray(new String[0]);
- return getThis();
- }
-
- public B formatParam(@NotNull Function<@NotNull String, @NotNull String> paramFormatter) {
- this.paramFormatter = paramFormatter;
- return getThis();
- }
-
- public B whenSend(@NotNull BiConsumer<@NotNull R, @NotNull List> sendFunction) {
- this.sendFunction = sendFunction;
- return getThis();
- }
-
- @Override
- public abstract @NotNull ConfigMessageList build();
-
- protected @NotNull ValueManifest> buildManifest(@NotNull List emptyValue) {
- return new ValueManifest<>(
- this.provider, this.path, this.headerComments, this.inlineComment,
- Optional.ofNullable(this.defaultValue).orElse(emptyValue)
- );
- }
-
-}
diff --git a/common/src/main/java/cc/carm/lib/mineconfiguration/common/builder/message/MessageValueBuilder.java b/common/src/main/java/cc/carm/lib/mineconfiguration/common/builder/message/MessageValueBuilder.java
deleted file mode 100644
index 87f5032..0000000
--- a/common/src/main/java/cc/carm/lib/mineconfiguration/common/builder/message/MessageValueBuilder.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package cc.carm.lib.mineconfiguration.common.builder.message;
-
-import cc.carm.lib.configuration.core.builder.CommonConfigBuilder;
-import cc.carm.lib.configuration.core.value.ValueManifest;
-import cc.carm.lib.mineconfiguration.common.data.AbstractText;
-import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
-import cc.carm.lib.mineconfiguration.common.value.ConfigMessage;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.List;
-import java.util.Optional;
-import java.util.function.BiConsumer;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-
-public abstract class MessageValueBuilder, B extends MessageValueBuilder>
- extends CommonConfigBuilder {
-
-
- protected final @NotNull Class receiverClazz;
- protected @NotNull String[] params;
- protected @NotNull BiFunction<@Nullable R, @NotNull String, @Nullable M> messageParser;
- protected @NotNull BiConsumer<@NotNull R, @NotNull M> sendHandler;
-
- protected @NotNull Function<@NotNull String, @NotNull String> paramFormatter;
-
- protected final @NotNull Function textBuilder;
-
- public MessageValueBuilder(@NotNull Class receiverClazz,
- @NotNull Function textBuilder,
- @NotNull BiFunction<@Nullable R, @NotNull String, @Nullable M> parser) {
- this.receiverClazz = receiverClazz;
- this.params = new String[0];
- this.paramFormatter = ParamsUtils.DEFAULT_PARAM_FORMATTER;
- this.textBuilder = textBuilder;
- this.messageParser = parser;
- this.sendHandler = (receiver, M) -> {
- };
- }
-
- public B defaults(@NotNull String message) {
- return defaults(this.textBuilder.apply(message));
- }
-
- public B params(@NotNull String... params) {
- this.params = params;
- return getThis();
- }
-
- public B params(@NotNull List params) {
- this.params = params.toArray(new String[0]);
- return getThis();
- }
-
- public B formatParam(@NotNull Function<@NotNull String, @NotNull String> paramFormatter) {
- this.paramFormatter = paramFormatter;
- return getThis();
- }
-
- public B whenSend(@NotNull BiConsumer<@NotNull R, @NotNull M> sendFunction) {
- this.sendHandler = sendFunction;
- return getThis();
- }
-
- @Override
- public abstract @NotNull ConfigMessage build();
-
- protected @NotNull ValueManifest buildManifest(@NotNull T emptyValue) {
- return new ValueManifest<>(
- this.provider, this.path, this.headerComments, this.inlineComment,
- Optional.ofNullable(this.defaultValue).orElse(emptyValue)
- );
- }
-}
diff --git a/common/src/main/java/cc/carm/lib/mineconfiguration/common/data/AbstractText.java b/common/src/main/java/cc/carm/lib/mineconfiguration/common/data/AbstractText.java
deleted file mode 100644
index 1f6d063..0000000
--- a/common/src/main/java/cc/carm/lib/mineconfiguration/common/data/AbstractText.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package cc.carm.lib.mineconfiguration.common.data;
-
-import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.Map;
-import java.util.function.BiFunction;
-
-/**
- * @param Receiver type
- */
-public abstract class AbstractText {
-
- private final @NotNull Class receiverClazz;
- protected @NotNull String message;
-
- public AbstractText(@NotNull Class receiverClazz, @NotNull String message) {
- this.receiverClazz = receiverClazz;
- this.message = message;
- }
-
- public @NotNull Class getReceiverClazz() {
- return receiverClazz;
- }
-
- public @NotNull String getMessage() {
- return this.message;
- }
-
- public @NotNull M parse(@NotNull BiFunction<@Nullable R, @NotNull String, @NotNull M> parser,
- @Nullable R receiver, @Nullable String[] params, @Nullable Object[] values) {
- return parse(parser, receiver, ParamsUtils.buildParams(params, values));
- }
-
- public @NotNull M parse(@NotNull BiFunction<@Nullable R, @NotNull String, @NotNull M> parser,
- @Nullable R receiver, @NotNull Map placeholders) {
- return parser.apply(receiver, ParamsUtils.setPlaceholders(message, placeholders));
- }
-
-
-}
diff --git a/common/src/main/java/cc/carm/lib/mineconfiguration/common/utils/ParamsUtils.java b/common/src/main/java/cc/carm/lib/mineconfiguration/common/utils/ParamsUtils.java
deleted file mode 100644
index 65ff207..0000000
--- a/common/src/main/java/cc/carm/lib/mineconfiguration/common/utils/ParamsUtils.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package cc.carm.lib.mineconfiguration.common.utils;
-
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.function.Function;
-
-public class ParamsUtils {
-
- /**
- * 默认的变量格式为 {@code %(变量名)}。
- */
- public static Function<@NotNull String, @NotNull String> DEFAULT_PARAM_FORMATTER = (s) -> "%(" + s + ")";
-
- public static String[] formatParams(@NotNull Function formatter, @NotNull String[] params) {
- return Arrays.stream(params).map(formatter).toArray(String[]::new);
- }
-
- public static Map buildParams(@Nullable String[] params, @Nullable Object[] values) {
- Map map = new HashMap<>();
- if (params == null || params.length == 0) return map;
- for (int i = 0; i < params.length; i++) {
- map.put(params[i], values.length > i ? values[i] : "?");
- }
- return map;
- }
-
- public static String setPlaceholders(@NotNull String messages, @NotNull Map placeholders) {
- if (messages.isEmpty()) return messages;
-
- String parsed = messages;
- for (Map.Entry entry : placeholders.entrySet()) {
- Object value = entry.getValue();
- parsed = parsed.replace(entry.getKey(), value == null ? "" : value.toString());
- }
-
- return parsed;
- }
-
-}
diff --git a/common/src/main/java/cc/carm/lib/mineconfiguration/common/value/BaseMessage.java b/common/src/main/java/cc/carm/lib/mineconfiguration/common/value/BaseMessage.java
deleted file mode 100644
index ac43dc6..0000000
--- a/common/src/main/java/cc/carm/lib/mineconfiguration/common/value/BaseMessage.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package cc.carm.lib.mineconfiguration.common.value;
-
-import cc.carm.lib.mineconfiguration.common.builder.message.MessageValueBuilder;
-import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
-import org.jetbrains.annotations.ApiStatus;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.jetbrains.annotations.Unmodifiable;
-
-import java.util.Map;
-import java.util.Optional;
-import java.util.function.Function;
-import java.util.function.Predicate;
-
-public interface BaseMessage {
-
- /**
- * 得到所有的接收者
- *
- * @return 全部可能的接收者
- */
- @Unmodifiable
- @NotNull Iterable getAllReceivers();
-
- /**
- * 得到消息中的通过 {@link MessageValueBuilder#params(String...)}已定变量名(按定义顺序)
- *
- * @return 已定变量
- */
- @NotNull String[] getParams();
-
- /**
- * 向接收者发送消息的根方法。
- *
- * @param receiver 接收者
- * @param message 消息内容
- */
- @ApiStatus.OverrideOnly
- void apply(@NotNull R receiver, @NotNull M message);
-
- /**
- * 填入变量值,返回一个准备好待发送的消息。
- *
- * @param values 变量值
- * @return 准备好待发送的消息
- */
- default @NotNull PreparedMessage prepare(@NotNull Object... values) {
- return new PreparedMessage<>(this, values);
- }
-
- /**
- * 为某位接收者解析此消息。
- *
- * @param receiver 接收者
- * @param placeholders 消息中的变量与对应参数
- * @return 解析变量后的消息内容
- */
- @Nullable M parse(@Nullable R receiver, @NotNull Map placeholders);
-
- /**
- * 为某位接收者解析此消息。
- *
- * @param receiver 接收者
- * @param values 已定变量的对应参数
- * @return 解析变量后的消息内容
- */
- default @Nullable M parse(@Nullable R receiver, @Nullable Object... values) {
- return parse(receiver, ParamsUtils.buildParams(getParams(), values));
- }
-
- /**
- * 向某位接收者发送消息
- *
- * @param receiver 消息的接收者
- * @param values 已定变量的对应参数
- */
- default void send(@Nullable R receiver, @Nullable Object... values) {
- send(receiver, ParamsUtils.buildParams(getParams(), values));
- }
-
- /**
- * 向某位接收者发送消息
- *
- * @param receiver 消息的接收者
- * @param placeholders 消息中的变量与对应参数
- */
- default void send(@Nullable R receiver, @NotNull Map placeholders) {
- if (receiver == null) return;
- M parsed = parse(receiver, placeholders);
- if (parsed == null) return;
- apply(receiver, parsed);
- }
-
- /**
- * 向全部接收者(包括后台)发送不同参数的消息
- *
- * @param eachValues 每位接收者将收到已定变量的对应参数(按定义顺序)
- */
- default void sendToEach(@NotNull Function<@NotNull R, Object[]> eachValues) {
- sendToEach(null, eachValues);
- }
-
- /**
- * 向特定接收者发送不同参数的消息
- *
- * @param limiter 接收者限定器,为空则不限定接收者。
- * @param eachValues 每位接收者将收到已定变量的对应参数(按定义顺序)
- */
- default void sendToEach(@Nullable Predicate limiter,
- @NotNull Function<@NotNull R, Object[]> eachValues) {
- Predicate predicate = Optional.ofNullable(limiter).orElse(r -> true);
- for (R r : getAllReceivers()) {
- if (predicate.test(r)) {
- send(r, ParamsUtils.buildParams(getParams(), eachValues.apply(r)));
- }
- }
- }
-
-
- /**
- * 广播此消息(包括后台)
- *
- * @param values 已定变量的对应参数(按定义顺序)
- */
- default void sendToAll(@Nullable Object... values) {
- broadcast(values);
- }
-
- /**
- * 广播此消息(包括后台)
- *
- * @param placeholders 消息中的变量与对应参数
- */
- default void sendToAll(@NotNull Map placeholders) {
- broadcast(placeholders);
- }
-
-
- /**
- * 广播此消息(包括后台)
- *
- * @param values 已定变量的对应参数(按定义顺序)
- */
- default void broadcast(@Nullable Object... values) {
- broadcast(ParamsUtils.buildParams(getParams(), values));
- }
-
- /**
- * 广播此消息(包括后台)
- *
- * @param placeholders 消息中的变量与对应参数
- */
- default void broadcast(@NotNull Map placeholders) {
- getAllReceivers().forEach(r -> send(r, placeholders));
- }
-
-}
diff --git a/common/src/main/java/cc/carm/lib/mineconfiguration/common/value/ConfigMessage.java b/common/src/main/java/cc/carm/lib/mineconfiguration/common/value/ConfigMessage.java
deleted file mode 100644
index f4aa1d0..0000000
--- a/common/src/main/java/cc/carm/lib/mineconfiguration/common/value/ConfigMessage.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package cc.carm.lib.mineconfiguration.common.value;
-
-import cc.carm.lib.configuration.core.function.ConfigValueParser;
-import cc.carm.lib.configuration.core.value.ValueManifest;
-import cc.carm.lib.configuration.core.value.type.ConfiguredValue;
-import cc.carm.lib.mineconfiguration.common.data.AbstractText;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.function.BiConsumer;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-
-public abstract class ConfigMessage, R>
- extends ConfiguredValue implements BaseMessage {
-
- protected final @NotNull String[] params;
- protected final @NotNull BiFunction<@Nullable R, @NotNull String, @Nullable M> messageParser;
- protected final @NotNull BiConsumer<@NotNull R, @NotNull M> sendFunction;
-
- protected final @NotNull Function textBuilder;
-
- public ConfigMessage(@NotNull ValueManifest manifest,
- @NotNull Class textClazz, @NotNull String[] params,
- @NotNull BiFunction<@Nullable R, @NotNull String, @Nullable M> messageParser,
- @NotNull BiConsumer<@NotNull R, @NotNull M> sendFunction,
- @NotNull Function textBuilder) {
- super(
- manifest, textClazz,
- ConfigValueParser.castToString().andThen((s, d) -> textBuilder.apply(s)),
- AbstractText::getMessage
- );
- this.params = params;
- this.messageParser = messageParser;
- this.sendFunction = sendFunction;
- this.textBuilder = textBuilder;
- }
-
- @Override
- public String[] getParams() {
- return params;
- }
-
- @Override
- public void apply(@NotNull R receiver, @NotNull M message) {
- sendFunction.accept(receiver, message);
- }
-
- protected @Nullable N parseTo(@Nullable R sender, @NotNull Map 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(parser, sender, placeholders);
- }
-
- public @Nullable String parseString(@Nullable R sender, @NotNull Map placeholders) {
- return parseTo(sender, placeholders, (r, s) -> s);
- }
-
- @Override
- public @Nullable M parse(@Nullable R sender, @NotNull Map placeholders) {
- return parseTo(sender, placeholders, this.messageParser);
- }
-
- public void set(@Nullable String value) {
- this.set(value == null ? null : buildText(value));
- }
-
- protected T buildText(String value) {
- return textBuilder.apply(value);
- }
-
- public abstract class PreparedMessage {
-
- protected final @NotNull Object[] values;
-
- protected PreparedMessage(@NotNull Object[] values) {
- this.values = values;
- }
-
- public Object[] getValues() {
- return values;
- }
-
- public abstract void to(P receiver);
-
- public void to(Collection
receivers) {
- receivers.forEach(this::to);
- }
-
- public N get(P receiver) {
- return null;
- }
-
- }
-
-}
diff --git a/common/src/main/java/cc/carm/lib/mineconfiguration/common/value/ConfigMessageList.java b/common/src/main/java/cc/carm/lib/mineconfiguration/common/value/ConfigMessageList.java
deleted file mode 100644
index af4bd86..0000000
--- a/common/src/main/java/cc/carm/lib/mineconfiguration/common/value/ConfigMessageList.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package cc.carm.lib.mineconfiguration.common.value;
-
-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;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.function.BiConsumer;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-public abstract class ConfigMessageList, R>
- extends ConfiguredList implements BaseMessage> {
-
- protected final @NotNull String[] params;
- protected final @NotNull BiFunction<@Nullable R, @NotNull String, @Nullable M> messageParser;
- protected final @NotNull BiConsumer<@NotNull R, @NotNull List> sendFunction;
-
- protected final @NotNull Function textBuilder;
-
- public ConfigMessageList(@NotNull ValueManifest> manifest,
- @NotNull Class textClazz, @NotNull String[] params,
- @NotNull BiFunction<@Nullable R, @NotNull String, @Nullable M> messageParser,
- @NotNull BiConsumer<@NotNull R, @NotNull List> sendFunction,
- @NotNull Function textBuilder) {
- super(
- manifest, textClazz,
- ConfigDataFunction.castToString().andThen(textBuilder::apply),
- AbstractText::getMessage
- );
- this.params = params;
- this.messageParser = messageParser;
- this.sendFunction = sendFunction;
- this.textBuilder = textBuilder;
- }
-
- @Override
- public String[] getParams() {
- return params;
- }
-
- @Override
- public void apply(@NotNull R receiver, @NotNull List message) {
- sendFunction.accept(receiver, message);
- }
-
- /**
- * 为某位接收者解析消息
- *
- * @param receiver 消息的接收者
- * @param placeholders 消息中的变量与对应参数
- */
- @Override
- public @Nullable List parse(@Nullable R receiver, @NotNull Map placeholders) {
- List list = get();
- if (list.isEmpty()) return null;
-
- List messages = list.stream().map(T::getMessage).collect(Collectors.toList());
- if (String.join("", messages).isEmpty()) return null;
-
- return list.stream().map(value -> value.parse(this.messageParser, receiver, placeholders))
- .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 placeholders) {
- return parseToLine(receiver, "\n", placeholders);
- }
-
- public @Nullable M parseToLine(@Nullable R receiver, @NotNull String delimiter, @NotNull Map placeholders) {
- List list = get();
- if (list.isEmpty()) return null;
-
- List messages = list.stream().map(T::getMessage).collect(Collectors.toList());
- if (String.join("", messages).isEmpty()) return null;
-
- String combined = String.join(delimiter, messages);
- T text = textBuilder.apply(combined);
-
- return text.parse(this.messageParser, receiver, placeholders);
- }
-
- public void setMessages(@NotNull String... values) {
- setMessages(values.length == 0 ? null : Arrays.asList(values));
- }
-
- public void setMessages(@Nullable List values) {
- if (values == null) {
- set(null);
- } else {
- set(buildText(values));
- }
- }
-
- protected List buildText(List values) {
- return values.stream().map(textBuilder).collect(Collectors.toList());
- }
-
-}
diff --git a/common/src/main/java/cc/carm/lib/mineconfiguration/common/value/PreparedMessage.java b/common/src/main/java/cc/carm/lib/mineconfiguration/common/value/PreparedMessage.java
deleted file mode 100644
index d40ceb8..0000000
--- a/common/src/main/java/cc/carm/lib/mineconfiguration/common/value/PreparedMessage.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package cc.carm.lib.mineconfiguration.common.value;
-
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-public class PreparedMessage {
-
- protected final @NotNull BaseMessage message;
- protected final @NotNull Object[] values;
-
- protected PreparedMessage(@NotNull BaseMessage message, @NotNull Object[] values) {
- this.message = message;
- this.values = values;
- }
-
- /**
- * 为某位接收者解析此消息。
- *
- * @param receiver 接收者
- * @return 解析变量后的消息内容
- */
- public @Nullable M parse(@Nullable R receiver) {
- return message.parse(receiver, values);
- }
-
- /**
- * 向某位接收者发送消息
- *
- * @param receiver 消息的接收者
- */
- public void to(@Nullable R receiver) {
- message.send(receiver, values);
- }
-
- /**
- * 向某位接收者发送消息
- *
- * @param receivers 消息的接收者们
- */
- public void to(@NotNull Iterable extends R> receivers) {
- receivers.forEach(this::to);
- }
-
- public void toAll() {
- to(message.getAllReceivers());
- }
-
-}
diff --git a/platform/bukkit/pom.xml b/platform/bukkit/pom.xml
index 8d0e273..546a765 100644
--- a/platform/bukkit/pom.xml
+++ b/platform/bukkit/pom.xml
@@ -5,7 +5,7 @@
mineconfiguration-parent
cc.carm.lib
- 2.9.3
+ 3.0.0
../../pom.xml
4.0.0
@@ -19,7 +19,7 @@
jar
MineConfiguration-Bukkit
- 轻松(做)配置,适用于Bukkit系服务端的版本。
+ EasyConfiguration for Bukkit.
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/CraftConfigValue.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/CraftConfigValue.java
deleted file mode 100644
index 6828c85..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/CraftConfigValue.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit;
-
-import cc.carm.lib.configuration.core.source.ConfigurationProvider;
-import cc.carm.lib.configuration.core.value.ValueManifest;
-import cc.carm.lib.configuration.core.value.impl.CachedConfigValue;
-import cc.carm.lib.mineconfiguration.bukkit.source.CraftConfigProvider;
-import cc.carm.lib.mineconfiguration.bukkit.source.CraftSectionWrapper;
-import org.jetbrains.annotations.NotNull;
-
-public abstract class CraftConfigValue extends CachedConfigValue {
-
- protected CraftConfigValue(@NotNull ValueManifest manifest) {
- super(manifest);
- }
-
- public CraftConfigProvider getBukkitProvider() {
- ConfigurationProvider> provider = getProvider();
- if (provider instanceof CraftConfigProvider) return (CraftConfigProvider) getProvider();
- else throw new IllegalStateException("Provider is not a CraftConfigProvider");
- }
-
- public CraftSectionWrapper getBukkitConfig() {
- return getBukkitProvider().getConfiguration();
- }
-
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/MineConfiguration.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/MineConfiguration.java
index 6249eab..c4d0ec3 100644
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/MineConfiguration.java
+++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/MineConfiguration.java
@@ -1,47 +1,24 @@
package cc.carm.lib.mineconfiguration.bukkit;
-import cc.carm.lib.configuration.core.Configuration;
-import cc.carm.lib.configuration.core.ConfigurationRoot;
-import cc.carm.lib.mineconfiguration.bukkit.source.BukkitConfigProvider;
+import cc.carm.lib.configuration.Configuration;
+import cc.carm.lib.configuration.source.ConfigurationHolder;
+import cc.carm.lib.mineconfiguration.bukkit.source.BukkitConfigFactory;
+import cc.carm.lib.mineconfiguration.bukkit.source.BukkitSource;
import cc.carm.lib.mineconfiguration.common.AbstractConfiguration;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import java.io.File;
-import java.io.IOException;
-public class MineConfiguration extends AbstractConfiguration {
+public class MineConfiguration extends AbstractConfiguration> {
- public static BukkitConfigProvider from(File file, String source) {
- BukkitConfigProvider provider = new BukkitConfigProvider(file);
- try {
- provider.initializeFile(source);
- provider.initializeConfig();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return provider;
+ public static ConfigurationHolder from(File file, String source) {
+ return BukkitConfigFactory.from(file).resourcePath(source).build();
}
- public static BukkitConfigProvider from(File file) {
- return from(file, file.getName());
- }
-
- public static BukkitConfigProvider from(String fileName) {
- return from(fileName, fileName);
- }
-
- public static BukkitConfigProvider from(String fileName, String source) {
- return from(new File(fileName), source);
- }
-
- public static BukkitConfigProvider from(Plugin plugin, String fileName) {
- return from(plugin, fileName, fileName);
- }
-
- public static BukkitConfigProvider from(Plugin plugin, String fileName, String source) {
- return from(new File(plugin.getDataFolder(), fileName), source);
+ public static ConfigurationHolder from(Plugin plugin, String fileName) {
+ return from(new File(plugin.getDataFolder(), fileName), fileName);
}
public MineConfiguration(@NotNull JavaPlugin plugin) {
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/AbstractCraftBuilder.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/AbstractCraftBuilder.java
deleted file mode 100644
index 35b1349..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/AbstractCraftBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.builder;
-
-import cc.carm.lib.mineconfiguration.bukkit.source.CraftConfigProvider;
-import cc.carm.lib.configuration.core.builder.AbstractConfigBuilder;
-
-public abstract class AbstractCraftBuilder>
- extends AbstractConfigBuilder {
-
- public AbstractCraftBuilder() {
- super(CraftConfigProvider.class);
- }
-
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/item/ItemConfigBuilder.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/item/ItemConfigBuilder.java
deleted file mode 100644
index b3ae3f5..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/item/ItemConfigBuilder.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.builder.item;
-
-import cc.carm.lib.configuration.core.value.ValueManifest;
-import cc.carm.lib.mineconfiguration.bukkit.builder.AbstractCraftBuilder;
-import cc.carm.lib.mineconfiguration.bukkit.value.item.ConfiguredItem;
-import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
-import org.bukkit.Material;
-import org.bukkit.enchantments.Enchantment;
-import org.bukkit.inventory.ItemFlag;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.ItemMeta;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.*;
-import java.util.function.Function;
-import java.util.function.UnaryOperator;
-
-public class ItemConfigBuilder extends AbstractCraftBuilder {
-
- protected Material type;
- protected short data = 0;
- protected String name = null;
- protected List lore = new ArrayList<>();
-
- protected Map enchants = new LinkedHashMap<>();
- protected Set flags = new LinkedHashSet<>();
-
- protected @NotNull String[] params = new String[0];
- protected @NotNull Function<@NotNull String, @NotNull String> paramFormatter = ParamsUtils.DEFAULT_PARAM_FORMATTER;
-
- public ItemConfigBuilder defaults(@NotNull Material type,
- @Nullable String name, @NotNull String... lore) {
- return defaults(type, (short) 0, name, Arrays.asList(lore));
- }
-
- public ItemConfigBuilder defaults(@NotNull Material type, short data,
- @Nullable String name, @NotNull String... lore) {
- return defaults(type, data, name, Arrays.asList(lore));
- }
-
- public ItemConfigBuilder defaults(@NotNull Material type, short data,
- @Nullable String name, @NotNull List lore) {
- return defaultType(type).defaultDataID(data).defaultName(name).defaultLore(lore);
- }
-
- public ItemConfigBuilder defaultType(@NotNull Material type) {
- this.type = type;
- return this;
- }
-
- public ItemConfigBuilder defaultName(@Nullable String name) {
- this.name = name;
- return this;
- }
-
- public ItemConfigBuilder defaultDataID(short dataID) {
- this.data = dataID;
- return this;
- }
-
- public ItemConfigBuilder defaultLore(@NotNull String... lore) {
- return defaultLore(Arrays.asList(lore));
- }
-
- public ItemConfigBuilder defaultLore(@NotNull List lore) {
- this.lore = new ArrayList<>(lore);
- return this;
- }
-
- public ItemConfigBuilder defaultEnchants(@NotNull Map enchants) {
- this.enchants = new LinkedHashMap<>(enchants);
- return this;
- }
-
- public ItemConfigBuilder defaultEnchant(@NotNull Enchantment enchant, int level) {
- return defaultEnchants(Collections.singletonMap(enchant, level));
- }
-
- public ItemConfigBuilder defaultFlags(@NotNull Set flags) {
- this.flags = new LinkedHashSet<>(flags);
- return this;
- }
-
- public ItemConfigBuilder defaultFlags(@NotNull ItemFlag... flags) {
- return defaultFlags(new LinkedHashSet<>(Arrays.asList(flags)));
- }
-
- public ItemConfigBuilder formatParam(@NotNull UnaryOperator paramFormatter) {
- this.paramFormatter = paramFormatter;
- return getThis();
- }
-
- public ItemConfigBuilder params(@NotNull String... params) {
- this.params = params;
- return getThis();
- }
-
- public ItemConfigBuilder params(@NotNull List params) {
- this.params = params.toArray(new String[0]);
- return getThis();
- }
-
- @Override
- protected @NotNull ItemConfigBuilder getThis() {
- return this;
- }
-
- protected @Nullable ItemStack buildDefault() {
- if (this.type == null) return null;
-
- ItemStack item = new ItemStack(type, 1, data);
- ItemMeta meta = item.getItemMeta();
- if (meta == null) return item;
-
- Optional.ofNullable(this.name).ifPresent(meta::setDisplayName);
- Optional.ofNullable(this.lore).ifPresent(meta::setLore);
- enchants.forEach((enchant, level) -> meta.addEnchant(enchant, level, true));
- flags.forEach(meta::addItemFlags);
- item.setItemMeta(meta);
-
- return item;
- }
-
- @Override
- public @NotNull ConfiguredItem build() {
- return new ConfiguredItem(
- new ValueManifest<>(
- this.provider, this.path, this.headerComments, this.inlineComment,
- Optional.ofNullable(this.defaultValue).orElse(buildDefault())
- ), buildParams()
- );
- }
-
- protected final String[] buildParams() {
- return Arrays.stream(params).map(param -> paramFormatter.apply(param)).toArray(String[]::new);
- }
-
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/message/CraftMessageBuilder.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/message/CraftMessageBuilder.java
deleted file mode 100644
index 3e7ccc2..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/message/CraftMessageBuilder.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.builder.message;
-
-import cc.carm.lib.mineconfiguration.bukkit.data.TextConfig;
-import cc.carm.lib.mineconfiguration.bukkit.utils.TextParser;
-import cc.carm.lib.mineconfiguration.common.builder.message.MessageConfigBuilder;
-import org.bukkit.command.CommandSender;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.HashMap;
-import java.util.function.BiFunction;
-
-public class CraftMessageBuilder extends MessageConfigBuilder {
-
-
- public CraftMessageBuilder() {
- super(CommandSender.class, TextConfig.class);
- }
-
- @Override
- public @NotNull CraftMessageValueBuilder asValue(@NotNull BiFunction<@Nullable CommandSender, @NotNull String, @Nullable M> parser) {
- return new CraftMessageValueBuilder<>(parser);
- }
-
- @Override
- public @NotNull CraftMessageListBuilder asList(@NotNull BiFunction<@Nullable CommandSender, @NotNull String, @Nullable M> parser) {
- return new CraftMessageListBuilder<>(parser);
- }
-
- public @NotNull
- CraftMessageValueBuilder asStringValue() {
- return asValue(defaultParser()).whenSend(CommandSender::sendMessage);
- }
-
- public @NotNull
- CraftMessageListBuilder asStringList() {
- return asList(defaultParser()).whenSend((r, m) -> m.forEach(r::sendMessage));
- }
-
- protected static @NotNull BiFunction<@Nullable CommandSender, @NotNull String, @Nullable String> defaultParser() {
- return (receiver, message) -> TextParser.parseText(receiver, message, new HashMap<>());
- }
-
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/message/CraftMessageListBuilder.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/message/CraftMessageListBuilder.java
deleted file mode 100644
index 6306c4c..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/message/CraftMessageListBuilder.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.builder.message;
-
-import cc.carm.lib.mineconfiguration.bukkit.data.TextConfig;
-import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredMessageList;
-import cc.carm.lib.mineconfiguration.common.builder.message.MessageListBuilder;
-import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
-import org.bukkit.command.CommandSender;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.ArrayList;
-import java.util.function.BiFunction;
-
-public class CraftMessageListBuilder
- extends MessageListBuilder> {
-
- public CraftMessageListBuilder(@NotNull BiFunction<@Nullable CommandSender, @NotNull String, @Nullable M> parser) {
- super(CommandSender.class, TextConfig::of, parser);
- }
-
- @Override
- protected @NotNull CraftMessageListBuilder getThis() {
- return this;
- }
-
- @Override
- public @NotNull ConfiguredMessageList build() {
- return new ConfiguredMessageList<>(
- buildManifest(TextConfig.of(new ArrayList<>())),
- ParamsUtils.formatParams(this.paramFormatter, this.params),
- this.messageParser, this.sendFunction
- );
- }
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/message/CraftMessageValueBuilder.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/message/CraftMessageValueBuilder.java
deleted file mode 100644
index a93bb17..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/message/CraftMessageValueBuilder.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.builder.message;
-
-import cc.carm.lib.mineconfiguration.bukkit.data.TextConfig;
-import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredMessage;
-import cc.carm.lib.mineconfiguration.common.builder.message.MessageValueBuilder;
-import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
-import org.bukkit.command.CommandSender;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.function.BiFunction;
-
-public class CraftMessageValueBuilder
- extends MessageValueBuilder> {
-
- public CraftMessageValueBuilder(@NotNull BiFunction<@Nullable CommandSender, @NotNull String, @Nullable M> parser) {
- super(CommandSender.class, TextConfig::new, parser);
- }
-
- @Override
- protected @NotNull CraftMessageValueBuilder getThis() {
- return this;
- }
-
- @Override
- public @NotNull ConfiguredMessage build() {
- return new ConfiguredMessage<>(
- buildManifest(TextConfig.of("")),
- ParamsUtils.formatParams(this.paramFormatter, this.params),
- this.messageParser, this.sendHandler
- );
- }
-
-
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/notify/NotifyConfigBuilder.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/notify/NotifyConfigBuilder.java
deleted file mode 100644
index b08e35d..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/notify/NotifyConfigBuilder.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.builder.notify;
-
-import cc.carm.lib.configuration.core.builder.CommonConfigBuilder;
-import cc.carm.lib.mineconfiguration.bukkit.data.NotifyConfig;
-import cc.carm.lib.mineconfiguration.bukkit.data.SoundConfig;
-import cc.carm.lib.mineconfiguration.bukkit.data.TitleConfig;
-import cc.carm.lib.mineconfiguration.bukkit.value.notify.ConfiguredNotify;
-import cc.carm.lib.mineconfiguration.bukkit.value.notify.DefaultNotifyTypes;
-import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
-import org.bukkit.Sound;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.jetbrains.annotations.Range;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.function.Function;
-import java.util.function.UnaryOperator;
-
-public class NotifyConfigBuilder extends CommonConfigBuilder, NotifyConfigBuilder> {
-
- protected final @NotNull List notifications = new ArrayList<>();
-
- protected @NotNull String[] params = new String[0];
- protected @NotNull Function<@NotNull String, @NotNull String> paramFormatter;
-
- public NotifyConfigBuilder() {
- this.paramFormatter = ParamsUtils.DEFAULT_PARAM_FORMATTER;
- }
-
- public NotifyConfigBuilder defaultMessages(@NotNull String... messages) {
- return defaultMessages(Arrays.asList(messages));
- }
-
- public NotifyConfigBuilder defaultMessages(@NotNull List messages) {
- for (String message : messages) {
- notifications.add(NotifyConfig.of(DefaultNotifyTypes.MESSAGE, message));
- }
- return defaults(this.notifications);
- }
-
- public NotifyConfigBuilder defaultActionBar(@NotNull String message) {
- notifications.add(NotifyConfig.of(DefaultNotifyTypes.ACTIONBAR, message));
- return defaults(this.notifications);
- }
-
- public NotifyConfigBuilder defaultSound(@NotNull Sound sound, float volume, float pitch) {
- return defaultSound(sound.name(), volume, pitch);
- }
-
- public NotifyConfigBuilder defaultSound(@NotNull Sound sound, float volume) {
- return defaultSound(sound, volume, 1.0f);
- }
-
- public NotifyConfigBuilder defaultSound(@NotNull Sound sound) {
- return defaultSound(sound, 1.0f);
- }
-
- public NotifyConfigBuilder defaultSound(@NotNull String soundName, float volume, float pitch) {
- notifications.add(NotifyConfig.of(DefaultNotifyTypes.SOUND, new SoundConfig(soundName, volume, pitch)));
- return defaults(this.notifications);
- }
-
- public NotifyConfigBuilder defaultSound(@NotNull String soundName, float volume) {
- return defaultSound(soundName, volume, 1.0f);
- }
-
- public NotifyConfigBuilder defaultSound(@NotNull String soundName) {
- return defaultSound(soundName, 1.0f);
- }
-
- public NotifyConfigBuilder defaultTitle(@Nullable String line1, @Nullable String line2,
- @Range(from = 0L, to = Integer.MAX_VALUE) int fadeIn,
- @Range(from = 0L, to = Integer.MAX_VALUE) int stay,
- @Range(from = 0L, to = Integer.MAX_VALUE) int fadeOut) {
- notifications.add(NotifyConfig.of(DefaultNotifyTypes.TITLE, TitleConfig.of(line1, line2, fadeIn, stay, fadeOut)));
- return defaults(this.notifications);
- }
-
- public NotifyConfigBuilder defaultTitle(@Nullable String line1, @Nullable String line2) {
- return defaultTitle(line1, line2, 10, 60, 10);
- }
-
- public NotifyConfigBuilder params(String... params) {
- this.params = params;
- return this;
- }
-
- public NotifyConfigBuilder params(@NotNull List params) {
- return params(params.toArray(new String[0]));
- }
-
-
- public NotifyConfigBuilder formatParam(UnaryOperator paramFormatter) {
- this.paramFormatter = paramFormatter;
- return this;
- }
-
- @Override
- protected @NotNull NotifyConfigBuilder getThis() {
- return this;
- }
-
- @Override
- public @NotNull ConfiguredNotify build() {
- return new ConfiguredNotify(buildManifest(), ParamsUtils.formatParams(this.paramFormatter, this.params));
- }
-
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/serializable/SerializableBuilder.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/serializable/SerializableBuilder.java
deleted file mode 100644
index 5f5d3a4..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/serializable/SerializableBuilder.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.builder.serializable;
-
-import cc.carm.lib.mineconfiguration.bukkit.builder.AbstractCraftBuilder;
-import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredSerializable;
-import org.bukkit.configuration.serialization.ConfigurationSerializable;
-import org.jetbrains.annotations.NotNull;
-
-public class SerializableBuilder
- extends AbstractCraftBuilder> {
-
- protected final @NotNull Class valueClass;
-
- public SerializableBuilder(@NotNull Class valueClass) {
- this.valueClass = valueClass;
- }
-
- @Override
- protected @NotNull SerializableBuilder getThis() {
- return this;
- }
-
- @Override
- public @NotNull ConfiguredSerializable build() {
- return new ConfiguredSerializable<>(buildManifest(), valueClass);
- }
-
-}
-
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/sound/SoundConfigBuilder.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/sound/SoundConfigBuilder.java
deleted file mode 100644
index 8cfed5c..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/sound/SoundConfigBuilder.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.builder.sound;
-
-import cc.carm.lib.mineconfiguration.bukkit.builder.AbstractCraftBuilder;
-import cc.carm.lib.mineconfiguration.bukkit.data.SoundConfig;
-import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredSound;
-import org.bukkit.Sound;
-import org.jetbrains.annotations.NotNull;
-
-public class SoundConfigBuilder extends AbstractCraftBuilder {
-
-
- public @NotNull SoundConfigBuilder defaults(@NotNull Sound sound, float volume, float pitch) {
- return defaults(new SoundConfig(sound.name(), sound, volume, pitch));
- }
-
- public @NotNull SoundConfigBuilder defaults(@NotNull Sound sound, float volume) {
- return defaults(sound, volume, 1.0f);
- }
-
- public @NotNull SoundConfigBuilder defaults(@NotNull Sound sound) {
- return defaults(sound, 1.0f);
- }
-
- public @NotNull SoundConfigBuilder defaults(@NotNull String soundName, float volume, float pitch) {
- return defaults(new SoundConfig(soundName, volume, pitch));
- }
-
- public @NotNull SoundConfigBuilder defaults(@NotNull String soundName, float volume) {
- return defaults(soundName, volume, 1.0f);
- }
-
- public @NotNull SoundConfigBuilder defaults(@NotNull String soundName) {
- return defaults(soundName, 1.0f);
- }
-
- @Override
- protected @NotNull SoundConfigBuilder getThis() {
- return this;
- }
-
- @Override
- public @NotNull ConfiguredSound build() {
- return new ConfiguredSound(buildManifest());
- }
-
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/title/TitleConfigBuilder.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/title/TitleConfigBuilder.java
deleted file mode 100644
index 2a204f2..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/builder/title/TitleConfigBuilder.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.builder.title;
-
-import cc.carm.lib.mineconfiguration.bukkit.builder.AbstractCraftBuilder;
-import cc.carm.lib.mineconfiguration.bukkit.data.TitleConfig;
-import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredTitle;
-import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.jetbrains.annotations.Range;
-
-import java.util.List;
-import java.util.function.Function;
-import java.util.function.UnaryOperator;
-
-public class TitleConfigBuilder extends AbstractCraftBuilder {
-
- protected @NotNull String[] params = new String[0];
-
- protected @Range(from = 0L, to = Integer.MAX_VALUE) int fadeIn = 10;
- protected @Range(from = 0L, to = Integer.MAX_VALUE) int stay = 60;
- protected @Range(from = 0L, to = Integer.MAX_VALUE) int fadeOut = 10;
-
- protected @NotNull ConfiguredTitle.TitleConsumer sendConsumer;
- protected @NotNull Function<@NotNull String, @NotNull String> paramFormatter;
-
- public TitleConfigBuilder() {
- this.sendConsumer = ConfiguredTitle.DEFAULT_TITLE_CONSUMER;
- this.paramFormatter = ParamsUtils.DEFAULT_PARAM_FORMATTER;
- }
-
- public @NotNull TitleConfigBuilder defaults(@Nullable String line1,
- @Nullable String line2) {
- return defaults(TitleConfig.of(line1, line2));
- }
-
- public @NotNull TitleConfigBuilder whenSend(@NotNull ConfiguredTitle.TitleConsumer consumer) {
- this.sendConsumer = consumer;
- return this;
- }
-
- public TitleConfigBuilder params(String... params) {
- this.params = params;
- return this;
- }
-
- public TitleConfigBuilder params(@NotNull List params) {
- return params(params.toArray(new String[0]));
- }
-
- public TitleConfigBuilder fadeIn(@Range(from = 0L, to = Integer.MAX_VALUE) int fadeIn) {
- this.fadeIn = fadeIn;
- return this;
- }
-
- public TitleConfigBuilder stay(@Range(from = 0L, to = Integer.MAX_VALUE) int stay) {
- this.stay = stay;
- return this;
- }
-
- public TitleConfigBuilder fadeOut(@Range(from = 0L, to = Integer.MAX_VALUE) int fadeOut) {
- this.fadeOut = fadeOut;
- return this;
- }
-
- public TitleConfigBuilder formatParam(UnaryOperator paramFormatter) {
- this.paramFormatter = paramFormatter;
- return this;
- }
-
- @Override
- protected @NotNull TitleConfigBuilder getThis() {
- return this;
- }
-
- @Override
- public @NotNull ConfiguredTitle build() {
- return new ConfiguredTitle(
- buildManifest(), ParamsUtils.formatParams(this.paramFormatter, this.params),
- this.sendConsumer, this.fadeIn, this.stay, this.fadeOut
- );
- }
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/NotifyConfig.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/NotifyConfig.java
index 6b2e7b8..ae33ced 100644
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/NotifyConfig.java
+++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/NotifyConfig.java
@@ -1,7 +1,7 @@
package cc.carm.lib.mineconfiguration.bukkit.data;
-import cc.carm.lib.mineconfiguration.bukkit.value.notify.NotifyCache;
-import cc.carm.lib.mineconfiguration.bukkit.value.notify.NotifyType;
+import cc.carm.lib.mineconfiguration.bukkit.value.notify.type.NotifyCache;
+import cc.carm.lib.mineconfiguration.bukkit.value.notify.type.NotifyType;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/SoundConfig.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/SoundConfig.java
index c334354..e2f4d6d 100644
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/SoundConfig.java
+++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/SoundConfig.java
@@ -36,12 +36,16 @@ public class SoundConfig {
this.pitch = pitch;
}
- public void playTo(Player player) {
- if (type == null) return;
- player.playSound(player.getLocation(), type, volume, pitch);
+ public void playTo(@NotNull Player player) {
+ playTo(player, player.getLocation());
}
- public void playAt(Location location) {
+ public void playTo(@NotNull Player player, @NotNull Location location) {
+ if (type == null) return;
+ player.playSound(location, type, volume, pitch);
+ }
+
+ public void playAt(@NotNull Location location) {
if (type == null) return;
if (location.getWorld() == null) return;
location.getWorld().playSound(location, type, volume, pitch);
@@ -51,6 +55,10 @@ public class SoundConfig {
Bukkit.getOnlinePlayers().forEach(this::playTo);
}
+ public void playToAll(@NotNull Location location) {
+ Bukkit.getOnlinePlayers().forEach(player -> playTo(player, location));
+ }
+
public @NotNull String getTypeName() {
return typeName;
}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/TextConfig.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/TextConfig.java
deleted file mode 100644
index cf58eaa..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/TextConfig.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.data;
-
-import cc.carm.lib.mineconfiguration.common.data.AbstractText;
-import org.bukkit.command.CommandSender;
-import org.jetbrains.annotations.Contract;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
-public class TextConfig extends AbstractText {
-
- public TextConfig(@NotNull String message) {
- super(CommandSender.class, message);
- }
-
- @Contract("!null,-> !null")
- public static @Nullable TextConfig of(@Nullable String message) {
- if (message == null) return null;
- else return new TextConfig(message);
- }
-
- public static @NotNull List of(@Nullable List messages) {
- if (messages == null || messages.isEmpty()) return new ArrayList<>();
- else return messages.stream().map(TextConfig::of).collect(Collectors.toList());
- }
-
- public static @NotNull List of(@NotNull String... messages) {
- return of(Arrays.asList(messages));
- }
-
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/TitleConfig.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/TitleConfig.java
index b6d88d8..6428bf8 100644
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/TitleConfig.java
+++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/data/TitleConfig.java
@@ -1,7 +1,8 @@
package cc.carm.lib.mineconfiguration.bukkit.data;
-import cc.carm.lib.configuration.core.source.ConfigurationWrapper;
-import cc.carm.lib.mineconfiguration.bukkit.utils.TextParser;
+import cc.carm.lib.configuration.source.section.ConfigureSection;
+import cc.carm.lib.configuration.value.text.PreparedText;
+import cc.carm.lib.mineconfiguration.bukkit.utils.MessageUtils;
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredTitle;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
@@ -10,47 +11,31 @@ import org.jetbrains.annotations.Range;
import java.util.LinkedHashMap;
import java.util.Map;
-import java.util.Optional;
public class TitleConfig {
public static @NotNull TitleConfig of(@Nullable String line1, @Nullable String line2) {
- return of(
- Optional.ofNullable(line1).map(TextConfig::of).orElse(null),
- Optional.ofNullable(line2).map(TextConfig::of).orElse(null)
- );
- }
-
- public static @NotNull TitleConfig of(@Nullable TextConfig line1, @Nullable TextConfig line2) {
return new TitleConfig(line1, line2);
}
public static @NotNull TitleConfig of(@Nullable String line1, @Nullable String line2,
int fadeIn, int stay, int fadeOut) {
- return of(
- Optional.ofNullable(line1).map(TextConfig::of).orElse(null),
- Optional.ofNullable(line2).map(TextConfig::of).orElse(null),
- fadeIn, stay, fadeOut
- );
- }
-
- public static @NotNull TitleConfig of(@Nullable TextConfig line1, @Nullable TextConfig line2,
- int fadeIn, int stay, int fadeOut) {
return new TitleConfig(line1, line2, fadeIn, stay, fadeOut);
}
- protected @Nullable TextConfig line1;
- protected @Nullable TextConfig line2;
+ protected @Nullable String line1;
+ protected @Nullable String line2;
- protected final int fadeIn;
- protected final int stay;
- protected final int fadeOut;
+ protected @Range(from = 0L, to = Integer.MAX_VALUE) int fadeIn = 10;
+ protected @Range(from = 0L, to = Integer.MAX_VALUE) int stay = 60;
+ protected @Range(from = 0L, to = Integer.MAX_VALUE) int fadeOut = 10;
- protected TitleConfig(@Nullable TextConfig line1, @Nullable TextConfig line2) {
- this(line1, line2, -1, -1, -1);
+ protected TitleConfig(@Nullable String line1, @Nullable String line2) {
+ this.line1 = line1;
+ this.line2 = line2;
}
- protected TitleConfig(@Nullable TextConfig line1, @Nullable TextConfig line2, int fadeIn, int stay, int fadeOut) {
+ protected TitleConfig(@Nullable String line1, @Nullable String line2, int fadeIn, int stay, int fadeOut) {
this.line1 = line1;
this.line2 = line2;
this.fadeIn = fadeIn;
@@ -58,30 +43,50 @@ public class TitleConfig {
this.fadeOut = fadeOut;
}
- public int getFadeIn() {
+ public int stay() {
+ return stay;
+ }
+
+ public void stay(int stay) {
+ this.stay = stay;
+ }
+
+ public @Nullable String line1() {
+ return line1;
+ }
+
+ public void line1(@Nullable String line1) {
+ this.line1 = line1;
+ }
+
+ public @Nullable String line2() {
+ return line2;
+ }
+
+ public void line2(@Nullable String line2) {
+ this.line2 = line2;
+ }
+
+ public int fadeIn() {
return fadeIn;
}
- public int getFadeOut() {
+ public void fadeIn(int fadeIn) {
+ this.fadeIn = fadeIn;
+ }
+
+ public int fadeOut() {
return fadeOut;
}
- public int getStay() {
- return stay;
+ public void fadeOut(int fadeOut) {
+ this.fadeOut = fadeOut;
}
public boolean isStandardTime() {
return this.fadeIn == 10 && this.stay == 60 && this.fadeOut == 10;
}
- public @Nullable TextConfig getLine1() {
- return line1;
- }
-
- public @Nullable TextConfig getLine2() {
- return line2;
- }
-
public void send(@NotNull Player player,
@NotNull Map placeholders,
@Nullable ConfiguredTitle.TitleConsumer sendConsumer) {
@@ -105,28 +110,28 @@ public class TitleConfig {
if (sendConsumer == null) return;
sendConsumer.send(
player, fadeIn, stay, fadeOut,
- parseLine(this.line1, player, placeholders),
- parseLine(this.line2, player, placeholders)
+ parseLine(player, this.line1, placeholders),
+ parseLine(player, this.line2, placeholders)
);
}
- protected @NotNull String parseLine(@Nullable TextConfig text,
- @NotNull Player player, @NotNull Map placeholders) {
- if (text == null) return "";
- else return TextParser.parseText(player, text.getMessage(), placeholders);
+ protected @NotNull String parseLine(@NotNull Player player, @Nullable String text,
+ @NotNull Map placeholders) {
+ return text == null ? "" : MessageUtils.parseMessage(player, PreparedText.setPlaceholders(text, placeholders));
}
public @NotNull Map serialize() {
Map map = new LinkedHashMap<>();
- if (this.line1 != null) map.put("line1", this.line1.getMessage());
- if (this.line2 != null) map.put("line2", this.line2.getMessage());
- if (this.fadeIn > 0) map.put("fadeIn", this.fadeIn);
- if (this.stay > 0) map.put("stay", this.stay);
- if (this.fadeOut > 0) map.put("fadeOut", this.fadeOut);
+ if (this.line1 != null) map.put("line1", this.line1);
+ if (this.line2 != null) map.put("line2", this.line2);
+ if (this.fadeIn > 0 && this.fadeIn != 10) map.put("fadeIn", this.fadeIn);
+ if (this.stay > 0 && this.stay != 60) map.put("stay", this.stay);
+ if (this.fadeOut > 0 && this.fadeOut != 10) map.put("fadeOut", this.fadeOut);
+
return map;
}
- public static @Nullable TitleConfig deserialize(@NotNull ConfigurationWrapper> section) {
+ public static @Nullable TitleConfig deserialize(@NotNull ConfigureSection section) {
String line1 = section.getString("line1");
String line2 = section.getString("line2");
if (line1 == null && line2 == null) return null;
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitConfigFactory.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitConfigFactory.java
new file mode 100644
index 0000000..efa39cd
--- /dev/null
+++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitConfigFactory.java
@@ -0,0 +1,57 @@
+package cc.carm.lib.mineconfiguration.bukkit.source;
+
+import cc.carm.lib.configuration.commentable.Commentable;
+import cc.carm.lib.configuration.source.ConfigurationHolder;
+import cc.carm.lib.configuration.source.file.FileConfigFactory;
+import org.bukkit.plugin.Plugin;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.File;
+
+public class BukkitConfigFactory extends FileConfigFactory, BukkitConfigFactory> {
+
+ public static BukkitConfigFactory from(@NotNull String path) {
+ return new BukkitConfigFactory(new File(path));
+ }
+
+ public static BukkitConfigFactory from(@NotNull File file) {
+ return new BukkitConfigFactory(file);
+ }
+
+ public static BukkitConfigFactory from(@NotNull File parent, @NotNull String configName) {
+ return new BukkitConfigFactory(new File(parent, configName));
+ }
+
+ public static BukkitConfigFactory from(@NotNull Plugin plugin, @NotNull String configName) {
+ return from(plugin.getDataFolder(), configName);
+ }
+
+ public BukkitConfigFactory(@NotNull File file) {
+ super(file);
+ }
+
+ @Override
+ protected BukkitConfigFactory self() {
+ return this;
+ }
+
+ @Override
+ public @NotNull ConfigurationHolder build() {
+
+ File configFile = this.file;
+ String sourcePath = this.resourcePath;
+
+ Commentable.registerMeta(this.initializer); // Register commentable meta types
+
+ return new ConfigurationHolder(this.adapters, this.options, this.metadata, this.initializer) {
+ final @NotNull BukkitSource source = new BukkitSource(this, configFile, sourcePath);
+
+ @Override
+ public @NotNull BukkitSource config() {
+ return this.source;
+ }
+ };
+ }
+
+
+}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitConfigProvider.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitConfigProvider.java
deleted file mode 100644
index 3aac3d2..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitConfigProvider.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.source;
-
-import cc.carm.lib.configuration.core.ConfigInitializer;
-import cc.carm.lib.configuration.core.source.ConfigurationComments;
-import cc.carm.lib.yamlcommentupdater.CommentedYAML;
-import cc.carm.lib.yamlcommentupdater.CommentedYAMLWriter;
-import org.bukkit.configuration.ConfigurationSection;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.configuration.file.YamlConfiguration;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.io.File;
-import java.util.List;
-import java.util.Set;
-
-public class BukkitConfigProvider extends CraftConfigProvider implements CommentedYAML {
-
- protected static final char SEPARATOR = '.';
-
- protected @NotNull ConfigurationComments comments = new ConfigurationComments();
-
- public BukkitConfigProvider(@NotNull File file) {
- super(file);
- }
-
- public void initializeConfig() {
- this.configuration = YamlConfiguration.loadConfiguration(file);
- this.initializer = new ConfigInitializer<>(this);
- }
-
- @Override
- public @NotNull CraftSectionWrapper getConfiguration() {
- return CraftSectionWrapper.of(this.configuration);
- }
-
- @Override
- public void save() throws Exception {
- try {
- CommentedYAMLWriter.writeWithComments(this, this.file);
- } catch (Exception ex) {
- configuration.save(file);
- throw ex;
- }
- }
-
- @Override
- public @NotNull ConfigurationComments getComments() {
- return this.comments;
- }
-
- @Override
- public String serializeValue(@NotNull String key, @NotNull Object value) {
- FileConfiguration temp = new YamlConfiguration();
- temp.set(key, value);
- return temp.saveToString();
- }
-
- @Override
- public Set getKeys(@Nullable String sectionKey, boolean deep) {
- if (sectionKey == null) return configuration.getKeys(deep);
-
- ConfigurationSection section = configuration.getConfigurationSection(sectionKey);
- if (section == null) return null;
-
- return section.getKeys(deep);
- }
-
- @Override
- public @Nullable Object getValue(@NotNull String key) {
- return configuration.get(key);
- }
-
- @Override
- public @Nullable List getHeaderComments(@Nullable String key) {
- return comments.getHeaderComment(key);
- }
-
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSection.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSection.java
new file mode 100644
index 0000000..4340ff7
--- /dev/null
+++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSection.java
@@ -0,0 +1,83 @@
+package cc.carm.lib.mineconfiguration.bukkit.source;
+
+import cc.carm.lib.configuration.source.section.ConfigureSection;
+import org.bukkit.configuration.ConfigurationSection;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.UnmodifiableView;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class BukkitSection implements ConfigureSection {
+
+ protected final @NotNull BukkitSource source;
+ protected final @Nullable BukkitSection parent;
+ protected final @NotNull ConfigurationSection data;
+
+ public BukkitSection(@NotNull BukkitSource source, @Nullable BukkitSection parent,
+ @NotNull ConfigurationSection data) {
+ this.source = source;
+ this.parent = parent;
+ this.data = data;
+ }
+
+ @Override
+ public @NotNull BukkitSource source() {
+ return this.source;
+ }
+
+ @Override
+ public @Nullable BukkitSection parent() {
+ return this.parent;
+ }
+
+ public @NotNull ConfigurationSection data() {
+ return this.data;
+ }
+
+ @Override
+ public @NotNull Set getKeys(boolean deep) {
+ return data().getKeys(deep);
+ }
+
+ @Override
+ public @NotNull @UnmodifiableView Map getValues(boolean deep) {
+ return data().getValues(deep);
+ }
+
+ @Override
+ public void set(@NotNull String path, @Nullable Object value) {
+ data().set(path, value);
+ }
+
+ @Override
+ public boolean contains(@NotNull String path) {
+ return data().contains(path);
+ }
+
+ @Override
+ public @Nullable List> getList(@NotNull String path) {
+ return data().getList(path);
+ }
+
+ @Override
+ public @Nullable ConfigureSection getSection(@NotNull String path) {
+ Object value = get(path);
+ if (value instanceof ConfigureSection) {
+ return (ConfigureSection) value;
+ }
+ return null;
+ }
+
+ @Override
+ public @Nullable Object get(@NotNull String path) {
+ Object value = data().get(path);
+ if (value instanceof ConfigurationSection) {
+ return new BukkitSection(source(), this, (ConfigurationSection) value);
+ }
+ return value;
+ }
+
+}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSource.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSource.java
new file mode 100644
index 0000000..abef09f
--- /dev/null
+++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSource.java
@@ -0,0 +1,109 @@
+package cc.carm.lib.mineconfiguration.bukkit.source;
+
+import cc.carm.lib.configuration.commentable.Commentable;
+import cc.carm.lib.configuration.commentable.CommentableOptions;
+import cc.carm.lib.configuration.source.ConfigurationHolder;
+import cc.carm.lib.configuration.source.file.FileConfigSource;
+import cc.carm.lib.configuration.source.section.ConfigureSection;
+import cc.carm.lib.yamlcommentupdater.CommentedSection;
+import cc.carm.lib.yamlcommentupdater.CommentedYAMLWriter;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.io.File;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+
+public class BukkitSource extends FileConfigSource
+ implements CommentedSection {
+
+ protected @Nullable BukkitSection rootSection;
+
+ public BukkitSource(@NotNull ConfigurationHolder extends BukkitSource> holder,
+ @NotNull File file, @Nullable String resourcePath) {
+ super(holder, System.currentTimeMillis(), file, resourcePath);
+ initialize();
+ }
+
+ public void initialize() {
+ try {
+ initializeFile();
+ onReload();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ protected BukkitSource self() {
+ return this;
+ }
+
+ @Override
+ public @NotNull YamlConfiguration original() {
+ return (YamlConfiguration) section().data(); // #data() of Root Section always returns YamlConfiguration
+ }
+
+ @Override
+ public @NotNull BukkitSection section() {
+ return Objects.requireNonNull(rootSection, "Root section has not been initialized");
+ }
+
+ @Override
+ public void save() throws Exception {
+ CommentedYAMLWriter writer = new CommentedYAMLWriter(
+ String.valueOf(this.separator()), 2,
+ holder.options().get(CommentableOptions.COMMENT_EMPTY_VALUE)
+ );
+ try {
+ fileWriter(w -> w.write(writer.saveToString(this)));
+ } catch (Exception ex) {
+ fileWriter(w -> w.write(original().saveToString()));
+ }
+ }
+
+ @Override
+ protected void onReload() throws Exception {
+ YamlConfiguration configuration = fileReader(YamlConfiguration::loadConfiguration);
+ this.rootSection = new BukkitSection(this, null, configuration);
+ }
+
+ @Override
+ public String serializeValue(@NotNull String key, @NotNull Object value) {
+ FileConfiguration temp = new YamlConfiguration();
+ temp.set(key, value);
+ return temp.saveToString();
+ }
+
+ @Override
+ public @Nullable Set getKeys(@Nullable String sectionKey, boolean deep) {
+ if (sectionKey == null) return section().getKeys(deep);
+ ConfigureSection sub = section().getSection(sectionKey);
+ if (sub == null) return null;
+ return sub.getKeys(deep);
+ }
+
+ @Override
+ public @Nullable Object getValue(@NotNull String key) {
+ return get(key);
+ }
+
+ @Override
+ public @Nullable String getInlineComment(@NotNull String key) {
+ return Commentable.getInlineComment(holder(), key);
+ }
+
+ @Override
+ public @Nullable List getHeaderComments(@Nullable String key) {
+ return Commentable.getHeaderComments(holder(), key);
+ }
+
+ @Override
+ public @Nullable List getFooterComments(@Nullable String key) {
+ return Commentable.getFooterComments(holder(), key);
+ }
+
+}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/CraftConfigProvider.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/CraftConfigProvider.java
deleted file mode 100644
index ea58a9c..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/CraftConfigProvider.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.source;
-
-import cc.carm.lib.configuration.core.ConfigInitializer;
-import cc.carm.lib.configuration.core.source.impl.FileConfigProvider;
-import org.bukkit.configuration.file.YamlConfiguration;
-import org.jetbrains.annotations.NotNull;
-
-import java.io.File;
-
-public abstract class CraftConfigProvider extends FileConfigProvider {
-
- public static final char SEPARATOR = '.';
-
- protected ConfigInitializer extends CraftConfigProvider> initializer;
- protected YamlConfiguration configuration;
-
- public CraftConfigProvider(@NotNull File file) {
- super(file);
- }
-
- public abstract void initializeConfig();
-
- @Override
- public @NotNull CraftSectionWrapper getConfiguration() {
- return CraftSectionWrapper.of(this.configuration);
- }
-
- @Override
- protected void onReload() throws Exception {
- configuration.load(getFile());
- }
-
- @Override
- public void save() throws Exception {
- configuration.save(getFile());
- }
-
- @Override
- public @NotNull ConfigInitializer extends CraftConfigProvider> getInitializer() {
- return this.initializer;
- }
-
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/CraftSectionWrapper.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/CraftSectionWrapper.java
deleted file mode 100644
index 1698f89..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/CraftSectionWrapper.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.source;
-
-import cc.carm.lib.configuration.core.source.ConfigurationWrapper;
-import org.bukkit.configuration.ConfigurationSection;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-
-public class CraftSectionWrapper implements ConfigurationWrapper {
-
- protected final ConfigurationSection configuration;
-
- protected CraftSectionWrapper(ConfigurationSection configuration) {
- this.configuration = configuration;
- }
-
- @Override
- public @NotNull ConfigurationSection getSource() {
- return this.configuration;
- }
-
- @Override
- public @NotNull Set getKeys(boolean deep) {
- return this.configuration.getKeys(deep);
- }
-
- @Override
- public @NotNull Map getValues(boolean deep) {
- return this.configuration.getValues(deep);
- }
-
- @Override
- public void set(@NotNull String path, @Nullable Object value) {
- this.configuration.set(path, value);
- }
-
- @Override
- public boolean contains(@NotNull String path) {
- return this.configuration.contains(path);
- }
-
- @Override
- public @Nullable Object get(@NotNull String path) {
- return this.configuration.get(path);
- }
-
- @Override
- public boolean isList(@NotNull String path) {
- return this.configuration.isList(path);
- }
-
- @Override
- public @Nullable List> getList(@NotNull String path) {
- return this.configuration.getList(path);
- }
-
- @Override
- public boolean isConfigurationSection(@NotNull String path) {
- return this.configuration.isConfigurationSection(path);
- }
-
- @Override
- public @Nullable CraftSectionWrapper getConfigurationSection(@NotNull String path) {
- return Optional.ofNullable(configuration.getConfigurationSection(path))
- .map(CraftSectionWrapper::of).orElse(null);
- }
-
- public static CraftSectionWrapper of(ConfigurationSection section) {
- return new CraftSectionWrapper(section);
- }
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/utils/TextParser.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/utils/MessageUtils.java
similarity index 54%
rename from platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/utils/TextParser.java
rename to platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/utils/MessageUtils.java
index 30b29eb..ff82964 100644
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/utils/TextParser.java
+++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/utils/MessageUtils.java
@@ -1,7 +1,6 @@
package cc.carm.lib.mineconfiguration.bukkit.utils;
import cc.carm.lib.easyplugin.utils.ColorParser;
-import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -10,28 +9,26 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-public class TextParser {
+public class MessageUtils {
- private TextParser() {
+ private MessageUtils() {
}
- @Contract("_,!null,_->!null")
- public static @Nullable String parseText(@Nullable CommandSender sender, @Nullable String message, @NotNull Map placeholders) {
+ @Contract("_,!null->!null")
+ public static @Nullable String parseMessage(@Nullable CommandSender sender, @Nullable String message) {
if (message == null) return null;
if (sender instanceof Player && hasPlaceholderAPI()) {
message = PlaceholderAPIHelper.parseMessages((Player) sender, message);
}
- return ColorParser.parse(ParamsUtils.setPlaceholders(message, placeholders));
+ return ColorParser.parse(message);
}
- public static @NotNull List parseList(@Nullable CommandSender sender, List messages, @NotNull Map placeholders) {
+ public static @NotNull List parseMessage(@Nullable CommandSender sender, @NotNull List messages) {
if (sender instanceof Player && hasPlaceholderAPI()) {
messages = PlaceholderAPIHelper.parseMessages((Player) sender, messages);
}
- return ColorParser.parse(messages.stream().map(s -> ParamsUtils.setPlaceholders(s, placeholders)).collect(Collectors.toList()));
+ return ColorParser.parse(messages);
}
public static boolean hasPlaceholderAPI() {
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredMessage.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredMessage.java
index 57309d1..0efe089 100644
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredMessage.java
+++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredMessage.java
@@ -1,11 +1,9 @@
package cc.carm.lib.mineconfiguration.bukkit.value;
-import cc.carm.lib.configuration.core.value.ValueManifest;
-import cc.carm.lib.mineconfiguration.bukkit.CraftConfigValue;
-import cc.carm.lib.mineconfiguration.bukkit.builder.message.CraftMessageValueBuilder;
-import cc.carm.lib.mineconfiguration.bukkit.data.TextConfig;
-import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
-import cc.carm.lib.mineconfiguration.common.value.ConfigMessage;
+import cc.carm.lib.configuration.value.ValueManifest;
+import cc.carm.lib.configuration.value.text.ConfiguredText;
+import cc.carm.lib.configuration.value.text.data.TextContents;
+import cc.carm.lib.mineconfiguration.bukkit.utils.MessageUtils;
import com.cryptomorin.xseries.messages.ActionBar;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
@@ -13,52 +11,61 @@ import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
-public class ConfiguredMessage extends ConfigMessage {
+public class ConfiguredMessage extends ConfiguredText {
@NotNull
- public static CraftMessageValueBuilder<@Nullable M> create(@NotNull BiFunction<@Nullable CommandSender, @NotNull String, @Nullable M> messageParser) {
- return CraftConfigValue.builder().createMessage().asValue(messageParser);
+ public static ConfiguredMessage.Builder create(
+ @NotNull BiFunction<@Nullable CommandSender, @NotNull String, @Nullable M> compiler
+ ) {
+ return new Builder().compiler(compiler);
}
- public static CraftMessageValueBuilder asString() {
- return CraftConfigValue.builder().createMessage().asStringValue();
+ public static Builder asString() {
+ return create((sender, message) -> message)
+ .parser(MessageUtils::parseMessage)
+ .dispatcher((sender, message) -> message.forEach(sender::sendMessage));
}
public static ConfiguredMessage ofString() {
return asString().build();
}
- public static ConfiguredMessage ofString(@NotNull String defaultMessage) {
- return asString().defaults(defaultMessage).build();
+ public static ConfiguredMessage ofString(@NotNull String... messages) {
+ return asString().defaults(messages).build();
}
- public ConfiguredMessage(@NotNull ValueManifest manifest, @NotNull String[] params,
- @NotNull BiFunction<@Nullable CommandSender, @NotNull String, @Nullable M> messageParser,
- @NotNull BiConsumer<@NotNull CommandSender, @NotNull M> sendFunction) {
- super(manifest, TextConfig.class, params, messageParser, sendFunction, TextConfig::of);
+ public ConfiguredMessage(@NotNull ValueManifest manifest,
+ @NotNull BiFunction parser,
+ @NotNull BiFunction compiler,
+ @NotNull BiConsumer> dispatcher,
+ @NotNull String[] params) {
+ super(manifest, parser, compiler, dispatcher, params);
}
- public void sendActionBar(Player player, String... values) {
- sendActionBar(player, ParamsUtils.buildParams(this.params, values));
+ public void sendActionBar(Player player, Object... values) {
+ ActionBar.sendActionBar(player, prepare(values).parseLine(player, (sender, message) -> message));
}
- public void sendActionBar(Player player, Map placeholders) {
- ActionBar.sendActionBar(player, parseString(player, placeholders));
+ public void print(Object... values) {
+ prepare(values).to(Bukkit.getConsoleSender());
}
- @Override
- public @NotNull Collection getAllReceivers() {
- List senders = new ArrayList<>();
- senders.add(Bukkit.getConsoleSender());
- senders.addAll(Bukkit.getOnlinePlayers());
- return senders;
+ public static class Builder extends ConfiguredText.Builder> {
+
+ @Override
+ public @NotNull ConfiguredMessage build() {
+ return new ConfiguredMessage<>(buildManifest(), this.parser, this.compiler, this.dispatcher, this.params);
+ }
+
+ @Override
+ public @NotNull ConfiguredMessage.Builder self() {
+ return this;
+ }
}
+
}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredMessageList.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredMessageList.java
deleted file mode 100644
index cc17660..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredMessageList.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.value;
-
-import cc.carm.lib.configuration.core.value.ValueManifest;
-import cc.carm.lib.mineconfiguration.bukkit.CraftConfigValue;
-import cc.carm.lib.mineconfiguration.bukkit.builder.message.CraftMessageListBuilder;
-import cc.carm.lib.mineconfiguration.bukkit.data.TextConfig;
-import cc.carm.lib.mineconfiguration.common.value.ConfigMessageList;
-import org.bukkit.Bukkit;
-import org.bukkit.command.CommandSender;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.function.BiConsumer;
-import java.util.function.BiFunction;
-
-public class ConfiguredMessageList extends ConfigMessageList {
-
- @NotNull
- public static CraftMessageListBuilder create(@NotNull BiFunction<@Nullable CommandSender, @NotNull String, @Nullable M> messageParser) {
- return CraftConfigValue.builder().createMessage().asList(messageParser);
- }
-
- public static CraftMessageListBuilder asStrings() {
- return CraftConfigValue.builder().createMessage().asStringList();
- }
-
- public static ConfiguredMessageList ofStrings(@NotNull String... defaultMessages) {
- return asStrings().defaults(defaultMessages).build();
- }
-
- public ConfiguredMessageList(@NotNull ValueManifest> manifest, @NotNull String[] params,
- @NotNull BiFunction<@Nullable CommandSender, @NotNull String, @Nullable M> messageParser,
- @NotNull BiConsumer<@NotNull CommandSender, @NotNull List> sendFunction) {
- super(manifest, TextConfig.class, params, messageParser, sendFunction, TextConfig::of);
- }
-
- @Override
- public @NotNull Collection getAllReceivers() {
- List senders = new ArrayList<>();
- senders.add(Bukkit.getConsoleSender());
- senders.addAll(Bukkit.getOnlinePlayers());
- return senders;
- }
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredSerializable.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredSerializable.java
deleted file mode 100644
index 67fcbe8..0000000
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredSerializable.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package cc.carm.lib.mineconfiguration.bukkit.value;
-
-import cc.carm.lib.configuration.core.value.ValueManifest;
-import cc.carm.lib.mineconfiguration.bukkit.CraftConfigValue;
-import org.bukkit.configuration.serialization.ConfigurationSerializable;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.Optional;
-
-public class ConfiguredSerializable extends CraftConfigValue {
-
- public static ConfiguredSerializable of(@NotNull Class valueClass) {
- return of(valueClass, null);
- }
-
- public static ConfiguredSerializable of(@NotNull Class valueClass,
- @Nullable V defaultValue) {
- return builder().ofSerializable(valueClass).defaults(defaultValue).build();
- }
-
- protected final @NotNull Class valueClass;
-
- public ConfiguredSerializable(@NotNull ValueManifest manifest, @NotNull Class valueClass) {
- super(manifest);
- this.valueClass = valueClass;
- }
-
- @Override
- public @Nullable T get() {
- if (isExpired()) { // 已过时的数据,需要重新解析一次。
- try {
- // 若未出现错误,则直接更新缓存并返回。
- return updateCache(getBukkitConfig().get(getConfigPath(), getDefaultValue(), valueClass));
- } catch (Exception e) {
- // 出现了解析错误,提示并返回默认值。
- e.printStackTrace();
- return getDefaultValue();
- }
- } else return Optional.ofNullable(getCachedValue()).orElse(defaultValue);
- }
-
- @Override
- public void set(@Nullable T value) {
- updateCache(value);
- setValue(value);
- }
-
-
-}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredSound.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredSound.java
index 3fe67ef..d4b662f 100644
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredSound.java
+++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/ConfiguredSound.java
@@ -1,10 +1,12 @@
package cc.carm.lib.mineconfiguration.bukkit.value;
-import cc.carm.lib.configuration.core.function.ConfigValueParser;
-import cc.carm.lib.configuration.core.value.ValueManifest;
-import cc.carm.lib.configuration.core.value.type.ConfiguredValue;
-import cc.carm.lib.mineconfiguration.bukkit.CraftConfigValue;
-import cc.carm.lib.mineconfiguration.bukkit.builder.sound.SoundConfigBuilder;
+
+import cc.carm.lib.configuration.adapter.ValueAdapter;
+import cc.carm.lib.configuration.adapter.ValueType;
+import cc.carm.lib.configuration.builder.AbstractConfigBuilder;
+import cc.carm.lib.configuration.source.ConfigurationHolder;
+import cc.carm.lib.configuration.value.ValueManifest;
+import cc.carm.lib.configuration.value.standard.ConfiguredValue;
import cc.carm.lib.mineconfiguration.bukkit.data.SoundConfig;
import org.bukkit.Location;
import org.bukkit.Sound;
@@ -15,47 +17,57 @@ import java.util.Optional;
public class ConfiguredSound extends ConfiguredValue {
- public static @NotNull SoundConfigBuilder create() {
- return CraftConfigValue.builder().createSound();
+ public static @NotNull Builder create() {
+ return new Builder();
}
public static @NotNull ConfiguredSound of(Sound sound) {
- return CraftConfigValue.builder().createSound().defaults(sound).build();
+ return create().defaults(sound).build();
}
public static @NotNull ConfiguredSound of(Sound sound, float volume) {
- return CraftConfigValue.builder().createSound().defaults(sound, volume).build();
+ return create().defaults(sound, volume).build();
}
public static @NotNull ConfiguredSound of(Sound sound, float volume, float pitch) {
- return CraftConfigValue.builder().createSound().defaults(sound, volume, pitch).build();
+ return create().defaults(sound, volume, pitch).build();
}
public static @NotNull ConfiguredSound of(String soundName) {
- return CraftConfigValue.builder().createSound().defaults(soundName).build();
+ return create().defaults(soundName).build();
}
public static @NotNull ConfiguredSound of(String soundName, float volume) {
- return CraftConfigValue.builder().createSound().defaults(soundName, volume).build();
+ return create().defaults(soundName, volume).build();
}
public static @NotNull ConfiguredSound of(String soundName, float volume, float pitch) {
- return CraftConfigValue.builder().createSound().defaults(soundName, volume, pitch).build();
+ return create().defaults(soundName, volume, pitch).build();
}
- public ConfiguredSound(@NotNull ValueManifest manifest) {
- super(manifest, SoundConfig.class, getSoundParser(), SoundConfig::serialize);
+
+ public static final ValueType SOUND_TYPE = ValueType.of(SoundConfig.class);
+ public static final ValueAdapter SOUND_ADAPTER = new ValueAdapter<>(SOUND_TYPE,
+ (holder, type, value) -> value.serialize(),
+ (holder, type, value) -> {
+ String conf = holder.deserialize(String.class, value);
+ return SoundConfig.deserialize(conf);
+ }
+ );
+
+ public ConfiguredSound(@NotNull ValueManifest manifest, @NotNull ValueAdapter adapter) {
+ super(manifest, adapter);
}
- public void setSound(@NotNull Sound sound) {
- setSound(sound, 1.0f);
+ public void set(@NotNull Sound sound) {
+ set(sound, 1.0f);
}
- public void setSound(@NotNull Sound sound, float volume) {
- setSound(sound, volume, 1.0f);
+ public void set(@NotNull Sound sound, float volume) {
+ set(sound, volume, 1.0f);
}
- public void setSound(@NotNull Sound sound, float volume, float pitch) {
+ public void set(@NotNull Sound sound, float volume, float pitch) {
set(new SoundConfig(sound.name(), sound, volume, pitch));
}
@@ -71,8 +83,53 @@ public class ConfiguredSound extends ConfiguredValue {
Optional.ofNullable(get()).ifPresent(s -> s.playAt(location));
}
- public static ConfigValueParser