mirror of
https://github.com/CarmJos/UserPrefix.git
synced 2024-09-19 20:15:47 +00:00
chore(item): 更换物品的配置逻辑,支持跨版本的物品读取、保存。
BREAKING-CHANGE: 旧的配置文件需要进行变更。
This commit is contained in:
parent
0d25490d0f
commit
4cc50c21d5
6
pom.xml
6
pom.xml
@ -13,13 +13,13 @@
|
|||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||||
|
|
||||||
<deps.easyplugin.version>1.5.2</deps.easyplugin.version>
|
<deps.easyplugin.version>1.5.8</deps.easyplugin.version>
|
||||||
<deps.mineconfig.version>2.4.0</deps.mineconfig.version>
|
<deps.mineconfig.version>2.8.6</deps.mineconfig.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<groupId>cc.carm.plugin</groupId>
|
<groupId>cc.carm.plugin</groupId>
|
||||||
<artifactId>userprefix</artifactId>
|
<artifactId>userprefix</artifactId>
|
||||||
<version>3.2.0</version>
|
<version>3.2.2</version>
|
||||||
|
|
||||||
<name>UserPrefix</name>
|
<name>UserPrefix</name>
|
||||||
<description>轻便、高效、实时的用户前缀系统。</description>
|
<description>轻便、高效、实时的用户前缀系统。</description>
|
||||||
|
@ -61,8 +61,8 @@ public class Main extends EasyPlugin {
|
|||||||
|
|
||||||
log("初始化GUI管理器...");
|
log("初始化GUI管理器...");
|
||||||
GUI.initialize(this);
|
GUI.initialize(this);
|
||||||
AutoPagedGUI.defaultNextPage = (PluginConfig.GUI.BOTTOMS.NEXT_PAGE::getItem);
|
AutoPagedGUI.defaultNextPage = (PluginConfig.GUI.BOTTOMS.NEXT_PAGE::get);
|
||||||
AutoPagedGUI.defaultPreviousPage = (PluginConfig.GUI.BOTTOMS.PREV_PAGE::getItem);
|
AutoPagedGUI.defaultPreviousPage = (PluginConfig.GUI.BOTTOMS.PREV_PAGE::get);
|
||||||
|
|
||||||
if (MessageUtils.hasPlaceholderAPI()) {
|
if (MessageUtils.hasPlaceholderAPI()) {
|
||||||
log("注册变量...");
|
log("注册变量...");
|
||||||
|
@ -6,8 +6,8 @@ import cc.carm.lib.configuration.core.annotation.HeaderComment;
|
|||||||
import cc.carm.lib.configuration.core.value.ConfigValue;
|
import cc.carm.lib.configuration.core.value.ConfigValue;
|
||||||
import cc.carm.lib.configuration.core.value.type.ConfiguredList;
|
import cc.carm.lib.configuration.core.value.type.ConfiguredList;
|
||||||
import cc.carm.lib.configuration.core.value.type.ConfiguredValue;
|
import cc.carm.lib.configuration.core.value.type.ConfiguredValue;
|
||||||
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredItem;
|
|
||||||
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredSound;
|
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredSound;
|
||||||
|
import cc.carm.lib.mineconfiguration.bukkit.value.item.ConfiguredItem;
|
||||||
import cc.carm.plugin.userprefix.conf.gui.GUIItems;
|
import cc.carm.plugin.userprefix.conf.gui.GUIItems;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
@ -116,7 +116,7 @@ public class PluginConfig extends ConfigurationRoot {
|
|||||||
|
|
||||||
@HeaderComment("GUI中的其他按钮物品 (若与现有物品位置冲突,将被覆盖)")
|
@HeaderComment("GUI中的其他按钮物品 (若与现有物品位置冲突,将被覆盖)")
|
||||||
public static final ConfigValue<GUIItems> ITEMS = ConfiguredValue
|
public static final ConfigValue<GUIItems> ITEMS = ConfiguredValue
|
||||||
.builder(GUIItems.class).fromSection()
|
.builderOf(GUIItems.class).fromSection()
|
||||||
.defaults(GUIItems::defaults)
|
.defaults(GUIItems::defaults)
|
||||||
.serializeValue(GUIItems::serialize)
|
.serializeValue(GUIItems::serialize)
|
||||||
.parseValue((v, d) -> GUIItems.parse(v))
|
.parseValue((v, d) -> GUIItems.parse(v))
|
||||||
@ -147,7 +147,7 @@ public class PluginConfig extends ConfigurationRoot {
|
|||||||
public static final ConfigValue<String> CONTENT = ConfiguredValue.of(String.class, "&r");
|
public static final ConfigValue<String> CONTENT = ConfiguredValue.of(String.class, "&r");
|
||||||
|
|
||||||
@HeaderComment({"选择默认前缀时执行的操作"})
|
@HeaderComment({"选择默认前缀时执行的操作"})
|
||||||
public static final ConfiguredList<String> ACTIONS = ConfiguredList.builder(String.class).fromString()
|
public static final ConfiguredList<String> ACTIONS = ConfiguredList.builderOf(String.class).fromString()
|
||||||
.defaults("[CONSOLE] " + "say %player_name% 选择了默认前缀")
|
.defaults("[CONSOLE] " + "say %player_name% 选择了默认前缀")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
@ -2,10 +2,11 @@ package cc.carm.plugin.userprefix.conf.prefix;
|
|||||||
|
|
||||||
import cc.carm.lib.easyplugin.gui.configuration.GUIActionConfiguration;
|
import cc.carm.lib.easyplugin.gui.configuration.GUIActionConfiguration;
|
||||||
import cc.carm.lib.easyplugin.utils.ColorParser;
|
import cc.carm.lib.easyplugin.utils.ColorParser;
|
||||||
import cc.carm.lib.mineconfiguration.bukkit.data.ItemConfig;
|
import cc.carm.lib.mineconfiguration.bukkit.value.item.PreparedItem;
|
||||||
import cc.carm.plugin.userprefix.manager.ServiceManager;
|
import cc.carm.plugin.userprefix.manager.ServiceManager;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.jetbrains.annotations.Contract;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@ -24,16 +25,16 @@ public class PrefixConfig {
|
|||||||
|
|
||||||
protected final @NotNull List<GUIActionConfiguration> actions;
|
protected final @NotNull List<GUIActionConfiguration> actions;
|
||||||
|
|
||||||
protected final @NotNull ItemConfig itemHasPermission;
|
protected final @NotNull ItemStack itemHasPermission;
|
||||||
protected final @Nullable ItemConfig itemNoPermission;
|
protected final @Nullable ItemStack itemNoPermission;
|
||||||
protected final @Nullable ItemConfig itemWhenUsing;
|
protected final @Nullable ItemStack itemWhenUsing;
|
||||||
|
|
||||||
public PrefixConfig(@NotNull String identifier, @NotNull String name,
|
public PrefixConfig(@NotNull String identifier, @NotNull String name,
|
||||||
@NotNull String content, int weight, @Nullable String permission,
|
@NotNull String content, int weight, @Nullable String permission,
|
||||||
@NotNull List<GUIActionConfiguration> actions,
|
@NotNull List<GUIActionConfiguration> actions,
|
||||||
@NotNull ItemConfig itemHasPermission,
|
@NotNull ItemStack itemHasPermission,
|
||||||
@Nullable ItemConfig itemWhenUsing,
|
@Nullable ItemStack itemWhenUsing,
|
||||||
@Nullable ItemConfig itemNoPermission) {
|
@Nullable ItemStack itemNoPermission) {
|
||||||
this.identifier = identifier;
|
this.identifier = identifier;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.content = content;
|
this.content = content;
|
||||||
@ -71,21 +72,26 @@ public class PrefixConfig {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public ItemStack getItemHasPermission(@Nullable Player player) {
|
public ItemStack getItemHasPermission(@Nullable Player player) {
|
||||||
return this.itemHasPermission.getItemStack(player);
|
return getItem(player, this.itemHasPermission);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public ItemStack getItemNoPermission(@Nullable Player player) {
|
public ItemStack getItemNoPermission(@Nullable Player player) {
|
||||||
if (this.itemNoPermission == null) return null;
|
return getItem(player, this.itemNoPermission);
|
||||||
return this.itemNoPermission.getItemStack(player);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public ItemStack getItemWhenUsing(@Nullable Player player) {
|
public ItemStack getItemWhenUsing(@Nullable Player player) {
|
||||||
if (this.itemWhenUsing == null) return null;
|
return getItem(player, this.itemWhenUsing);
|
||||||
else return this.itemWhenUsing.getItemStack(player);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Contract("_,!null->!null")
|
||||||
|
protected @Nullable ItemStack getItem(@Nullable Player player, @Nullable ItemStack item) {
|
||||||
|
if (item == null) return null;
|
||||||
|
return PreparedItem.of(item).get(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean isPublic() {
|
public boolean isPublic() {
|
||||||
return getPermission() == null;
|
return getPermission() == null;
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
package cc.carm.plugin.userprefix.manager;
|
package cc.carm.plugin.userprefix.manager;
|
||||||
|
|
||||||
import cc.carm.lib.easyplugin.gui.configuration.GUIActionConfiguration;
|
import cc.carm.lib.easyplugin.gui.configuration.GUIActionConfiguration;
|
||||||
import cc.carm.lib.mineconfiguration.bukkit.data.ItemConfig;
|
import cc.carm.lib.easyplugin.utils.ItemStackFactory;
|
||||||
import cc.carm.plugin.userprefix.Main;
|
import cc.carm.plugin.userprefix.Main;
|
||||||
import cc.carm.plugin.userprefix.conf.PluginConfig;
|
import cc.carm.plugin.userprefix.conf.PluginConfig;
|
||||||
import cc.carm.plugin.userprefix.conf.prefix.PrefixConfig;
|
import cc.carm.plugin.userprefix.conf.prefix.PrefixConfig;
|
||||||
|
import com.cryptomorin.xseries.XItemStack;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.jetbrains.annotations.Contract;
|
import org.jetbrains.annotations.Contract;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@ -80,8 +82,7 @@ public class PrefixManager {
|
|||||||
null,
|
null,
|
||||||
readActions(PluginConfig.DEFAULT_PREFIX.ACTIONS.get()),
|
readActions(PluginConfig.DEFAULT_PREFIX.ACTIONS.get()),
|
||||||
PluginConfig.DEFAULT_PREFIX.ITEM.NOT_USING.getNotNull(),
|
PluginConfig.DEFAULT_PREFIX.ITEM.NOT_USING.getNotNull(),
|
||||||
PluginConfig.DEFAULT_PREFIX.ITEM.USING.get(),
|
PluginConfig.DEFAULT_PREFIX.ITEM.USING.get(), null
|
||||||
null
|
|
||||||
);
|
);
|
||||||
Main.debugging(" 完成默认前缀加载 " + defaultPrefix.getName());
|
Main.debugging(" 完成默认前缀加载 " + defaultPrefix.getName());
|
||||||
}
|
}
|
||||||
@ -124,34 +125,38 @@ public class PrefixManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static @NotNull PrefixConfig addPrefix(@NotNull File file) throws Exception {
|
public static @NotNull PrefixConfig addPrefix(@NotNull File file) throws Exception {
|
||||||
FileConfiguration configuration = YamlConfiguration.loadConfiguration(file);
|
FileConfiguration conf = YamlConfiguration.loadConfiguration(file);
|
||||||
String identifier = configuration.getString("identifier");
|
String identifier = conf.getString("identifier");
|
||||||
if (identifier == null)
|
if (identifier == null)
|
||||||
throw new Exception("配置文件 " + file.getAbsolutePath() + " 中没有配置前缀的唯一标识。");
|
throw new Exception("配置文件 " + file.getAbsolutePath() + " 中没有配置前缀的唯一标识。");
|
||||||
|
|
||||||
String name = configuration.getString("name");
|
String name = conf.getString("name");
|
||||||
if (name == null) throw new Exception("配置文件 " + file.getAbsolutePath() + " 中没有配置前缀的显示名称。");
|
if (name == null) throw new Exception("配置文件 " + file.getAbsolutePath() + " 中没有配置前缀的显示名称。");
|
||||||
|
|
||||||
return new PrefixConfig(
|
return new PrefixConfig(
|
||||||
identifier, name,
|
identifier, name,
|
||||||
configuration.getString("content", "&r"),
|
conf.getString("content", "&r"),
|
||||||
configuration.getInt("weight", 1),
|
conf.getInt("weight", 1),
|
||||||
configuration.getString("permission"),
|
conf.getString("permission"),
|
||||||
readActions(configuration.getStringList("actions")),
|
readActions(conf.getStringList("actions")),
|
||||||
readItem(
|
readItem(
|
||||||
configuration.getConfigurationSection("item.has-perm"),
|
conf.getConfigurationSection("item.has-perm"),
|
||||||
new ItemConfig(Material.STONE, name, Arrays.asList(" ", "§a➥ 点击切换到该前缀"))
|
new ItemStackFactory(Material.STONE)
|
||||||
|
.setDisplayName(name)
|
||||||
|
.addLore("§a➥ 点击切换到该前缀")
|
||||||
|
.toItemStack()
|
||||||
),
|
),
|
||||||
readItem(configuration.getConfigurationSection("item.using"), null),
|
readItem(conf.getConfigurationSection("item.using"), null),
|
||||||
readItem(configuration.getConfigurationSection("item.no-perm"), null)
|
readItem(conf.getConfigurationSection("item.no-perm"), null)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Contract("_,!null->!null")
|
@Contract("_,!null->!null")
|
||||||
protected static ItemConfig readItem(@Nullable ConfigurationSection section, @Nullable ItemConfig defaultValue) throws Exception {
|
protected static ItemStack readItem(@Nullable ConfigurationSection section,
|
||||||
|
@Nullable ItemStack defaultValue) throws Exception {
|
||||||
if (section == null) return defaultValue;
|
if (section == null) return defaultValue;
|
||||||
else return ItemConfig.deserialize(section);
|
else return XItemStack.deserialize(section);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static List<GUIActionConfiguration> readActions(@NotNull List<String> strings) {
|
protected static List<GUIActionConfiguration> readActions(@NotNull List<String> strings) {
|
||||||
|
Loading…
Reference in New Issue
Block a user