mirror of
https://github.com/CarmJos/UserPrefix.git
synced 2024-09-19 20:15:47 +00:00
1. 修复closeAll方法中,未移除玩家缓存的bug。
2. 当玩家权限更新时,将关闭玩家的GUI,令其自行打开刷新所有前缀。 3. 允许配置GUI的标题。
This commit is contained in:
parent
0d20860166
commit
7ea3934db9
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>cc.carm.plugin</groupId>
|
<groupId>cc.carm.plugin</groupId>
|
||||||
<artifactId>UserPrefix</artifactId>
|
<artifactId>UserPrefix</artifactId>
|
||||||
<version>1.2.3</version>
|
<version>1.2.4</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>8</maven.compiler.source>
|
<maven.compiler.source>8</maven.compiler.source>
|
||||||
|
@ -24,7 +24,7 @@ public class UserPrefixAdminCommand implements CommandExecutor {
|
|||||||
MessageUtil.send(sender, "&3&l用户前缀系统 &f前缀列表");
|
MessageUtil.send(sender, "&3&l用户前缀系统 &f前缀列表");
|
||||||
for (ConfiguredPrefix value : PrefixManager.getPrefixes().values()) {
|
for (ConfiguredPrefix value : PrefixManager.getPrefixes().values()) {
|
||||||
MessageUtil.send(sender, "&8#" + value.getWeight() + " &f" + value.getIdentifier());
|
MessageUtil.send(sender, "&8#" + value.getWeight() + " &f" + value.getIdentifier());
|
||||||
MessageUtil.send(sender, "&8- &7显示名 &r" + value.getName() + " &7权限&r " + value.getPermission());
|
MessageUtil.send(sender, "&8- &7显示名 &r" + value.getName() + (value.isPublic() ? "" : " &7权限&r " + value.getPermission()));
|
||||||
MessageUtil.send(sender, "&8- &7内容示例&r " + value.getContent() + sender.getName());
|
MessageUtil.send(sender, "&8- &7内容示例&r " + value.getContent() + sender.getName());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -15,6 +15,12 @@ public class PrefixConfig {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class GUI {
|
||||||
|
|
||||||
|
public static ConfigValue<String> TITLE = new ConfigValue<>("GUI.title", String.class, "&f&l我的前缀 &8| 列表");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public static class Messages {
|
public static class Messages {
|
||||||
|
|
||||||
public static ConfigValueList<String> SELECTED = new ConfigValueList<>("messages.selected", String.class);
|
public static ConfigValueList<String> SELECTED = new ConfigValueList<>("messages.selected", String.class);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cc.carm.plugin.userprefix.listener.processor;
|
package cc.carm.plugin.userprefix.listener.processor;
|
||||||
|
|
||||||
import cc.carm.plugin.userprefix.manager.UserManager;
|
import cc.carm.plugin.userprefix.manager.UserManager;
|
||||||
|
import cc.carm.plugin.userprefix.ui.PrefixSelectGUI;
|
||||||
import net.luckperms.api.event.user.UserDataRecalculateEvent;
|
import net.luckperms.api.event.user.UserDataRecalculateEvent;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -11,6 +12,11 @@ public class UserNodeUpdateProcessor {
|
|||||||
Player player = Bukkit.getPlayer(event.getUser().getUniqueId());
|
Player player = Bukkit.getPlayer(event.getUser().getUniqueId());
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
UserManager.checkPrefix(player, true);
|
UserManager.checkPrefix(player, true);
|
||||||
|
if (PrefixSelectGUI.openingUsers.contains(player)) {
|
||||||
|
// 玩家权限更新,关闭其GUI,以令其重新打开刷新自己的前缀。
|
||||||
|
player.closeInventory();
|
||||||
|
PrefixSelectGUI.removeOpening(player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -205,7 +205,7 @@ public class UserManager {
|
|||||||
* @return 若前缀标识不存在,则返回false;若前缀为默认前缀,或该前缀无权限,或玩家有该前缀的权限,则返回true。
|
* @return 若前缀标识不存在,则返回false;若前缀为默认前缀,或该前缀无权限,或玩家有该前缀的权限,则返回true。
|
||||||
*/
|
*/
|
||||||
public static boolean isPrefixUsable(Player player, ConfiguredPrefix configuredPrefix) {
|
public static boolean isPrefixUsable(Player player, ConfiguredPrefix configuredPrefix) {
|
||||||
return configuredPrefix.getPermission() == null //为null的话说明无需权限了
|
return configuredPrefix.isPublic()
|
||||||
|| ServiceManager.hasPermission(ServiceManager.getUser(player), configuredPrefix.getPermission());
|
|| ServiceManager.hasPermission(ServiceManager.getUser(player), configuredPrefix.getPermission());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,8 @@ package cc.carm.plugin.userprefix.model;
|
|||||||
|
|
||||||
import cc.carm.plugin.userprefix.util.ColorParser;
|
import cc.carm.plugin.userprefix.util.ColorParser;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class ConfiguredPrefix {
|
public class ConfiguredPrefix {
|
||||||
|
|
||||||
@ -18,7 +20,13 @@ public class ConfiguredPrefix {
|
|||||||
ItemStack itemNoPermission;
|
ItemStack itemNoPermission;
|
||||||
ItemStack itemWhenUsing;
|
ItemStack itemWhenUsing;
|
||||||
|
|
||||||
public ConfiguredPrefix(String identifier, String name, String content, int weight, String permission, ItemStack itemHasPermission, ItemStack itemNoPermission, ItemStack itemWhenUsing) {
|
public ConfiguredPrefix(@NotNull String identifier,
|
||||||
|
@NotNull String name,
|
||||||
|
@NotNull String content,
|
||||||
|
int weight, @Nullable String permission,
|
||||||
|
@NotNull ItemStack itemHasPermission,
|
||||||
|
@Nullable ItemStack itemNoPermission,
|
||||||
|
@Nullable ItemStack itemWhenUsing) {
|
||||||
this.identifier = identifier;
|
this.identifier = identifier;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.content = content;
|
this.content = content;
|
||||||
@ -29,14 +37,17 @@ public class ConfiguredPrefix {
|
|||||||
this.itemWhenUsing = itemWhenUsing;
|
this.itemWhenUsing = itemWhenUsing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
public String getIdentifier() {
|
public String getIdentifier() {
|
||||||
return identifier;
|
return identifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
public String getContent() {
|
public String getContent() {
|
||||||
return ColorParser.parse(content);
|
return ColorParser.parse(content);
|
||||||
}
|
}
|
||||||
@ -45,22 +56,30 @@ public class ConfiguredPrefix {
|
|||||||
return weight;
|
return weight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
public String getPermission() {
|
public String getPermission() {
|
||||||
return permission;
|
return permission;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
public ItemStack getItemHasPermission() {
|
public ItemStack getItemHasPermission() {
|
||||||
return itemHasPermission;
|
return itemHasPermission;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
public ItemStack getItemNoPermission() {
|
public ItemStack getItemNoPermission() {
|
||||||
return itemNoPermission;
|
return itemNoPermission;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
public ItemStack getItemWhenUsing() {
|
public ItemStack getItemWhenUsing() {
|
||||||
return itemWhenUsing;
|
return itemWhenUsing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isPublic() {
|
||||||
|
return getPermission() == null;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isVisibleNoPermission() {
|
public boolean isVisibleNoPermission() {
|
||||||
return this.itemNoPermission != null;
|
return this.itemNoPermission != null;
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package cc.carm.plugin.userprefix.ui;
|
package cc.carm.plugin.userprefix.ui;
|
||||||
|
|
||||||
import cc.carm.plugin.userprefix.configuration.PrefixConfig;
|
import cc.carm.plugin.userprefix.configuration.PrefixConfig;
|
||||||
import cc.carm.plugin.userprefix.util.MessageUtil;
|
|
||||||
import cc.carm.plugin.userprefix.util.gui.GUIType;
|
|
||||||
import cc.carm.plugin.userprefix.manager.PrefixManager;
|
import cc.carm.plugin.userprefix.manager.PrefixManager;
|
||||||
import cc.carm.plugin.userprefix.manager.UserManager;
|
import cc.carm.plugin.userprefix.manager.UserManager;
|
||||||
import cc.carm.plugin.userprefix.model.ConfiguredPrefix;
|
import cc.carm.plugin.userprefix.model.ConfiguredPrefix;
|
||||||
|
import cc.carm.plugin.userprefix.util.MessageUtil;
|
||||||
import cc.carm.plugin.userprefix.util.gui.AutoPagedGUI;
|
import cc.carm.plugin.userprefix.util.gui.AutoPagedGUI;
|
||||||
import cc.carm.plugin.userprefix.util.gui.GUIItem;
|
import cc.carm.plugin.userprefix.util.gui.GUIItem;
|
||||||
|
import cc.carm.plugin.userprefix.util.gui.GUIType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.ClickType;
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
|||||||
Player player;
|
Player player;
|
||||||
|
|
||||||
public PrefixSelectGUI(Player player) {
|
public PrefixSelectGUI(Player player) {
|
||||||
super(GUIType.SIXBYNINE, "&f&l我的前缀 &8| 列表", 10, 43);
|
super(GUIType.SIXBYNINE, PrefixConfig.GUI.TITLE.get(), 10, 43);
|
||||||
this.player = player;
|
this.player = player;
|
||||||
|
|
||||||
setPreviousPageSlot(18);
|
setPreviousPageSlot(18);
|
||||||
@ -38,7 +38,7 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
|||||||
public void loadItems() {
|
public void loadItems() {
|
||||||
List<ConfiguredPrefix> prefixList = new ArrayList<>();
|
List<ConfiguredPrefix> prefixList = new ArrayList<>();
|
||||||
prefixList.add(PrefixManager.getDefaultPrefix());
|
prefixList.add(PrefixManager.getDefaultPrefix());
|
||||||
prefixList.addAll(PrefixManager.getVisiblePrefix());
|
prefixList.addAll(PrefixManager.getVisiblePrefix()); //只需要读取看得见的
|
||||||
|
|
||||||
ConfiguredPrefix usingPrefix = UserManager.getPrefix(getPlayer());
|
ConfiguredPrefix usingPrefix = UserManager.getPrefix(getPlayer());
|
||||||
|
|
||||||
@ -49,7 +49,8 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
|||||||
addItem(new GUIItem(prefix.getItemHasPermission()) {
|
addItem(new GUIItem(prefix.getItemHasPermission()) {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickType type) {
|
public void onClick(ClickType type) {
|
||||||
if (UserManager.isPrefixUsable(player, prefix)) { //再次检查,防止打开GUI后、选择前的时间段内权限消失
|
//再次检查,防止打开GUI后、选择前的时间段内权限消失
|
||||||
|
if (UserManager.isPrefixUsable(player, prefix)) {
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
UserManager.setPrefix(player, prefix, true);
|
UserManager.setPrefix(player, prefix, true);
|
||||||
|
|
||||||
@ -71,7 +72,7 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClose() {
|
public void onClose() {
|
||||||
openingUsers.remove(player);
|
removeOpening(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void removeOpening(Player player) {
|
public static void removeOpening(Player player) {
|
||||||
@ -82,6 +83,7 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
|||||||
for (Player player : new HashSet<>(openingUsers)) {
|
for (Player player : new HashSet<>(openingUsers)) {
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
}
|
}
|
||||||
|
openingUsers.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void open(Player player) {
|
public static void open(Player player) {
|
||||||
|
@ -6,6 +6,9 @@ functions:
|
|||||||
OnNamePrefix: true # 是否给头顶上添加前缀,该方法用到了头顶的那个计分板,如有冲突请关掉哦~
|
OnNamePrefix: true # 是否给头顶上添加前缀,该方法用到了头顶的那个计分板,如有冲突请关掉哦~
|
||||||
autoUsePrefix: true # 自动前缀显示 当玩家没有自己选择一个前缀的时候,会自动使用所拥有的的前缀中权重最高的那一个
|
autoUsePrefix: true # 自动前缀显示 当玩家没有自己选择一个前缀的时候,会自动使用所拥有的的前缀中权重最高的那一个
|
||||||
|
|
||||||
|
GUI:
|
||||||
|
title: "&f&l我的前缀 &8| 列表"
|
||||||
|
|
||||||
messages:
|
messages:
|
||||||
selected:
|
selected:
|
||||||
- "&7您选择了 &f%(name) &7作为当前显示的前缀。"
|
- "&7您选择了 &f%(name) &7作为当前显示的前缀。"
|
||||||
|
Loading…
Reference in New Issue
Block a user