mirror of
https://github.com/CarmJos/UserPrefix.git
synced 2026-06-05 09:01:39 +08:00
Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 675bbe4cf2 | |||
| 3b8fd6febf | |||
| d8282b9641 | |||
| ad616e5470 | |||
| f741723204 | |||
| 54f526300a | |||
| 5a0e5b8e96 | |||
| c89a9c6ccc | |||
| e321a1ec66 | |||
| 9054161135 | |||
| 53281b80e3 | |||
| 12489fe1a8 | |||
| 7d62f68662 | |||
| 4cc50c21d5 | |||
| 0d25490d0f | |||
| a805aba42e | |||
| 2a0d6b8582 |
@@ -37,7 +37,8 @@ jobs:
|
||||
cp -vrf asset/*.jar artifacts
|
||||
|
||||
- name: "Upload artifact"
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Artifact
|
||||
path: artifacts
|
||||
path: artifacts
|
||||
include-hidden-files: true
|
||||
@@ -13,13 +13,13 @@
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||
|
||||
<deps.easyplugin.version>1.5.2</deps.easyplugin.version>
|
||||
<deps.mineconfig.version>2.4.0</deps.mineconfig.version>
|
||||
<deps.easyplugin.version>1.5.8</deps.easyplugin.version>
|
||||
<deps.mineconfig.version>2.8.6</deps.mineconfig.version>
|
||||
</properties>
|
||||
|
||||
<groupId>cc.carm.plugin</groupId>
|
||||
<artifactId>userprefix</artifactId>
|
||||
<version>3.2.0</version>
|
||||
<version>3.2.5</version>
|
||||
|
||||
<name>UserPrefix</name>
|
||||
<description>轻便、高效、实时的用户前缀系统。</description>
|
||||
@@ -81,6 +81,12 @@
|
||||
<url>https://repo.lucko.me/</url>
|
||||
</repository>
|
||||
|
||||
<repository>
|
||||
<id>minecraft-libraries</id>
|
||||
<name>Minecraft Libraries</name>
|
||||
<url>https://libraries.minecraft.net/</url>
|
||||
</repository>
|
||||
|
||||
<repository>
|
||||
<id>EasyPlugin</id>
|
||||
<url>https://raw.githubusercontent.com/CarmJos/EasyPlugin/repo/</url>
|
||||
@@ -152,6 +158,31 @@
|
||||
<version>${deps.mineconfig.version}</version>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>com.cryptomorin.xseries</groupId>
|
||||
<artifactId>XSeries</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.github.cryptomorin</groupId>
|
||||
<artifactId>XSeries</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.cryptomorin</groupId>
|
||||
<artifactId>XSeries</artifactId>
|
||||
<version>v11.2.2</version>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.mojang</groupId>
|
||||
<artifactId>authlib</artifactId>
|
||||
<version>6.0.54</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -281,6 +312,10 @@
|
||||
<pattern>org.json</pattern>
|
||||
<shadedPattern>${project.package}.lib.json</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>com.cryptomorin.xseries</pattern>
|
||||
<shadedPattern>${project.package}.lib.xseries</shadedPattern>
|
||||
</relocation>
|
||||
</relocations>
|
||||
<filters>
|
||||
<filter>
|
||||
|
||||
@@ -61,8 +61,8 @@ public class Main extends EasyPlugin {
|
||||
|
||||
log("初始化GUI管理器...");
|
||||
GUI.initialize(this);
|
||||
AutoPagedGUI.defaultNextPage = (PluginConfig.GUI.BOTTOMS.NEXT_PAGE::getItem);
|
||||
AutoPagedGUI.defaultPreviousPage = (PluginConfig.GUI.BOTTOMS.PREV_PAGE::getItem);
|
||||
AutoPagedGUI.defaultNextPage = (PluginConfig.GUI.BOTTOMS.NEXT_PAGE::get);
|
||||
AutoPagedGUI.defaultPreviousPage = (PluginConfig.GUI.BOTTOMS.PREV_PAGE::get);
|
||||
|
||||
if (MessageUtils.hasPlaceholderAPI()) {
|
||||
log("注册变量...");
|
||||
|
||||
@@ -6,8 +6,8 @@ import cc.carm.lib.configuration.core.annotation.HeaderComment;
|
||||
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.mineconfiguration.bukkit.value.ConfiguredItem;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredSound;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.value.item.ConfiguredItem;
|
||||
import cc.carm.plugin.userprefix.conf.gui.GUIItems;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
@@ -116,7 +116,7 @@ public class PluginConfig extends ConfigurationRoot {
|
||||
|
||||
@HeaderComment("GUI中的其他按钮物品 (若与现有物品位置冲突,将被覆盖)")
|
||||
public static final ConfigValue<GUIItems> ITEMS = ConfiguredValue
|
||||
.builder(GUIItems.class).fromSection()
|
||||
.builderOf(GUIItems.class).fromSection()
|
||||
.defaults(GUIItems::defaults)
|
||||
.serializeValue(GUIItems::serialize)
|
||||
.parseValue((v, d) -> GUIItems.parse(v))
|
||||
@@ -147,7 +147,7 @@ public class PluginConfig extends ConfigurationRoot {
|
||||
public static final ConfigValue<String> CONTENT = ConfiguredValue.of(String.class, "&r");
|
||||
|
||||
@HeaderComment({"选择默认前缀时执行的操作"})
|
||||
public static final ConfiguredList<String> ACTIONS = ConfiguredList.builder(String.class).fromString()
|
||||
public static final ConfiguredList<String> ACTIONS = ConfiguredList.builderOf(String.class).fromString()
|
||||
.defaults("[CONSOLE] " + "say %player_name% 选择了默认前缀")
|
||||
.build();
|
||||
|
||||
|
||||
@@ -8,11 +8,11 @@ public class PluginMessages extends ConfigurationRoot {
|
||||
|
||||
public static final class COMMAND_USAGE extends ConfigurationRoot {
|
||||
|
||||
public static ConfiguredMessageList<String> CONSOLE = ConfiguredMessageList.asStrings().defaults(
|
||||
public static final ConfiguredMessageList<String> CONSOLE = ConfiguredMessageList.asStrings().defaults(
|
||||
"&f请输入 &b/prefix <玩家ID> &f为指定玩家打开前缀GUI。"
|
||||
).build();
|
||||
|
||||
public static ConfiguredMessageList<String> ADMIN = ConfiguredMessageList.asStrings().defaults(
|
||||
public static final ConfiguredMessageList<String> ADMIN = ConfiguredMessageList.asStrings().defaults(
|
||||
"&3&l用户前缀系统 &f帮助",
|
||||
"&8# &f/upa list",
|
||||
"&8- &7查看当前前缀列表。",
|
||||
@@ -23,52 +23,52 @@ public class PluginMessages extends ConfigurationRoot {
|
||||
"&8- &7重载前缀配置。"
|
||||
).build();
|
||||
|
||||
public static ConfiguredMessageList<String> NO_PERM = ConfiguredMessageList.asStrings()
|
||||
public static final ConfiguredMessageList<String> NO_PERM = ConfiguredMessageList.asStrings()
|
||||
.defaults("&c&l抱歉!&f但您没有权限使用该指令。")
|
||||
.build();
|
||||
|
||||
}
|
||||
|
||||
public static ConfiguredMessageList<String> NOT_ONLINE = ConfiguredMessageList.asStrings()
|
||||
public static final ConfiguredMessageList<String> NOT_ONLINE = ConfiguredMessageList.asStrings()
|
||||
.defaults("&7玩家 &b%(player) &7并不在线。")
|
||||
.params("player").build();
|
||||
|
||||
public static ConfiguredMessageList<String> SELECTED = ConfiguredMessageList.asStrings()
|
||||
public static final ConfiguredMessageList<String> SELECTED = ConfiguredMessageList.asStrings()
|
||||
.defaults("&7您选择了 &f%(name) &7作为当前显示的前缀。")
|
||||
.params("name").build();
|
||||
|
||||
public static ConfiguredMessageList<String> EXPIRED = ConfiguredMessageList.asStrings()
|
||||
public static final ConfiguredMessageList<String> EXPIRED = ConfiguredMessageList.asStrings()
|
||||
.defaults(
|
||||
"&7您先前使用的前缀 &f%(oldName) &7已到期。",
|
||||
"&7现在已为您重新调整为 &f%(newName) &7。"
|
||||
).params("oldName", "newName").build();
|
||||
|
||||
public static ConfiguredMessageList<String> REMOVED = ConfiguredMessageList.asStrings()
|
||||
public static final ConfiguredMessageList<String> REMOVED = ConfiguredMessageList.asStrings()
|
||||
.defaults("&7您先前使用的前缀已被移除,现在已为您重新调整为 &f%(newName) &7。")
|
||||
.params("newName").build();
|
||||
|
||||
public static final class RELOAD extends ConfigurationRoot {
|
||||
|
||||
public static ConfiguredMessageList<String> SUCCESS = ConfiguredMessageList.asStrings()
|
||||
public static final ConfiguredMessageList<String> SUCCESS = ConfiguredMessageList.asStrings()
|
||||
.defaults("&a&l重载完成!&7耗时 &f%(time)ms&7,共加载了 &b%(count) &7个前缀。")
|
||||
.params("time", "count").build();
|
||||
|
||||
public static ConfiguredMessageList<String> FAILED = ConfiguredMessageList.asStrings()
|
||||
public static final ConfiguredMessageList<String> FAILED = ConfiguredMessageList.asStrings()
|
||||
.defaults("&c&l重载出错!&7错误提示为 &8“&r%(error)&8”。")
|
||||
.params("error").build();
|
||||
}
|
||||
|
||||
public static final class SET extends ConfigurationRoot {
|
||||
|
||||
public static ConfiguredMessageList<String> SUCCESS = ConfiguredMessageList.asStrings()
|
||||
public static final ConfiguredMessageList<String> SUCCESS = ConfiguredMessageList.asStrings()
|
||||
.defaults("&a&l设置成功!&7成功设定玩家 &b%(player) &f的前缀为 &r%(prefix) &f。")
|
||||
.params("player", "prefix").build();
|
||||
|
||||
public static ConfiguredMessageList<String> PREFIX_NOT_FOUND = ConfiguredMessageList.asStrings()
|
||||
public static final ConfiguredMessageList<String> PREFIX_NOT_FOUND = ConfiguredMessageList.asStrings()
|
||||
.defaults("&c&l无法设置!&7不存在ID为 &b%(prefix) &7的前缀。")
|
||||
.params("prefix").build();
|
||||
|
||||
public static ConfiguredMessageList<String> NO_PERM = ConfiguredMessageList.asStrings()
|
||||
public static final ConfiguredMessageList<String> NO_PERM = ConfiguredMessageList.asStrings()
|
||||
.defaults("&c&l无法设置!&7玩家 &b%(player) &7并没有前缀 &r%(prefix) &7的前缀。")
|
||||
.params("player", "prefix")
|
||||
.build();
|
||||
@@ -79,10 +79,10 @@ public class PluginMessages extends ConfigurationRoot {
|
||||
@HeaderComment("管理员使用的 “/upa list” 指令的格式")
|
||||
public static final class LIST extends ConfigurationRoot {
|
||||
|
||||
public static ConfiguredMessageList<String> HEADER = ConfiguredMessageList.asStrings()
|
||||
public static final ConfiguredMessageList<String> HEADER = ConfiguredMessageList.asStrings()
|
||||
.defaults("&3&l用户前缀系统 &f前缀列表").build();
|
||||
|
||||
public static ConfiguredMessageList<String> VALUE = ConfiguredMessageList.asStrings().defaults(
|
||||
public static final ConfiguredMessageList<String> VALUE = ConfiguredMessageList.asStrings().defaults(
|
||||
"&8#%(weight) &f%(identifier)",
|
||||
"&8- &7显示名 &r%(name) &7权限 &r%(permission)",
|
||||
"&8- &7内容示例&r %(content) %(sender_name)"
|
||||
|
||||
@@ -2,10 +2,11 @@ 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.mineconfiguration.bukkit.data.ItemConfig;
|
||||
import cc.carm.lib.mineconfiguration.bukkit.value.item.PreparedItem;
|
||||
import cc.carm.plugin.userprefix.manager.ServiceManager;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -24,16 +25,16 @@ public class PrefixConfig {
|
||||
|
||||
protected final @NotNull List<GUIActionConfiguration> actions;
|
||||
|
||||
protected final @NotNull ItemConfig itemHasPermission;
|
||||
protected final @Nullable ItemConfig itemNoPermission;
|
||||
protected final @Nullable ItemConfig itemWhenUsing;
|
||||
protected final @NotNull ItemStack itemHasPermission;
|
||||
protected final @Nullable ItemStack itemNoPermission;
|
||||
protected final @Nullable ItemStack itemWhenUsing;
|
||||
|
||||
public PrefixConfig(@NotNull String identifier, @NotNull String name,
|
||||
@NotNull String content, int weight, @Nullable String permission,
|
||||
@NotNull List<GUIActionConfiguration> actions,
|
||||
@NotNull ItemConfig itemHasPermission,
|
||||
@Nullable ItemConfig itemWhenUsing,
|
||||
@Nullable ItemConfig itemNoPermission) {
|
||||
@NotNull ItemStack itemHasPermission,
|
||||
@Nullable ItemStack itemWhenUsing,
|
||||
@Nullable ItemStack itemNoPermission) {
|
||||
this.identifier = identifier;
|
||||
this.name = name;
|
||||
this.content = content;
|
||||
@@ -71,21 +72,25 @@ public class PrefixConfig {
|
||||
|
||||
@NotNull
|
||||
public ItemStack getItemHasPermission(@Nullable Player player) {
|
||||
return this.itemHasPermission.getItemStack(player);
|
||||
return getItem(player, this.itemHasPermission);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ItemStack getItemNoPermission(@Nullable Player player) {
|
||||
if (this.itemNoPermission == null) return null;
|
||||
return this.itemNoPermission.getItemStack(player);
|
||||
return getItem(player, this.itemNoPermission);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ItemStack getItemWhenUsing(@Nullable Player player) {
|
||||
if (this.itemWhenUsing == null) return null;
|
||||
else return this.itemWhenUsing.getItemStack(player);
|
||||
return getItem(player, this.itemWhenUsing);
|
||||
}
|
||||
|
||||
@Contract("_,!null->!null")
|
||||
protected @Nullable ItemStack getItem(@Nullable Player player, @Nullable ItemStack item) {
|
||||
return PreparedItem.of(item).get(player);
|
||||
}
|
||||
|
||||
|
||||
public boolean isPublic() {
|
||||
return getPermission() == null;
|
||||
}
|
||||
|
||||
@@ -42,6 +42,14 @@ public class UserPrefixExpansion extends EasyPlaceholder {
|
||||
public PlaceholderHandler handlePrefix(Function<PrefixConfig, Object> handler) {
|
||||
return handlePlayer((player, args) -> handler.apply(UserPrefixAPI.getUserManager().getPrefix(player)));
|
||||
}
|
||||
|
||||
/**
|
||||
* This is required or else PlaceholderAPI will unregister the Expansion on reload
|
||||
*/
|
||||
@Override
|
||||
public boolean persist() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public PlaceholderHandler handlePlayer(BiFunction<Player, String[], Object> handler) {
|
||||
return (player, args) -> {
|
||||
|
||||
@@ -26,7 +26,7 @@ public class ConfigManager {
|
||||
File configFile = new File(dataFolder, "config.yml");
|
||||
if (!configFile.exists()) {
|
||||
try {
|
||||
JarResourceUtils.copyFolderFromJar("en_US", dataFolder, JarResourceUtils.CopyOption.COPY_IF_NOT_EXIST);
|
||||
JarResourceUtils.copyFolderFromJar("i18n", dataFolder, JarResourceUtils.CopyOption.COPY_IF_NOT_EXIST);
|
||||
JarResourceUtils.copyFolderFromJar("prefixes", dataFolder, JarResourceUtils.CopyOption.COPY_IF_NOT_EXIST);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
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.easyplugin.utils.ItemStackFactory;
|
||||
import cc.carm.plugin.userprefix.Main;
|
||||
import cc.carm.plugin.userprefix.conf.PluginConfig;
|
||||
import cc.carm.plugin.userprefix.conf.prefix.PrefixConfig;
|
||||
import com.cryptomorin.xseries.XItemStack;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -80,8 +82,7 @@ public class PrefixManager {
|
||||
null,
|
||||
readActions(PluginConfig.DEFAULT_PREFIX.ACTIONS.get()),
|
||||
PluginConfig.DEFAULT_PREFIX.ITEM.NOT_USING.getNotNull(),
|
||||
PluginConfig.DEFAULT_PREFIX.ITEM.USING.get(),
|
||||
null
|
||||
PluginConfig.DEFAULT_PREFIX.ITEM.USING.get(), null
|
||||
);
|
||||
Main.debugging(" 完成默认前缀加载 " + defaultPrefix.getName());
|
||||
}
|
||||
@@ -124,34 +125,38 @@ public class PrefixManager {
|
||||
}
|
||||
|
||||
public static @NotNull PrefixConfig addPrefix(@NotNull File file) throws Exception {
|
||||
FileConfiguration configuration = YamlConfiguration.loadConfiguration(file);
|
||||
String identifier = configuration.getString("identifier");
|
||||
FileConfiguration conf = YamlConfiguration.loadConfiguration(file);
|
||||
String identifier = conf.getString("identifier");
|
||||
if (identifier == null)
|
||||
throw new Exception("配置文件 " + file.getAbsolutePath() + " 中没有配置前缀的唯一标识。");
|
||||
|
||||
String name = configuration.getString("name");
|
||||
String name = conf.getString("name");
|
||||
if (name == null) throw new Exception("配置文件 " + file.getAbsolutePath() + " 中没有配置前缀的显示名称。");
|
||||
|
||||
return new PrefixConfig(
|
||||
identifier, name,
|
||||
configuration.getString("content", "&r"),
|
||||
configuration.getInt("weight", 1),
|
||||
configuration.getString("permission"),
|
||||
readActions(configuration.getStringList("actions")),
|
||||
conf.getString("content", "&r"),
|
||||
conf.getInt("weight", 1),
|
||||
conf.getString("permission"),
|
||||
readActions(conf.getStringList("actions")),
|
||||
readItem(
|
||||
configuration.getConfigurationSection("item.has-perm"),
|
||||
new ItemConfig(Material.STONE, name, Arrays.asList(" ", "§a➥ 点击切换到该前缀"))
|
||||
conf.getConfigurationSection("item.has-perm"),
|
||||
new ItemStackFactory(Material.STONE)
|
||||
.setDisplayName(name)
|
||||
.addLore("§a➥ 点击切换到该前缀")
|
||||
.toItemStack()
|
||||
),
|
||||
readItem(configuration.getConfigurationSection("item.using"), null),
|
||||
readItem(configuration.getConfigurationSection("item.no-perm"), null)
|
||||
readItem(conf.getConfigurationSection("item.using"), null),
|
||||
readItem(conf.getConfigurationSection("item.no-perm"), null)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@Contract("_,!null->!null")
|
||||
protected static ItemConfig readItem(@Nullable ConfigurationSection section, @Nullable ItemConfig defaultValue) throws Exception {
|
||||
protected static ItemStack readItem(@Nullable ConfigurationSection section,
|
||||
@Nullable ItemStack defaultValue) throws Exception {
|
||||
if (section == null) return defaultValue;
|
||||
else return ItemConfig.deserialize(section);
|
||||
else return XItemStack.deserialize(section);
|
||||
}
|
||||
|
||||
protected static List<GUIActionConfiguration> readActions(@NotNull List<String> strings) {
|
||||
|
||||
@@ -131,13 +131,13 @@ public class UserManager {
|
||||
UserPrefixExpireEvent.call(player, currentPrefix);
|
||||
|
||||
// 发送消息
|
||||
PluginMessages.EXPIRED.send(player, newPrefix.getName(), currentPrefix.getName());
|
||||
PluginMessages.EXPIRED.send(player, currentPrefix.getName(), newPrefix.getName());
|
||||
|
||||
// 播放声音
|
||||
PluginConfig.SOUNDS.PREFIX_EXPIRED.playTo(player);
|
||||
} else {
|
||||
// 当前前缀为空,则代表是旧的前缀不存在了,
|
||||
PluginMessages.REMOVED.send(player, newPrefix.getName(), currentPrefixData);
|
||||
PluginMessages.REMOVED.send(player, newPrefix.getName());
|
||||
}
|
||||
|
||||
UserPrefixChangeEvent.call(player, currentPrefix, newPrefix, (after) -> {
|
||||
@@ -209,7 +209,7 @@ public class UserManager {
|
||||
*/
|
||||
@NotNull
|
||||
public PrefixConfig getHighestPrefix(Player player) {
|
||||
if (PluginConfig.FUNCTIONS.AUTO_USE.getNotNull()) {
|
||||
if (!PluginConfig.FUNCTIONS.AUTO_USE.getNotNull()) {
|
||||
// 关闭了自动选择,就直接给默认的前缀,让玩家自己去设置吧~
|
||||
return UserPrefixAPI.getDefaultPrefix();
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.bukkit.event.inventory.ClickType;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class PrefixSelectGUI extends AutoPagedGUI {
|
||||
|
||||
@@ -49,7 +50,10 @@ public class PrefixSelectGUI extends AutoPagedGUI {
|
||||
|
||||
for (PrefixConfig prefix : prefixList) {
|
||||
if (prefix.getIdentifier().equals(usingPrefix.getIdentifier())) {
|
||||
addItem(new GUIItem(prefix.getItemWhenUsing(player) != null ? prefix.getItemWhenUsing(player) : prefix.getItemHasPermission(player)));
|
||||
addItem(new GUIItem(Optional
|
||||
.ofNullable(prefix.getItemWhenUsing(player))
|
||||
.orElse(prefix.getItemHasPermission(player))
|
||||
));
|
||||
} else if (prefix.checkPermission(player)) {
|
||||
addItem(new GUIItem(prefix.getItemHasPermission(player)) {
|
||||
|
||||
|
||||
+5
-3
@@ -27,11 +27,13 @@ permission: "yc.vip"
|
||||
actions:
|
||||
- "[CONSOLE] say %player_name% selected PRO !"
|
||||
|
||||
# Display item configuration
|
||||
# More details please see https://github.com/CryptoMorin/XSeries/wiki/XItemStack
|
||||
item:
|
||||
# itemHasPermission [Necessary]
|
||||
# This Item will be displayed when player has permission
|
||||
has-perm:
|
||||
type: DIAMOND
|
||||
material: DIAMOND
|
||||
name: "&b&lVIP Prefix"
|
||||
lore:
|
||||
- ""
|
||||
@@ -41,7 +43,7 @@ item:
|
||||
# This Item will be displayed when the prefix is selected.
|
||||
# If there is no such configuration, it will automatically display "itemHasPermission".
|
||||
using:
|
||||
type: DIAMOND
|
||||
material: DIAMOND
|
||||
name: "&b&lVIP Prefix"
|
||||
enchants:
|
||||
PROTECTION_ENVIRONMENTAL: 1 #Add an enchantment so it looks like it’s selected
|
||||
@@ -53,7 +55,7 @@ item:
|
||||
# If player doesn't have the permission,this item will be displayed.
|
||||
# If this item is not configured, it will not be displayed in the GUI when the player does not have permission to use it.
|
||||
no-perm:
|
||||
type: INK_SACK
|
||||
material: INK_SACK
|
||||
data: 8
|
||||
name: "&b&lVIP &c(Buy it!)"
|
||||
lore:
|
||||
@@ -0,0 +1,58 @@
|
||||
|
||||
# Nombre [Necesario]
|
||||
# Uso en mensajes.
|
||||
name: "&b&lPro&b"
|
||||
|
||||
# Contenido [Necesario]
|
||||
# Uso en Placeholders
|
||||
content: "&b&lPro &b"
|
||||
|
||||
# Weight [Necesario]
|
||||
# utilizado para ordenar en la GUI y TabList
|
||||
# En GUI : el más grande se muestra en la parte posterior
|
||||
# En TabList : el más grande se muestra en la parte superior
|
||||
weight: 1
|
||||
|
||||
# Permisos [Innecesario]
|
||||
# Si no hay permiso para la detección, todo el mundo puede utilizarlo,
|
||||
# lo que significa que no es necesario configurar "itemNoPermission"
|
||||
# (porque es imposible mostrar elementos sin permiso en absoluto)
|
||||
permission: "yc.vip"
|
||||
|
||||
# Acciones al seleccionar [Innecesario]
|
||||
# Por favor, compruebe https://github.com/CarmJos/UserPrefix/tree/master/.documentation/ACTIONS.md
|
||||
actions:
|
||||
- "[CONSOLE] say %player_name% Has seleccionado La etiqueta PRO!"
|
||||
|
||||
item:
|
||||
# itemHasPermission [Necesario]
|
||||
# Este elemento se mostrará cuando el jugador tenga permiso
|
||||
has-perm:
|
||||
material: DIAMOND
|
||||
name: "&b&lVIP Prefix"
|
||||
lore:
|
||||
- ""
|
||||
- "&a➥ Pulsa para utilizar"
|
||||
|
||||
# itemUsing [Innecesario]
|
||||
# Este elemento se mostrará cuando se seleccione el prefijo.
|
||||
# Si no existe tal configuración, se mostrará automáticamente "itemHasPermission".
|
||||
using:
|
||||
material: DIAMOND
|
||||
name: "&b&lPrefix VIP"
|
||||
enchants:
|
||||
PROTECTION_ENVIRONMENTAL: 1 #Añade un encantamiento para que parezca que está seleccionado
|
||||
lore:
|
||||
- ""
|
||||
- "&a✔ Seleccionado"
|
||||
|
||||
# itemNoPermission [Innecesario]
|
||||
# Si el jugador no tiene el permiso,este item sera mostrado.
|
||||
# Si este elemento no está configurado, no se mostrará en la GUI cuando el jugador no tenga permiso para usarlo.
|
||||
no-perm:
|
||||
material: INK_SACK
|
||||
data: 8
|
||||
name: "&b&lVIP &c(¡Cómpralo!)"
|
||||
lore:
|
||||
- ""
|
||||
- "&e✯ Necesitas Comprar el VIP para utilizarlo!"
|
||||
@@ -30,12 +30,13 @@ actions:
|
||||
- "[CONSOLE] say %player_name% 选择了 Pro会员前缀 !"
|
||||
|
||||
# 该前缀的GUI物品配置
|
||||
# 物品配置方式详见 https://github.com/CryptoMorin/XSeries/wiki/XItemStack
|
||||
item:
|
||||
|
||||
# 有权限时显示的物品 [必须]
|
||||
# 当用户有权限且未选中时,会显示该物品
|
||||
has-perm:
|
||||
type: DIAMOND
|
||||
material: DIAMOND
|
||||
name: "&b&lPro &b会员前缀"
|
||||
lore:
|
||||
- "&7Pro会员专属称号"
|
||||
@@ -48,7 +49,7 @@ item:
|
||||
# 正在使用时显示的物品 [非必需]
|
||||
# 当用户正在使用时会显示这个物品,不配置即自动加载“itemHasPermission”
|
||||
using:
|
||||
type: DIAMOND
|
||||
material: DIAMOND
|
||||
name: "&b&lPro &b会员前缀"
|
||||
flags:
|
||||
- HIDE_ENCHANTS # 隐藏附魔显示
|
||||
@@ -65,7 +66,7 @@ item:
|
||||
# 没有权限时显示的物品 [非必需]
|
||||
# 如果没有权限就会显示这个item。如果不配置该物品,则玩家没有使用权限时不会显示在GUI里面。
|
||||
no-perm:
|
||||
type: INK_SACK
|
||||
material: INK_SACK
|
||||
data: 8
|
||||
name: "&b&lPro+ &b会员前缀 &c(未拥有)"
|
||||
lore:
|
||||
|
||||
Reference in New Issue
Block a user