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>
|
||||
<artifactId>UserPrefix</artifactId>
|
||||
<version>1.2.3</version>
|
||||
<version>1.2.4</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
|
@ -24,7 +24,7 @@ public class UserPrefixAdminCommand implements CommandExecutor {
|
||||
MessageUtil.send(sender, "&3&l用户前缀系统 &f前缀列表");
|
||||
for (ConfiguredPrefix value : PrefixManager.getPrefixes().values()) {
|
||||
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());
|
||||
}
|
||||
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 ConfigValueList<String> SELECTED = new ConfigValueList<>("messages.selected", String.class);
|
||||
|
@ -1,6 +1,7 @@
|
||||
package cc.carm.plugin.userprefix.listener.processor;
|
||||
|
||||
import cc.carm.plugin.userprefix.manager.UserManager;
|
||||
import cc.carm.plugin.userprefix.ui.PrefixSelectGUI;
|
||||
import net.luckperms.api.event.user.UserDataRecalculateEvent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -11,6 +12,11 @@ public class UserNodeUpdateProcessor {
|
||||
Player player = Bukkit.getPlayer(event.getUser().getUniqueId());
|
||||
if (player == null) return;
|
||||
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。
|
||||
*/
|
||||
public static boolean isPrefixUsable(Player player, ConfiguredPrefix configuredPrefix) {
|
||||
return configuredPrefix.getPermission() == null //为null的话说明无需权限了
|
||||
return configuredPrefix.isPublic()
|
||||
|| 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 org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class ConfiguredPrefix {
|
||||
|
||||
@ -18,7 +20,13 @@ public class ConfiguredPrefix {
|
||||
ItemStack itemNoPermission;
|
||||
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.name = name;
|
||||
this.content = content;
|
||||
@ -29,14 +37,17 @@ public class ConfiguredPrefix {
|
||||
this.itemWhenUsing = itemWhenUsing;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getIdentifier() {
|
||||
return identifier;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getContent() {
|
||||
return ColorParser.parse(content);
|
||||
}
|
||||
@ -45,22 +56,30 @@ public class ConfiguredPrefix {
|
||||
return weight;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getPermission() {
|
||||
return permission;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public ItemStack getItemHasPermission() {
|
||||
return itemHasPermission;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ItemStack getItemNoPermission() {
|
||||
return itemNoPermission;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ItemStack getItemWhenUsing() {
|
||||
return itemWhenUsing;
|
||||
}
|
||||
|
||||
public boolean isPublic() {
|
||||
return getPermission() == null;
|
||||
}
|
||||
|
||||
public boolean isVisibleNoPermission() {
|
||||
return this.itemNoPermission != null;
|
||||
}
|
||||
|
@ -1,13 +1,13 @@
|
||||
package cc.carm.plugin.userprefix.ui;
|
||||
|
||||
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.UserManager;
|
||||
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.GUIItem;
|
||||
import cc.carm.plugin.userprefix.util.gui.GUIType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
|
||||
@ -22,7 +22,7 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
||||
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;
|
||||
|
||||
setPreviousPageSlot(18);
|
||||
@ -38,7 +38,7 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
||||
public void loadItems() {
|
||||
List<ConfiguredPrefix> prefixList = new ArrayList<>();
|
||||
prefixList.add(PrefixManager.getDefaultPrefix());
|
||||
prefixList.addAll(PrefixManager.getVisiblePrefix());
|
||||
prefixList.addAll(PrefixManager.getVisiblePrefix()); //只需要读取看得见的
|
||||
|
||||
ConfiguredPrefix usingPrefix = UserManager.getPrefix(getPlayer());
|
||||
|
||||
@ -49,7 +49,8 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
||||
addItem(new GUIItem(prefix.getItemHasPermission()) {
|
||||
@Override
|
||||
public void onClick(ClickType type) {
|
||||
if (UserManager.isPrefixUsable(player, prefix)) { //再次检查,防止打开GUI后、选择前的时间段内权限消失
|
||||
//再次检查,防止打开GUI后、选择前的时间段内权限消失
|
||||
if (UserManager.isPrefixUsable(player, prefix)) {
|
||||
player.closeInventory();
|
||||
UserManager.setPrefix(player, prefix, true);
|
||||
|
||||
@ -71,7 +72,7 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
||||
|
||||
@Override
|
||||
public void onClose() {
|
||||
openingUsers.remove(player);
|
||||
removeOpening(player);
|
||||
}
|
||||
|
||||
public static void removeOpening(Player player) {
|
||||
@ -82,6 +83,7 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
||||
for (Player player : new HashSet<>(openingUsers)) {
|
||||
player.closeInventory();
|
||||
}
|
||||
openingUsers.clear();
|
||||
}
|
||||
|
||||
public static void open(Player player) {
|
||||
|
@ -6,6 +6,9 @@ functions:
|
||||
OnNamePrefix: true # 是否给头顶上添加前缀,该方法用到了头顶的那个计分板,如有冲突请关掉哦~
|
||||
autoUsePrefix: true # 自动前缀显示 当玩家没有自己选择一个前缀的时候,会自动使用所拥有的的前缀中权重最高的那一个
|
||||
|
||||
GUI:
|
||||
title: "&f&l我的前缀 &8| 列表"
|
||||
|
||||
messages:
|
||||
selected:
|
||||
- "&7您选择了 &f%(name) &7作为当前显示的前缀。"
|
||||
|
Loading…
Reference in New Issue
Block a user