1
mirror of https://github.com/CarmJos/UserPrefix.git synced 2024-09-19 12:05:47 +00:00

chore: 适配依赖更新,移除冗余代码 (#33)

* feat(actions): 为单个前缀的选择添加可配置的操作

* feat(actions): 实现在前缀选择时执行操作

* chore: 适配新接口,删除冗杂代码

* chore: 适配新接口,删除冗杂代码

* chore: 修改repo
This commit is contained in:
Carm Jos 2022-09-10 01:57:45 +08:00 committed by GitHub
parent e3c911d375
commit cc0122f9ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 51 additions and 71 deletions

22
pom.xml
View File

@ -14,7 +14,7 @@
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<easyplugin.version>1.4.14</easyplugin.version>
<mineconfig.version>2.0.2</mineconfig.version>
<mineconfig.version>2.1.0</mineconfig.version>
</properties>
<groupId>cc.carm.plugin</groupId>
@ -61,6 +61,16 @@
<repositories>
<repository>
<id>maven-central</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/repositories/public/</url>
</repository>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
@ -71,16 +81,6 @@
<url>https://repo.lucko.me/</url>
</repository>
<repository>
<id>maven-central</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
<repository>
<id>sonatype-repo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
<repository>
<id>EasyPlugin</id>
<url>https://raw.githubusercontent.com/CarmJos/EasyPlugin/repo/</url>

View File

@ -11,11 +11,12 @@ import cc.carm.plugin.userprefix.conf.PluginConfig;
import cc.carm.plugin.userprefix.hooker.UserPrefixExpansion;
import cc.carm.plugin.userprefix.listener.ChatListener;
import cc.carm.plugin.userprefix.listener.UserListener;
import cc.carm.plugin.userprefix.listener.processor.UserNodeUpdateProcessor;
import cc.carm.plugin.userprefix.listener.UserPermListener;
import cc.carm.plugin.userprefix.manager.ConfigManager;
import cc.carm.plugin.userprefix.manager.PrefixManager;
import cc.carm.plugin.userprefix.manager.ServiceManager;
import cc.carm.plugin.userprefix.manager.UserManager;
import cc.carm.plugin.userprefix.ui.PrefixSelectGUI;
import net.luckperms.api.event.user.UserDataRecalculateEvent;
import org.bstats.bukkit.Metrics;
import org.bstats.charts.SimplePie;
@ -55,7 +56,7 @@ public class Main extends EasyPlugin {
registerListener(new ChatListener());
ServiceManager.getService().getEventBus().subscribe(
this, UserDataRecalculateEvent.class,
UserNodeUpdateProcessor::process
UserPermListener::process
);
log("初始化GUI管理器...");
@ -98,6 +99,20 @@ public class Main extends EasyPlugin {
return true;
}
@Override
protected void shutdown() {
log("关闭已被打开的GUI...");
Bukkit.getOnlinePlayers().stream().filter(GUI::hasOpenedGUI).forEach(player -> {
player.closeInventory();
GUI.removeOpenedGUI(player);
PrefixSelectGUI.removeOpening(player);
});
log("&7感谢您使用 &3&lUserPrefix " + getDescription().getVersion() + "&7!");
log("&7本插件由 &b&lYourCraft &7提供长期支持与维护。");
}
@Override
public boolean isDebugging() {
return PluginConfig.DEBUG.getNotNull();
@ -111,7 +126,7 @@ public class Main extends EasyPlugin {
getInstance().debug(message);
}
public static void serve(String... message) {
public static void severe(String... message) {
getInstance().error(message);
}

View File

@ -9,9 +9,9 @@ import cc.carm.lib.configuration.core.value.type.ConfiguredValue;
import cc.carm.lib.easyplugin.gui.configuration.GUIActionConfiguration;
import cc.carm.lib.easyplugin.gui.configuration.GUIActionType;
import cc.carm.lib.easyplugin.gui.configuration.GUIItemConfiguration;
import cc.carm.lib.mineconfiguration.bukkit.source.CraftSectionWrapper;
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredItem;
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredSound;
import cc.carm.plugin.userprefix.conf.reader.GUIItemReader;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemFlag;
@ -121,7 +121,10 @@ public class PluginConfig extends ConfigurationRoot {
public static final ConfigValue<GUIItemConfiguration> BACK = ConfiguredValue.builder(GUIItemConfiguration.class)
.fromSection()
.serializeValue(GUIItemConfiguration::serialize)
.parseValue((v, d) -> GUIItemReader.readFrom(v))
.parseValue((v, d) -> {
if (!(v instanceof CraftSectionWrapper)) return null;
return GUIItemConfiguration.readFrom(((CraftSectionWrapper) v).getSource());
})
.defaults(new GUIItemConfiguration(
Material.BARRIER, 1, 0, "&c&l返回",
Collections.singletonList("&f点击即可返回上一菜单"),
@ -159,6 +162,7 @@ public class PluginConfig extends ConfigurationRoot {
public static final ConfiguredList<String> ACTIONS = ConfiguredList.builder(String.class).fromString()
.defaults("[CONSOLE] " + "say %player_name% 选择了默认前缀")
.build();
@HeaderComment({"默认前缀的显示物品"})
public static final class ITEM {

View File

@ -24,7 +24,6 @@ public class PluginMessages extends ConfigurationRoot {
.defaults("&c&l抱歉&f但您没有权限使用该指令。")
.build();
}

View File

@ -1,42 +0,0 @@
package cc.carm.plugin.userprefix.conf.reader;
import cc.carm.lib.configuration.core.source.ConfigurationWrapper;
import cc.carm.lib.easyplugin.gui.configuration.GUIActionConfiguration;
import cc.carm.lib.easyplugin.gui.configuration.GUIItemConfiguration;
import org.bukkit.Material;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
public class GUIItemReader {
public static @Nullable GUIItemConfiguration readFrom(@Nullable ConfigurationWrapper section) {
if (section == null) return null;
String material = Optional.ofNullable(section.getString("type")).orElse("STONE");
Material type = Optional.ofNullable(Material.matchMaterial(material)).orElse(Material.STONE);
int data = section.getInt("data", 0);
int amount = section.getInt("amount", 1);
String name = section.getString("name");
List<String> lore = section.getStringList("lore");
List<Integer> slots = section.getIntegerList("slots");
int slot = section.getInt("slot", 0);
List<String> actionsString = section.getStringList("actions");
List<GUIActionConfiguration> actions = new ArrayList<>();
for (String actionString : actionsString) {
GUIActionConfiguration action = GUIActionConfiguration.deserialize(actionString);
if (action == null) continue;
actions.add(action);
}
return new GUIItemConfiguration(
type, amount, data, name, lore, actions,
slots.size() > 0 ? slots : Collections.singletonList(slot)
);
}
}

View File

@ -19,8 +19,8 @@ public class ChatListener implements Listener {
try {
event.setFormat(MessageUtils.setPlaceholders(event.getPlayer(), format));
} catch (Exception exception) {
Main.serve("请检查配置文件中聊天相关是否配置正确。");
Main.serve("Please check the chat configuration.");
Main.severe("请检查配置文件中聊天相关是否配置正确。");
Main.severe("Please check the chat configuration.");
exception.printStackTrace();
}

View File

@ -1,4 +1,4 @@
package cc.carm.plugin.userprefix.listener.processor;
package cc.carm.plugin.userprefix.listener;
import cc.carm.plugin.userprefix.Main;
import cc.carm.plugin.userprefix.UserPrefixAPI;
@ -7,7 +7,7 @@ import net.luckperms.api.event.user.UserDataRecalculateEvent;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
public class UserNodeUpdateProcessor {
public class UserPermListener {
public static void process(UserDataRecalculateEvent event) {
Player player = Bukkit.getPlayer(event.getUser().getUniqueId());

View File

@ -2,7 +2,6 @@ package cc.carm.plugin.userprefix.manager;
import cc.carm.lib.easyplugin.gui.configuration.GUIActionConfiguration;
import cc.carm.lib.mineconfiguration.bukkit.data.ItemConfig;
import cc.carm.lib.mineconfiguration.bukkit.source.CraftSectionWrapper;
import cc.carm.plugin.userprefix.Main;
import cc.carm.plugin.userprefix.conf.PluginConfig;
import cc.carm.plugin.userprefix.conf.prefix.PrefixConfig;
@ -42,9 +41,9 @@ public class PrefixManager {
String[] filesList = prefixDataFolder.list();
if (filesList == null || filesList.length < 1) {
Main.serve("配置文件夹中暂无任何前缀配置问,请检查。");
Main.serve("There's no configured prefix.");
Main.serve("Path: " + prefixDataFolder.getAbsolutePath());
Main.severe("配置文件夹中暂无任何前缀配置问,请检查。");
Main.severe("There's no configured prefix.");
Main.severe("Path: " + prefixDataFolder.getAbsolutePath());
return;
}
@ -62,8 +61,8 @@ public class PrefixManager {
Main.debugging("完成前缀加载 " + prefix.getIdentifier() + " : " + prefix.getName());
loaded.put(prefix.getIdentifier(), prefix);
} catch (Exception ex) {
Main.serve("在加载前缀 " + file.getAbsolutePath() + " 时出错,请检查配置!");
Main.serve("Error occurred when loading prefix #" + file.getAbsolutePath() + " !");
Main.severe("在加载前缀 " + file.getAbsolutePath() + " 时出错,请检查配置!");
Main.severe("Error occurred when loading prefix #" + file.getAbsolutePath() + " !");
ex.printStackTrace();
}
}
@ -152,7 +151,11 @@ public class PrefixManager {
@Contract("_,!null->!null")
protected static ItemConfig readItem(@Nullable ConfigurationSection section, @Nullable ItemConfig defaultValue) throws Exception {
if (section == null) return defaultValue;
else return ItemConfig.deserialize(CraftSectionWrapper.of(section));
else return ItemConfig.deserialize(section);
}
protected static List<GUIActionConfiguration> readActions(@NotNull List<String> strings) {
return strings.stream().map(GUIActionConfiguration::deserialize).filter(Objects::nonNull).collect(Collectors.toList());
}
protected static List<GUIActionConfiguration> readActions(@NotNull List<String> strings) {

View File

@ -24,7 +24,8 @@ permission: "yc.pro"
# 选择这个前缀时执行的操作 [非必须]
# 用于在玩家选择/取消选择前缀时执行相应动作,以便于实现一些特殊的功能。
# 具体操作类型详见: https://github.com/CarmJos/UserPrefix/tree/master/.documentation/ACTIONS.md
# 具体操作类型详见介绍,前缀操作不支持限定点击类型。
# https://github.com/CarmJos/UserPrefix/tree/master/.documentation/ACTIONS.md
actions:
- "[CONSOLE] say %player_name% 选择了 Pro会员前缀 "