mirror of
https://github.com/CarmJos/MineConfiguration.git
synced 2024-09-19 20:05:49 +00:00
feat(conf): 搭配XSeries实现部分配置类的跨版本支持。
This commit is contained in:
parent
437e1d6d61
commit
8f3d574446
@ -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);
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>mineconfiguration-parent</artifactId>
|
||||
<groupId>cc.carm.lib</groupId>
|
||||
<version>2.6.0</version>
|
||||
<version>2.6.1</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
@ -37,11 +37,18 @@
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.cryptomorin</groupId>
|
||||
<artifactId>XSeries</artifactId>
|
||||
<version>9.3.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<!--suppress VulnerableLibrariesLocal -->
|
||||
<dependency>
|
||||
<groupId>org.bukkit</groupId>
|
||||
<artifactId>bukkit</artifactId>
|
||||
<version>1.8.8-R0.1-SNAPSHOT</version>
|
||||
<version>1.13.2-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@ -53,14 +60,6 @@
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!--ProtocolLib for general packet's function support-->
|
||||
<dependency>
|
||||
<groupId>com.comphenix.protocol</groupId>
|
||||
<artifactId>ProtocolLib</artifactId>
|
||||
<version>4.8.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -7,9 +7,6 @@ import cc.carm.lib.mineconfiguration.bukkit.builder.CraftConfigBuilder;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.source.CraftConfigProvider;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.source.CraftSectionWrapper;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class CraftConfigValue<T> extends CachedConfigValue<T> {
|
||||
|
||||
@ -17,7 +14,7 @@ public abstract class CraftConfigValue<T> extends CachedConfigValue<T> {
|
||||
return new CraftConfigBuilder();
|
||||
}
|
||||
|
||||
public CraftConfigValue(@NotNull ValueManifest<T> manifest) {
|
||||
protected CraftConfigValue(@NotNull ValueManifest<T> manifest) {
|
||||
super(manifest);
|
||||
}
|
||||
|
||||
|
@ -6,11 +6,8 @@ import cc.carm.lib.mineconfiguration.bukkit.builder.message.CraftMessageBuilder;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.builder.serializable.SerializableBuilder;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.builder.sound.SoundConfigBuilder;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.builder.title.TitleConfigBuilder;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.data.ItemConfig;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredItem;
|
||||
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class CraftConfigBuilder extends ConfigBuilder {
|
||||
|
||||
@ -34,12 +31,4 @@ public class CraftConfigBuilder extends ConfigBuilder {
|
||||
return new SerializableBuilder<>(valueClass);
|
||||
}
|
||||
|
||||
public @NotNull ConfiguredItem ofItem() {
|
||||
return createItem().build();
|
||||
}
|
||||
|
||||
public @NotNull ConfiguredItem ofItem(@Nullable ItemConfig defaultItem) {
|
||||
return createItem().defaults(defaultItem).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,19 +2,21 @@ 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.data.ItemConfig;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.value.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<ItemConfig, ItemConfigBuilder> {
|
||||
public class ItemConfigBuilder extends AbstractCraftBuilder<ItemStack, ItemConfigBuilder> {
|
||||
|
||||
protected Material type;
|
||||
protected short data = 0;
|
||||
@ -84,7 +86,7 @@ public class ItemConfigBuilder extends AbstractCraftBuilder<ItemConfig, ItemConf
|
||||
return defaultFlags(new LinkedHashSet<>(Arrays.asList(flags)));
|
||||
}
|
||||
|
||||
public ItemConfigBuilder formatParam(@NotNull Function<@NotNull String, @NotNull String> paramFormatter) {
|
||||
public ItemConfigBuilder formatParam(@NotNull UnaryOperator<String> paramFormatter) {
|
||||
this.paramFormatter = paramFormatter;
|
||||
return getThis();
|
||||
}
|
||||
@ -104,9 +106,20 @@ public class ItemConfigBuilder extends AbstractCraftBuilder<ItemConfig, ItemConf
|
||||
return this;
|
||||
}
|
||||
|
||||
protected @Nullable ItemConfig buildDefault() {
|
||||
protected @Nullable ItemStack buildDefault() {
|
||||
if (this.type == null) return null;
|
||||
else return new ItemConfig(type, data, name, lore, enchants, flags);
|
||||
|
||||
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
|
||||
|
@ -1,6 +1,5 @@
|
||||
package cc.carm.lib.mineconfiguration.bukkit.builder.message;
|
||||
|
||||
import cc.carm.lib.configuration.core.value.ValueManifest;
|
||||
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;
|
||||
@ -9,7 +8,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Optional;
|
||||
import java.util.function.BiFunction;
|
||||
|
||||
public class CraftMessageBuilder extends MessageConfigBuilder<CommandSender, TextConfig> {
|
||||
|
@ -3,10 +3,9 @@ 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.function.TitleSendConsumer;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.utils.ProtocolLibHelper;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredTitle;
|
||||
import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import com.cryptomorin.xseries.messages.Titles;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.Range;
|
||||
@ -16,17 +15,7 @@ import java.util.function.Function;
|
||||
|
||||
public class TitleConfigBuilder extends AbstractCraftBuilder<TitleConfig, TitleConfigBuilder> {
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
protected static @NotNull TitleSendConsumer DEFAULT_TITLE_CONSUMER = (player, fadeIn, stay, fadeOut, line1, line2) -> {
|
||||
if (Bukkit.getPluginManager().isPluginEnabled("ProtocolLib")) {
|
||||
try {
|
||||
ProtocolLibHelper.sendTitle(player, fadeIn, stay, fadeOut, line1, line2);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
} else {
|
||||
player.sendTitle(line1, line2);
|
||||
}
|
||||
};
|
||||
protected static @NotNull TitleSendConsumer DEFAULT_TITLE_CONSUMER = Titles::sendTitle;
|
||||
|
||||
protected @NotNull String[] params = new String[0];
|
||||
|
||||
|
@ -26,6 +26,8 @@ public class ItemConfig {
|
||||
protected @NotNull Map<Enchantment, Integer> enchants;
|
||||
protected @NotNull Set<ItemFlag> flags;
|
||||
|
||||
protected int customModelData = 0;
|
||||
|
||||
public ItemConfig(@NotNull Material type, @Nullable String name) {
|
||||
this(type, name, Collections.emptyList());
|
||||
}
|
||||
@ -131,7 +133,7 @@ public class ItemConfig {
|
||||
public static @NotNull ItemConfig deserialize(@NotNull ConfigurationSection section) throws Exception {
|
||||
return deserialize(CraftSectionWrapper.of(section));
|
||||
}
|
||||
|
||||
|
||||
public static @NotNull ItemConfig deserialize(@NotNull ConfigurationWrapper<?> section) throws Exception {
|
||||
String typeName = section.getString("type");
|
||||
if (typeName == null) throw new NullPointerException("Item type name is null");
|
||||
|
@ -1,41 +0,0 @@
|
||||
package cc.carm.lib.mineconfiguration.bukkit.utils;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.ProtocolManager;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers;
|
||||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ProtocolLibHelper {
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public static void sendTitle(@NotNull Player player, long fadeIn, long stay, long fadeOut, String line1, String line2) throws Exception {
|
||||
ProtocolManager pm = ProtocolLibrary.getProtocolManager();
|
||||
|
||||
if (line1 != null) {
|
||||
PacketContainer packet = pm.createPacket(PacketType.Play.Server.TITLE);
|
||||
packet.getTitleActions().write(0, EnumWrappers.TitleAction.TITLE);
|
||||
packet.getChatComponents().write(0, WrappedChatComponent.fromText(line1));
|
||||
pm.sendServerPacket(player, packet, false);
|
||||
}
|
||||
|
||||
if (line2 != null) {
|
||||
PacketContainer packet = pm.createPacket(PacketType.Play.Server.TITLE);
|
||||
packet.getTitleActions().write(0, EnumWrappers.TitleAction.SUBTITLE);
|
||||
packet.getChatComponents().write(0, WrappedChatComponent.fromText(line2));
|
||||
pm.sendServerPacket(player, packet, false);
|
||||
}
|
||||
|
||||
PacketContainer timePacket = pm.createPacket(PacketType.Play.Server.TITLE);
|
||||
timePacket.getTitleActions().write(0, EnumWrappers.TitleAction.TIMES);
|
||||
timePacket.getIntegers()
|
||||
.write(0, Math.toIntExact(fadeIn))
|
||||
.write(1, Math.toIntExact(stay))
|
||||
.write(2, Math.toIntExact(fadeOut));
|
||||
pm.sendServerPacket(player, timePacket, false);
|
||||
}
|
||||
|
||||
}
|
@ -1,71 +1,109 @@
|
||||
package cc.carm.lib.mineconfiguration.bukkit.value;
|
||||
|
||||
import cc.carm.lib.configuration.core.function.ConfigValueParser;
|
||||
import cc.carm.lib.configuration.core.source.ConfigurationWrapper;
|
||||
import cc.carm.lib.configuration.core.value.ValueManifest;
|
||||
import cc.carm.lib.configuration.core.value.type.ConfiguredSection;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.CraftConfigValue;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.builder.item.ItemConfigBuilder;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.data.ItemConfig;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.utils.TextParser;
|
||||
import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils;
|
||||
import com.cryptomorin.xseries.XItemStack;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class ConfiguredItem extends ConfiguredSection<ItemConfig> {
|
||||
public class ConfiguredItem extends ConfiguredSection<ItemStack> {
|
||||
|
||||
public static ItemConfigBuilder create() {
|
||||
return CraftConfigValue.builder().createItem();
|
||||
}
|
||||
|
||||
public static ConfiguredItem of() {
|
||||
return CraftConfigValue.builder().ofItem();
|
||||
}
|
||||
|
||||
public static ConfiguredItem of(@Nullable ItemConfig defaultItem) {
|
||||
return CraftConfigValue.builder().ofItem(defaultItem);
|
||||
return new ItemConfigBuilder();
|
||||
}
|
||||
|
||||
protected final @NotNull String[] params;
|
||||
|
||||
public ConfiguredItem(@NotNull ValueManifest<ItemConfig> manifest, @NotNull String[] params) {
|
||||
public ConfiguredItem(@NotNull ValueManifest<ItemStack> manifest, @NotNull String[] params) {
|
||||
super(
|
||||
manifest, ItemConfig.class,
|
||||
getItemParser(), ItemConfig::serialize
|
||||
manifest, ItemStack.class,
|
||||
(data, v) -> XItemStack.deserialize((ConfigurationSection) data.getSource()),
|
||||
XItemStack::serialize
|
||||
);
|
||||
this.params = params;
|
||||
}
|
||||
|
||||
public static ConfigValueParser<ConfigurationWrapper<?>, ItemConfig> getItemParser() {
|
||||
return (s, d) -> ItemConfig.deserialize(s);
|
||||
}
|
||||
|
||||
public @NotNull String[] getParams() {
|
||||
return params;
|
||||
}
|
||||
|
||||
public @Nullable ItemStack getItem(@Nullable Player player) {
|
||||
return getItem(player, 1);
|
||||
public void modifyItem(Consumer<ItemStack> modifier) {
|
||||
ItemStack item = get();
|
||||
if (item == null) return;
|
||||
modifier.accept(item);
|
||||
set(item);
|
||||
}
|
||||
|
||||
public @Nullable ItemStack getItem(@Nullable Player player, int amount) {
|
||||
return getItem(player, amount, new HashMap<>());
|
||||
public void modifyMeta(Consumer<ItemMeta> modifier) {
|
||||
modifyItem(item -> {
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
modifier.accept(meta);
|
||||
item.setItemMeta(meta);
|
||||
});
|
||||
}
|
||||
|
||||
public @Nullable ItemStack getItem(@Nullable Player player, int amount, @NotNull Object... values) {
|
||||
return getItem(player, amount, ParamsUtils.buildParams(params, values));
|
||||
public void setName(@Nullable String name) {
|
||||
modifyMeta(meta -> meta.setDisplayName(name));
|
||||
}
|
||||
|
||||
public @Nullable ItemStack getItem(@Nullable Player player, int amount, @NotNull String[] params, @NotNull Object[] values) {
|
||||
return getItem(player, amount, ParamsUtils.buildParams(params, values));
|
||||
public void setLore(@Nullable List<String> lore) {
|
||||
modifyMeta(meta -> meta.setLore(lore));
|
||||
}
|
||||
|
||||
public @Nullable ItemStack getItem(@Nullable Player player, int amount, @NotNull Map<String, Object> placeholders) {
|
||||
return getOptional().map(item -> item.getItemStack(player, amount, placeholders)).orElse(null);
|
||||
public void setLore(String... lore) {
|
||||
if (lore.length == 0) setLore((List<String>) null);
|
||||
else setLore(Arrays.asList(lore));
|
||||
}
|
||||
|
||||
public @Nullable ItemStack get(@Nullable Player player) {
|
||||
return get(player, new HashMap<>());
|
||||
}
|
||||
|
||||
public @Nullable ItemStack get(@Nullable Player player, @NotNull Object... values) {
|
||||
return get(player, ParamsUtils.buildParams(params, values));
|
||||
}
|
||||
|
||||
public @Nullable ItemStack get(@Nullable Player player, @NotNull String[] params, @NotNull Object[] values) {
|
||||
return get(player, ParamsUtils.buildParams(params, values));
|
||||
}
|
||||
|
||||
public @Nullable ItemStack get(@Nullable Player player, @NotNull Map<String, Object> placeholders) {
|
||||
return get((item) -> {
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
if (meta == null) return;
|
||||
|
||||
List<String> lore = meta.getLore();
|
||||
if (lore != null && !lore.isEmpty()) {
|
||||
meta.setLore(TextParser.parseList(player, lore, placeholders));
|
||||
}
|
||||
|
||||
String name = meta.getDisplayName();
|
||||
if (!name.isEmpty()) {
|
||||
meta.setDisplayName(TextParser.parseText(player, name, placeholders));
|
||||
}
|
||||
|
||||
item.setItemMeta(meta);
|
||||
});
|
||||
}
|
||||
|
||||
public @Nullable ItemStack get(Consumer<ItemStack> modifier) {
|
||||
return getOptional().map(item -> {
|
||||
modifier.accept(item);
|
||||
return item;
|
||||
}).orElse(null);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,15 +4,19 @@ 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 com.cryptomorin.xseries.messages.ActionBar;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
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;
|
||||
|
||||
@ -41,6 +45,14 @@ public class ConfiguredMessage<M> extends ConfigMessage<M, TextConfig, CommandSe
|
||||
super(manifest, TextConfig.class, params, messageParser, sendFunction, TextConfig::of);
|
||||
}
|
||||
|
||||
public void sendActionBar(Player player, String... values) {
|
||||
sendActionBar(player, ParamsUtils.buildParams(this.params, values));
|
||||
}
|
||||
|
||||
public void sendActionBar(Player player, Map<String, Object> placeholders) {
|
||||
ActionBar.sendActionBar(player, parseString(player, placeholders));
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Collection<CommandSender> getAllReceivers() {
|
||||
List<CommandSender> senders = new ArrayList<>();
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>mineconfiguration-parent</artifactId>
|
||||
<groupId>cc.carm.lib</groupId>
|
||||
<version>2.6.0</version>
|
||||
<version>2.6.1</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
Loading…
Reference in New Issue
Block a user