mirror of
https://github.com/CarmJos/UserPrefix.git
synced 2024-09-19 12:05:47 +00:00
feat(actions): 支持切换前缀时执行自定义操作 (#32)
* feat(actions): 为单个前缀的选择添加可配置的操作 * feat(actions): 实现在前缀选择时执行操作
This commit is contained in:
parent
dc14b0cd2e
commit
e3c911d375
31
.documentation/ACTIONS.md
Normal file
31
.documentation/ACTIONS.md
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# UserPrefix Actions 操作
|
||||||
|
|
||||||
|
## 使用方式
|
||||||
|
|
||||||
|
在 `actions` 配置节点下,可以配置多个操作,格式为 `[操作类型] {操作参数}`,例如:
|
||||||
|
|
||||||
|
- `[CHAT] HELLO %player_name%!`
|
||||||
|
- `[SOUND] ENTITY_PLAYER_LEVELUP`
|
||||||
|
|
||||||
|
## 操作类型
|
||||||
|
|
||||||
|
目前支持以下操作类型:
|
||||||
|
- `CHAT` 以玩家聊天的形式发送,若需要发送指令则添加“/”前缀
|
||||||
|
- `CONSOLE` 以后台的形式发送指令
|
||||||
|
- `MESSAGE` 向玩家发送一条消息
|
||||||
|
- `SOUND` 向玩家发送声音
|
||||||
|
- `CLOSE` 关闭当前打开的GUI
|
||||||
|
|
||||||
|
所有需要键入文本的类型均支持 [PlaceholderAPI](https://www.spigotmc.org/resources/6245/) 变量 。
|
||||||
|
|
||||||
|
## 限定点击类型
|
||||||
|
|
||||||
|
若您需要限定玩家点击的类型,如左键、右键等,则可以添加在操作类型后,以“`:`”分割,如:
|
||||||
|
|
||||||
|
- `[CLOSE:LEFT]` 代表左键点击关闭
|
||||||
|
- `[MESSAGE:MIDDLE] HELLO WORLD` 代表鼠标中间点击发送消息
|
||||||
|
|
||||||
|
详细点击类型见 [`org.bukkit.event.inventory.ClickType`](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/inventory/ClickType.html) 。
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
- 使用示例
|
- 使用示例
|
||||||
- [前缀配置文件预设示例](../src/main/resources/prefixes/example-prefix.yml)
|
- [前缀配置文件预设示例](../src/main/resources/prefixes/example-prefix.yml)
|
||||||
|
- [操作(Actions)配置](ACTIONS.md)
|
||||||
|
|
||||||
## [开发文档](JAVADOC-README.md)
|
## [开发文档](JAVADOC-README.md)
|
||||||
|
|
||||||
|
6
pom.xml
6
pom.xml
@ -13,7 +13,7 @@
|
|||||||
<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>
|
||||||
|
|
||||||
<easyplugin.version>1.4.13</easyplugin.version>
|
<easyplugin.version>1.4.14</easyplugin.version>
|
||||||
<mineconfig.version>2.0.2</mineconfig.version>
|
<mineconfig.version>2.0.2</mineconfig.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
@ -162,7 +162,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.luckperms</groupId>
|
<groupId>net.luckperms</groupId>
|
||||||
<artifactId>api</artifactId>
|
<artifactId>api</artifactId>
|
||||||
<version>5.3</version>
|
<version>5.4</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
@ -220,7 +220,7 @@
|
|||||||
<configuration>
|
<configuration>
|
||||||
<classifier>javadoc</classifier>
|
<classifier>javadoc</classifier>
|
||||||
<links>
|
<links>
|
||||||
<!-- <link>https://javadoc.io/doc/org.jetbrains/annotations/</link>-->
|
<link>https://javadoc.io/doc/org.jetbrains/annotations/</link>
|
||||||
<link>https://hub.spigotmc.org/javadocs/bukkit/</link>
|
<link>https://hub.spigotmc.org/javadocs/bukkit/</link>
|
||||||
<link>https://carmjos.github.io/EasyPlugin/</link>
|
<link>https://carmjos.github.io/EasyPlugin/</link>
|
||||||
<link>https://carmjos.github.io/MineConfiguration/</link>
|
<link>https://carmjos.github.io/MineConfiguration/</link>
|
||||||
|
@ -13,19 +13,20 @@ public class AdminCommand extends CommandHandler {
|
|||||||
|
|
||||||
public AdminCommand(@NotNull JavaPlugin plugin) {
|
public AdminCommand(@NotNull JavaPlugin plugin) {
|
||||||
super(plugin);
|
super(plugin);
|
||||||
registerSubCommand(new ListCommand("list", "l"));
|
registerSubCommand(new ListCommand(this, "list", "l"));
|
||||||
registerSubCommand(new ReloadCommand("reload"));
|
registerSubCommand(new ReloadCommand(this, "reload"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void noArgs(CommandSender sender) {
|
public Void noArgs(CommandSender sender) {
|
||||||
help(sender);
|
return help(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void noPermission(CommandSender sender) {
|
public Void noPermission(CommandSender sender) {
|
||||||
PluginMessages.COMMAND_USAGE.NO_PERM.send(sender);
|
PluginMessages.COMMAND_USAGE.NO_PERM.send(sender);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Void help(CommandSender sender) {
|
public static Void help(CommandSender sender) {
|
||||||
|
@ -2,15 +2,17 @@ package cc.carm.plugin.userprefix.command.sub;
|
|||||||
|
|
||||||
import cc.carm.lib.easyplugin.command.SubCommand;
|
import cc.carm.lib.easyplugin.command.SubCommand;
|
||||||
import cc.carm.plugin.userprefix.UserPrefixAPI;
|
import cc.carm.plugin.userprefix.UserPrefixAPI;
|
||||||
|
import cc.carm.plugin.userprefix.command.AdminCommand;
|
||||||
import cc.carm.plugin.userprefix.conf.PluginMessages;
|
import cc.carm.plugin.userprefix.conf.PluginMessages;
|
||||||
import cc.carm.plugin.userprefix.conf.prefix.PrefixConfig;
|
import cc.carm.plugin.userprefix.conf.prefix.PrefixConfig;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class ListCommand extends SubCommand {
|
public class ListCommand extends SubCommand<AdminCommand> {
|
||||||
|
|
||||||
public ListCommand(String name, String... aliases) {
|
public ListCommand(@NotNull AdminCommand parent, String name, String... aliases) {
|
||||||
super(name, aliases);
|
super(parent, name, aliases);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -2,17 +2,19 @@ package cc.carm.plugin.userprefix.command.sub;
|
|||||||
|
|
||||||
import cc.carm.lib.easyplugin.command.SubCommand;
|
import cc.carm.lib.easyplugin.command.SubCommand;
|
||||||
import cc.carm.plugin.userprefix.UserPrefixAPI;
|
import cc.carm.plugin.userprefix.UserPrefixAPI;
|
||||||
|
import cc.carm.plugin.userprefix.command.AdminCommand;
|
||||||
import cc.carm.plugin.userprefix.conf.PluginMessages;
|
import cc.carm.plugin.userprefix.conf.PluginMessages;
|
||||||
import cc.carm.plugin.userprefix.ui.PrefixSelectGUI;
|
import cc.carm.plugin.userprefix.ui.PrefixSelectGUI;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class ReloadCommand extends SubCommand {
|
public class ReloadCommand extends SubCommand<AdminCommand> {
|
||||||
|
|
||||||
public ReloadCommand(String name, String... aliases) {
|
public ReloadCommand(@NotNull AdminCommand parent, String name, String... aliases) {
|
||||||
super(name, aliases);
|
super(parent, name, aliases);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -4,6 +4,7 @@ import cc.carm.lib.configuration.core.ConfigurationRoot;
|
|||||||
import cc.carm.lib.configuration.core.annotation.ConfigPath;
|
import cc.carm.lib.configuration.core.annotation.ConfigPath;
|
||||||
import cc.carm.lib.configuration.core.annotation.HeaderComment;
|
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.ConfiguredValue;
|
import cc.carm.lib.configuration.core.value.type.ConfiguredValue;
|
||||||
import cc.carm.lib.easyplugin.gui.configuration.GUIActionConfiguration;
|
import cc.carm.lib.easyplugin.gui.configuration.GUIActionConfiguration;
|
||||||
import cc.carm.lib.easyplugin.gui.configuration.GUIActionType;
|
import cc.carm.lib.easyplugin.gui.configuration.GUIActionType;
|
||||||
@ -154,6 +155,10 @@ public class PluginConfig extends ConfigurationRoot {
|
|||||||
@HeaderComment({"默认前缀的内容,即用于显示的实际前缀"})
|
@HeaderComment({"默认前缀的内容,即用于显示的实际前缀"})
|
||||||
public static final ConfigValue<String> CONTENT = ConfiguredValue.of(String.class, "&r");
|
public static final ConfigValue<String> CONTENT = ConfiguredValue.of(String.class, "&r");
|
||||||
|
|
||||||
|
@HeaderComment({"选择默认前缀时执行的操作"})
|
||||||
|
public static final ConfiguredList<String> ACTIONS = ConfiguredList.builder(String.class).fromString()
|
||||||
|
.defaults("[CONSOLE] " + "say %player_name% 选择了默认前缀")
|
||||||
|
.build();
|
||||||
@HeaderComment({"默认前缀的显示物品"})
|
@HeaderComment({"默认前缀的显示物品"})
|
||||||
public static final class ITEM {
|
public static final class ITEM {
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package cc.carm.plugin.userprefix.conf.prefix;
|
package cc.carm.plugin.userprefix.conf.prefix;
|
||||||
|
|
||||||
|
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.data.ItemConfig;
|
||||||
import cc.carm.plugin.userprefix.manager.ServiceManager;
|
import cc.carm.plugin.userprefix.manager.ServiceManager;
|
||||||
@ -8,6 +9,8 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class PrefixConfig {
|
public class PrefixConfig {
|
||||||
|
|
||||||
protected final @NotNull String identifier;
|
protected final @NotNull String identifier;
|
||||||
@ -19,12 +22,15 @@ public class PrefixConfig {
|
|||||||
|
|
||||||
protected final @Nullable String permission;
|
protected final @Nullable String permission;
|
||||||
|
|
||||||
|
protected final @NotNull List<GUIActionConfiguration> actions;
|
||||||
|
|
||||||
protected final @NotNull ItemConfig itemHasPermission;
|
protected final @NotNull ItemConfig itemHasPermission;
|
||||||
protected final @Nullable ItemConfig itemNoPermission;
|
protected final @Nullable ItemConfig itemNoPermission;
|
||||||
protected final @Nullable ItemConfig itemWhenUsing;
|
protected final @Nullable ItemConfig 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 ItemConfig itemHasPermission,
|
@NotNull ItemConfig itemHasPermission,
|
||||||
@Nullable ItemConfig itemWhenUsing,
|
@Nullable ItemConfig itemWhenUsing,
|
||||||
@Nullable ItemConfig itemNoPermission) {
|
@Nullable ItemConfig itemNoPermission) {
|
||||||
@ -33,6 +39,7 @@ public class PrefixConfig {
|
|||||||
this.content = content;
|
this.content = content;
|
||||||
this.weight = weight;
|
this.weight = weight;
|
||||||
this.permission = permission;
|
this.permission = permission;
|
||||||
|
this.actions = actions;
|
||||||
this.itemHasPermission = itemHasPermission;
|
this.itemHasPermission = itemHasPermission;
|
||||||
this.itemNoPermission = itemNoPermission;
|
this.itemNoPermission = itemNoPermission;
|
||||||
this.itemWhenUsing = itemWhenUsing;
|
this.itemWhenUsing = itemWhenUsing;
|
||||||
@ -83,6 +90,10 @@ public class PrefixConfig {
|
|||||||
return getPermission() == null;
|
return getPermission() == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void executeActions(@NotNull Player player) {
|
||||||
|
this.actions.forEach(action -> action.executeAction(player));
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isVisible(Player player) {
|
public boolean isVisible(Player player) {
|
||||||
return this.itemWhenUsing != null || checkPermission(player);
|
return this.itemWhenUsing != null || checkPermission(player);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package cc.carm.plugin.userprefix.manager;
|
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.data.ItemConfig;
|
||||||
import cc.carm.lib.mineconfiguration.bukkit.source.CraftSectionWrapper;
|
import cc.carm.lib.mineconfiguration.bukkit.source.CraftSectionWrapper;
|
||||||
import cc.carm.plugin.userprefix.Main;
|
import cc.carm.plugin.userprefix.Main;
|
||||||
@ -57,7 +58,7 @@ public class PrefixManager {
|
|||||||
if (files.size() > 0) {
|
if (files.size() > 0) {
|
||||||
for (File file : files) {
|
for (File file : files) {
|
||||||
try {
|
try {
|
||||||
PrefixConfig prefix = adPrefix(file);
|
PrefixConfig prefix = addPrefix(file);
|
||||||
Main.debugging("完成前缀加载 " + prefix.getIdentifier() + " : " + prefix.getName());
|
Main.debugging("完成前缀加载 " + prefix.getIdentifier() + " : " + prefix.getName());
|
||||||
loaded.put(prefix.getIdentifier(), prefix);
|
loaded.put(prefix.getIdentifier(), prefix);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
@ -78,6 +79,7 @@ public class PrefixManager {
|
|||||||
PluginConfig.DEFAULT_PREFIX.CONTENT.getNotNull(),
|
PluginConfig.DEFAULT_PREFIX.CONTENT.getNotNull(),
|
||||||
PluginConfig.DEFAULT_PREFIX.WEIGHT.getNotNull(),
|
PluginConfig.DEFAULT_PREFIX.WEIGHT.getNotNull(),
|
||||||
null,
|
null,
|
||||||
|
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
|
||||||
@ -122,10 +124,11 @@ public class PrefixManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @NotNull PrefixConfig adPrefix(@NotNull File file) throws Exception {
|
public static @NotNull PrefixConfig addPrefix(@NotNull File file) throws Exception {
|
||||||
FileConfiguration configuration = YamlConfiguration.loadConfiguration(file);
|
FileConfiguration configuration = YamlConfiguration.loadConfiguration(file);
|
||||||
String identifier = configuration.getString("identifier");
|
String identifier = configuration.getString("identifier");
|
||||||
if (identifier == null) throw new Exception("配置文件 " + file.getAbsolutePath() + " 中没有配置前缀的唯一标识。");
|
if (identifier == null)
|
||||||
|
throw new Exception("配置文件 " + file.getAbsolutePath() + " 中没有配置前缀的唯一标识。");
|
||||||
|
|
||||||
String name = configuration.getString("name");
|
String name = configuration.getString("name");
|
||||||
if (name == null) throw new Exception("配置文件 " + file.getAbsolutePath() + " 中没有配置前缀的显示名称。");
|
if (name == null) throw new Exception("配置文件 " + file.getAbsolutePath() + " 中没有配置前缀的显示名称。");
|
||||||
@ -135,6 +138,7 @@ public class PrefixManager {
|
|||||||
configuration.getString("content", "&r"),
|
configuration.getString("content", "&r"),
|
||||||
configuration.getInt("weight", 1),
|
configuration.getInt("weight", 1),
|
||||||
configuration.getString("permission"),
|
configuration.getString("permission"),
|
||||||
|
readActions(configuration.getStringList("actions")),
|
||||||
readItem(
|
readItem(
|
||||||
configuration.getConfigurationSection("item.has-perm"),
|
configuration.getConfigurationSection("item.has-perm"),
|
||||||
new ItemConfig(Material.STONE, name, Arrays.asList(" ", "§a➥ 点击切换到该前缀"))
|
new ItemConfig(Material.STONE, name, Arrays.asList(" ", "§a➥ 点击切换到该前缀"))
|
||||||
@ -151,5 +155,9 @@ public class PrefixManager {
|
|||||||
else return ItemConfig.deserialize(CraftSectionWrapper.of(section));
|
else return ItemConfig.deserialize(CraftSectionWrapper.of(section));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static List<GUIActionConfiguration> readActions(@NotNull List<String> strings) {
|
||||||
|
return strings.stream().map(GUIActionConfiguration::deserialize).filter(Objects::nonNull).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -141,9 +141,7 @@ public class UserManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
UserPrefixChangeEvent.call(player, currentPrefix, newPrefix, (after) -> {
|
UserPrefixChangeEvent.call(player, currentPrefix, newPrefix, (after) -> {
|
||||||
if (after != null) {
|
if (after != null) setPrefix(player, after, updateView);
|
||||||
setPrefix(player, after, updateView);
|
|
||||||
}
|
|
||||||
checkingPlayers.remove(player.getUniqueId());
|
checkingPlayers.remove(player.getUniqueId());
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -183,6 +181,7 @@ public class UserManager {
|
|||||||
*/
|
*/
|
||||||
public void setPrefix(Player player, PrefixConfig prefix, boolean updateView) {
|
public void setPrefix(Player player, PrefixConfig prefix, boolean updateView) {
|
||||||
setPrefixData(player, prefix.getIdentifier());
|
setPrefixData(player, prefix.getIdentifier());
|
||||||
|
prefix.executeActions(player);
|
||||||
if (updateView) updatePrefixView(player, false);
|
if (updateView) updatePrefixView(player, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import cc.carm.plugin.userprefix.UserPrefixAPI;
|
|||||||
import cc.carm.plugin.userprefix.conf.PluginConfig;
|
import cc.carm.plugin.userprefix.conf.PluginConfig;
|
||||||
import cc.carm.plugin.userprefix.conf.PluginMessages;
|
import cc.carm.plugin.userprefix.conf.PluginMessages;
|
||||||
import cc.carm.plugin.userprefix.conf.prefix.PrefixConfig;
|
import cc.carm.plugin.userprefix.conf.prefix.PrefixConfig;
|
||||||
|
import cc.carm.plugin.userprefix.event.UserPrefixChangeEvent;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.ClickType;
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
@ -51,15 +52,22 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
|||||||
addItem(new GUIItem(prefix.getItemWhenUsing(player) != null ? prefix.getItemWhenUsing(player) : prefix.getItemHasPermission(player)));
|
addItem(new GUIItem(prefix.getItemWhenUsing(player) != null ? prefix.getItemWhenUsing(player) : prefix.getItemHasPermission(player)));
|
||||||
} else if (prefix.checkPermission(player)) {
|
} else if (prefix.checkPermission(player)) {
|
||||||
addItem(new GUIItem(prefix.getItemHasPermission(player)) {
|
addItem(new GUIItem(prefix.getItemHasPermission(player)) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickType type) {
|
public void onClick(Player clicker, ClickType type) {
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
//再次检查,防止打开GUI后、选择前的时间段内权限消失
|
//再次检查,防止打开GUI后、选择前的时间段内权限消失
|
||||||
if (prefix.checkPermission(player)) {
|
if (prefix.checkPermission(player)) {
|
||||||
UserPrefixAPI.getUserManager().setPrefix(player, prefix, true);
|
|
||||||
|
|
||||||
|
// 发送消息与提示
|
||||||
PluginConfig.SOUNDS.PREFIX_CHANGE.playTo(player);
|
PluginConfig.SOUNDS.PREFIX_CHANGE.playTo(player);
|
||||||
PluginMessages.SELECTED.send(player, prefix.getName());
|
PluginMessages.SELECTED.send(player, prefix.getName());
|
||||||
|
|
||||||
|
UserPrefixChangeEvent.call(player, usingPrefix, prefix, config -> {
|
||||||
|
if (config == null) return;
|
||||||
|
UserPrefixAPI.getUserManager().setPrefix(player, config, true);
|
||||||
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
PluginConfig.SOUNDS.GUI_CLICK.playTo(player);
|
PluginConfig.SOUNDS.GUI_CLICK.playTo(player);
|
||||||
}
|
}
|
||||||
@ -68,7 +76,7 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
|||||||
} else {
|
} else {
|
||||||
addItem(new GUIItem(prefix.getItemNoPermission(player)) {
|
addItem(new GUIItem(prefix.getItemNoPermission(player)) {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickType type) {
|
public void onClick(Player clicker, ClickType type) {
|
||||||
PluginConfig.SOUNDS.GUI_CLICK.playTo(player);
|
PluginConfig.SOUNDS.GUI_CLICK.playTo(player);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -22,6 +22,11 @@ weight: 1
|
|||||||
# (because it is impossible to display items without permission at all)
|
# (because it is impossible to display items without permission at all)
|
||||||
permission: "yc.vip"
|
permission: "yc.vip"
|
||||||
|
|
||||||
|
# Actions when select [Unnecessary]
|
||||||
|
# Please check https://github.com/CarmJos/UserPrefix/tree/master/.documentation/ACTIONS.md
|
||||||
|
actions:
|
||||||
|
- "[CONSOLE] say %player_name% selected PRO !"
|
||||||
|
|
||||||
item:
|
item:
|
||||||
# itemHasPermission [Necessary]
|
# itemHasPermission [Necessary]
|
||||||
# This Item will be displayed when player has permission
|
# This Item will be displayed when player has permission
|
||||||
|
@ -22,6 +22,12 @@ weight: 1
|
|||||||
# 如果没有就是人人都能用,也代表不用配置“itemNoPermission”了(因为压根不可能显示没权限时候的物品)
|
# 如果没有就是人人都能用,也代表不用配置“itemNoPermission”了(因为压根不可能显示没权限时候的物品)
|
||||||
permission: "yc.pro"
|
permission: "yc.pro"
|
||||||
|
|
||||||
|
# 选择这个前缀时执行的操作 [非必须]
|
||||||
|
# 用于在玩家选择/取消选择前缀时执行相应动作,以便于实现一些特殊的功能。
|
||||||
|
# 具体操作类型详见: https://github.com/CarmJos/UserPrefix/tree/master/.documentation/ACTIONS.md
|
||||||
|
actions:
|
||||||
|
- "[CONSOLE] say %player_name% 选择了 Pro会员前缀 !"
|
||||||
|
|
||||||
# 该前缀的GUI物品配置
|
# 该前缀的GUI物品配置
|
||||||
item:
|
item:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user