mirror of
https://github.com/CarmJos/UserPrefix.git
synced 2024-09-19 20:15:47 +00:00
chore: 适配依赖更新,移除冗余代码 (#33)
* feat(actions): 为单个前缀的选择添加可配置的操作 * feat(actions): 实现在前缀选择时执行操作 * chore: 适配新接口,删除冗杂代码 * chore: 适配新接口,删除冗杂代码 * chore: 修改repo
This commit is contained in:
parent
e3c911d375
commit
cc0122f9ba
22
pom.xml
22
pom.xml
@ -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>
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -24,7 +24,6 @@ public class PluginMessages extends ConfigurationRoot {
|
||||
.defaults("&c&l抱歉!&f但您没有权限使用该指令。")
|
||||
.build();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -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)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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());
|
@ -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) {
|
||||
|
@ -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会员前缀 !"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user