mirror of
https://github.com/CarmJos/PlayerPrefix.git
synced 2026-06-04 18:08:18 +08:00
1.0.0 项目完成
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package cc.carm.plugin.playerprefix;
|
||||
|
||||
import cc.carm.plugin.playerprefix.commands.PlayerPrefixCommand;
|
||||
import cc.carm.plugin.playerprefix.listeners.PrefixListener;
|
||||
import cc.carm.plugin.playerprefix.managers.UserPrefixManager;
|
||||
import cc.carm.plugin.playerprefix.utils.MessageParser;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class Main extends JavaPlugin {
|
||||
|
||||
private static Main instance;
|
||||
|
||||
public static Main getInstance() {
|
||||
return Main.instance;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
instance = this;
|
||||
|
||||
log(getName() + " " + getDescription().getVersion() + " &7开始加载...");
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
log("启用前缀管理器...");
|
||||
UserPrefixManager.init();
|
||||
|
||||
log("注册指令...");
|
||||
this.getCommand("PlayerPrefix").setExecutor(new PlayerPrefixCommand());
|
||||
this.getCommand("PlayerPrefix").setTabCompleter(new PlayerPrefixCommand());
|
||||
|
||||
log("注册监听器...");
|
||||
Bukkit.getPluginManager().registerEvents(new PrefixListener(), this);
|
||||
|
||||
log("加载完成 ,共耗时 " + (System.currentTimeMillis() - startTime) + " ms 。");
|
||||
|
||||
}
|
||||
|
||||
public static void log(String message) {
|
||||
Bukkit.getConsoleSender().sendMessage(MessageParser.parseColor("[" + getInstance().getName() + "] " + message));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,306 @@
|
||||
package cc.carm.plugin.playerprefix.commands;
|
||||
|
||||
import cc.carm.plugin.playerprefix.managers.UserPrefixManager;
|
||||
import cc.carm.plugin.playerprefix.models.UserPrefixCache;
|
||||
import cc.carm.plugin.playerprefix.utils.MessageParser;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.StringUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class PlayerPrefixCommand implements CommandExecutor, TabCompleter {
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String s, String[] args) {
|
||||
if (args.length == 1) {
|
||||
String aim = args[0];
|
||||
if (aim.equalsIgnoreCase("list")) {
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage("只有玩家才可使用此指令!");
|
||||
return true;
|
||||
}
|
||||
|
||||
Player player = (Player) sender;
|
||||
UserPrefixCache cache = UserPrefixManager.getData(player.getUniqueId());
|
||||
Map<Integer, String> prefixs = cache.getPrefixes();
|
||||
if (prefixs.size() < 1) {
|
||||
sender.sendMessage("§f抱歉,但您当前暂无前缀!");
|
||||
return true;
|
||||
}
|
||||
sender.sendMessage("§f您当前有以下前缀:");
|
||||
sender.sendMessage("§8| §70 §f(无)");
|
||||
prefixs.forEach((integer, s1) -> {
|
||||
sender.sendMessage("§8| §7" + integer + " §f" + MessageParser.parseColor(s1));
|
||||
});
|
||||
sender.sendMessage("§f您可以输入 “§a/prefix set <ID> §f” 来更换您的前缀。");
|
||||
return true;
|
||||
} else if (aim.equalsIgnoreCase("toggle")) {
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage("只有玩家才可使用此指令!");
|
||||
return true;
|
||||
}
|
||||
|
||||
Player player = (Player) sender;
|
||||
UserPrefixCache cache = UserPrefixManager.getData(player.getUniqueId());
|
||||
cache.setEnablePrefix(!cache.isEnabledPrefix());
|
||||
if (cache.isEnabledPrefix()) {
|
||||
UserPrefixManager.updatePrefix(player);
|
||||
} else {
|
||||
UserPrefixManager.clearPrefix(player);
|
||||
}
|
||||
sender.sendMessage("当前前缀显示状态: " + (cache.isEnabledPrefix() ? "§a开启" : "§c关闭"));
|
||||
|
||||
} else if (aim.equalsIgnoreCase("admin")) {
|
||||
if (sender.hasPermission("prefix.admin")) {
|
||||
helpAdmin(sender);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
} else if (args.length == 2) {
|
||||
String aim = args[0];
|
||||
if (aim.equalsIgnoreCase("list")) {
|
||||
if (!sender.hasPermission("prefix.admin")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
OfflinePlayer targetPlayer = Bukkit.getOfflinePlayer(args[1]);
|
||||
UUID playerUUID = targetPlayer.getUniqueId();
|
||||
UserPrefixCache cache = UserPrefixManager.loadData(playerUUID);
|
||||
sender.sendMessage("§f" + targetPlayer.getName() + "当前有以下前缀:");
|
||||
Map<Integer, String> prefixs = cache.getPrefixes();
|
||||
prefixs.forEach((integer, s1) -> {
|
||||
sender.sendMessage("§8| §7" + integer + " §f" + MessageParser.parseColor(s1));
|
||||
});
|
||||
UserPrefixManager.unloadData(playerUUID);
|
||||
return true;
|
||||
} else if (aim.equalsIgnoreCase("set")) {
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage("只有玩家才可使用此指令!");
|
||||
return true;
|
||||
}
|
||||
|
||||
int id;
|
||||
try {
|
||||
id = Integer.parseInt(args[1]);
|
||||
} catch (Exception e) {
|
||||
sender.sendMessage("提供的ID错误,请您输入/prefix list 查看您所拥有的前缀。");
|
||||
return true;
|
||||
}
|
||||
|
||||
Player player = (Player) sender;
|
||||
UserPrefixCache cache = UserPrefixManager.getData(player.getUniqueId());
|
||||
|
||||
if (id == 0) {
|
||||
cache.setUsingPrefix(id);
|
||||
sender.sendMessage("您已摘下前缀。");
|
||||
UserPrefixManager.updatePrefix(player);
|
||||
} else if (cache.getPrefixes().containsKey(id)) {
|
||||
cache.setUsingPrefix(id);
|
||||
sender.sendMessage("您当前的前缀已更新为:" + cache.getUsingPrefix());
|
||||
UserPrefixManager.updatePrefix(player);
|
||||
} else {
|
||||
sender.sendMessage("§c修改失败!§f您未拥有该ID的前缀。");
|
||||
sender.sendMessage("您可以输入/prefix list 查看您所拥有的前缀。");
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
help(sender);
|
||||
return true;
|
||||
}
|
||||
} else if (args.length == 3) {
|
||||
if (!sender.hasPermission("prefix.admin")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
String aim = args[0];
|
||||
if (aim.equalsIgnoreCase("add")) {
|
||||
OfflinePlayer targetPlayer = Bukkit.getOfflinePlayer(args[1]);
|
||||
UUID playerUUID = targetPlayer.getUniqueId();
|
||||
UserPrefixCache cache = UserPrefixManager.loadData(playerUUID);
|
||||
cache.addPrefix(args[2]);
|
||||
UserPrefixManager.unloadData(playerUUID);
|
||||
sender.sendMessage("成功为玩家 " + targetPlayer.getPlayer() + " 添加前缀:" + args[2]);
|
||||
return true;
|
||||
|
||||
} else if (aim.equalsIgnoreCase("remove")) {
|
||||
OfflinePlayer targetPlayer = Bukkit.getOfflinePlayer(args[1]);
|
||||
UUID playerUUID = targetPlayer.getUniqueId();
|
||||
UserPrefixCache cache = UserPrefixManager.loadData(playerUUID);
|
||||
|
||||
int id;
|
||||
try {
|
||||
id = Integer.parseInt(args[2]);
|
||||
} catch (Exception e) {
|
||||
sender.sendMessage("提供的ID错误,可以输入/prefix list <玩家名>查看该玩家所拥有的前缀。");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (cache.getPrefixes().containsKey(id)) {
|
||||
sender.sendMessage("已移除ID为 " + id + " 的前缀:" + cache.getPrefixes().get(id));
|
||||
cache.removePrefix(id);
|
||||
if (targetPlayer.isOnline()) {
|
||||
UserPrefixManager.updatePrefix(Bukkit.getPlayer(playerUUID));
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage("§c移除失败!§f该玩家未拥有该前缀ID。");
|
||||
sender.sendMessage("您可以输入/prefix list <玩家名> 查看该玩家所拥有的前缀。");
|
||||
}
|
||||
|
||||
UserPrefixManager.unloadData(playerUUID);
|
||||
return true;
|
||||
} else if (aim.equalsIgnoreCase("set")) {
|
||||
OfflinePlayer targetPlayer = Bukkit.getOfflinePlayer(args[1]);
|
||||
UUID playerUUID = targetPlayer.getUniqueId();
|
||||
UserPrefixCache cache = UserPrefixManager.loadData(playerUUID);
|
||||
|
||||
int id;
|
||||
try {
|
||||
id = Integer.parseInt(args[2]);
|
||||
} catch (Exception e) {
|
||||
sender.sendMessage("提供的ID错误,可以输入/prefix list <玩家名>查看该玩家所拥有的前缀。");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (cache.getPrefixes().containsKey(id)) {
|
||||
sender.sendMessage("成功设置玩家 " + targetPlayer.getName() + " 的前缀为" + cache.getPrefixes().get(id));
|
||||
cache.setUsingPrefix(id);
|
||||
if (targetPlayer.isOnline()) {
|
||||
UserPrefixManager.updatePrefix(Bukkit.getPlayer(playerUUID));
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage("§c设置失败!§f该玩家未拥有该前缀ID。");
|
||||
sender.sendMessage("您可以输入/prefix list <玩家名> 查看该玩家所拥有的前缀。");
|
||||
}
|
||||
UserPrefixManager.unloadData(playerUUID);
|
||||
return true;
|
||||
} else if (aim.equalsIgnoreCase("copy")) {
|
||||
OfflinePlayer targetPlayer = Bukkit.getOfflinePlayer(args[1]);
|
||||
UUID playerUUID = targetPlayer.getUniqueId();
|
||||
UserPrefixCache cache = UserPrefixManager.loadData(playerUUID);
|
||||
|
||||
|
||||
OfflinePlayer sourcePlayer = Bukkit.getOfflinePlayer(args[2]);
|
||||
UUID sourceUUID = sourcePlayer.getUniqueId();
|
||||
UserPrefixCache sourceCache = UserPrefixManager.loadData(sourceUUID);
|
||||
|
||||
if (sourceCache.getPrefixes().size() > 0) {
|
||||
for (Integer prefixID : cache.getPrefixes().keySet()) {
|
||||
cache.removePrefix(prefixID);
|
||||
}
|
||||
for (String value : sourceCache.getPrefixes().values()) {
|
||||
cache.addPrefix(value);
|
||||
}
|
||||
sender.sendMessage("成功复制玩家 " + sourcePlayer.getName() + " 的前缀到" + targetPlayer.getPlayer());
|
||||
} else {
|
||||
sender.sendMessage("§c复制失败!§f目标玩家的前缀列表为空。");
|
||||
}
|
||||
UserPrefixManager.unloadData(playerUUID);
|
||||
UserPrefixManager.unloadData(sourceUUID);
|
||||
return true;
|
||||
} else if (aim.equalsIgnoreCase("addall")) {
|
||||
OfflinePlayer targetPlayer = Bukkit.getOfflinePlayer(args[1]);
|
||||
UUID playerUUID = targetPlayer.getUniqueId();
|
||||
UserPrefixCache cache = UserPrefixManager.loadData(playerUUID);
|
||||
|
||||
|
||||
OfflinePlayer sourcePlayer = Bukkit.getOfflinePlayer(args[2]);
|
||||
UUID sourceUUID = sourcePlayer.getUniqueId();
|
||||
UserPrefixCache sourceCache = UserPrefixManager.loadData(sourceUUID);
|
||||
|
||||
if (sourceCache.getPrefixes().size() > 0) {
|
||||
for (String value : sourceCache.getPrefixes().values()) {
|
||||
cache.addPrefix(value);
|
||||
}
|
||||
sender.sendMessage("成功添加玩家 " + sourcePlayer.getName() + " 的所有前缀到" + targetPlayer.getPlayer());
|
||||
} else {
|
||||
sender.sendMessage("§c添加失败!§f目标玩家的前缀列表为空。");
|
||||
}
|
||||
UserPrefixManager.unloadData(playerUUID);
|
||||
UserPrefixManager.unloadData(sourceUUID);
|
||||
return true;
|
||||
} else {
|
||||
helpAdmin(sender);
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
help(sender);
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public static void help(CommandSender sender) {
|
||||
sender.sendMessage("§a§l前缀系统 §f指令列表");
|
||||
sender.sendMessage("§f/prefix list §7列出所有前缀");
|
||||
sender.sendMessage("§f/prefix toggle §7开关前缀显示");
|
||||
sender.sendMessage("§f/prefix set <ID> §7设置使用的前缀");
|
||||
}
|
||||
|
||||
public static void helpAdmin(CommandSender sender) {
|
||||
sender.sendMessage("§a§l前缀系统 §f管理员指令列表");
|
||||
sender.sendMessage("§f/prefix list <玩家名> §7列出所有前缀");
|
||||
sender.sendMessage("§f/prefix add <玩家名> <前缀> §7添加一个前缀");
|
||||
sender.sendMessage("§f/prefix remove <玩家名> <ID> §7移除一个前缀");
|
||||
sender.sendMessage("§f/prefix set <玩家名> <ID> §7设置其使用的前缀");
|
||||
sender.sendMessage("§f/prefix addall <玩家名> <源玩家名>");
|
||||
sender.sendMessage("§8 - §7添加所有源玩家的前缀到目标玩家");
|
||||
sender.sendMessage("§f/prefix copy <玩家名> <源玩家名>");
|
||||
sender.sendMessage("§8 - §7设置目标玩家的前缀列表为源玩家的前缀列表");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||
switch (args.length) {
|
||||
case 1: {
|
||||
List<String> completions = new ArrayList<>();
|
||||
List<String> strings = new ArrayList<>();
|
||||
strings.add("list");
|
||||
strings.add("toggle");
|
||||
strings.add("set");
|
||||
if (sender.hasPermission("prefix.admin")) {
|
||||
strings.add("add");
|
||||
strings.add("remove");
|
||||
strings.add("copy");
|
||||
strings.add("addall");
|
||||
}
|
||||
for (String s : strings) {
|
||||
if (StringUtil.startsWithIgnoreCase(s, args[0].toLowerCase())) {
|
||||
completions.add(s);
|
||||
}
|
||||
}
|
||||
return completions;
|
||||
}
|
||||
case 2: {
|
||||
if (!sender.hasPermission("prefix.admin")) {
|
||||
return ImmutableList.of();
|
||||
}
|
||||
String aim = args[1];
|
||||
if (aim.equalsIgnoreCase("add") || aim.equalsIgnoreCase("remove") || aim.equalsIgnoreCase("list")) {
|
||||
List<String> completions = new ArrayList<>();
|
||||
for (Player pl : Bukkit.getOnlinePlayers()) {
|
||||
if (StringUtil.startsWithIgnoreCase(pl.getName(), args[1].toLowerCase())) {
|
||||
completions.add(pl.getName());
|
||||
}
|
||||
}
|
||||
return completions;
|
||||
}
|
||||
}
|
||||
default:
|
||||
return ImmutableList.of();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package cc.carm.plugin.playerprefix.listeners;
|
||||
|
||||
import cc.carm.plugin.playerprefix.managers.UserPrefixManager;
|
||||
import cc.carm.plugin.playerprefix.models.UserPrefixCache;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
public class PrefixListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
|
||||
UserPrefixCache playerCache = UserPrefixManager.loadData(player.getUniqueId());
|
||||
UserPrefixManager.updatePrefix(player);
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuit(PlayerQuitEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
UserPrefixManager.clearPrefix(player);
|
||||
UserPrefixManager.unloadData(player.getUniqueId());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package cc.carm.plugin.playerprefix.managers;
|
||||
|
||||
import cc.carm.plugin.playerprefix.Main;
|
||||
import cc.carm.plugin.playerprefix.models.UserPrefixCache;
|
||||
import cc.carm.plugin.playerprefix.utils.NamePrefix;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class UserPrefixManager {
|
||||
|
||||
|
||||
public static Map<UUID, UserPrefixCache> userDataCaches = new HashMap<>();
|
||||
|
||||
public static void init() {
|
||||
File userdataFolder = new File(Main.getInstance().getDataFolder() + "/userdata");
|
||||
if (!userdataFolder.isDirectory() || !userdataFolder.exists()) {
|
||||
userdataFolder.mkdir();
|
||||
}
|
||||
}
|
||||
|
||||
public static void updatePrefix(Player player) {
|
||||
UserPrefixCache playerCache = UserPrefixManager.getData(player.getUniqueId());
|
||||
|
||||
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
|
||||
UserPrefixCache othersCache = UserPrefixManager.getData(onlinePlayer.getUniqueId());
|
||||
if (playerCache.isEnabledPrefix()) {
|
||||
NamePrefix.set(player, onlinePlayer, othersCache.getUsingPrefix());
|
||||
}
|
||||
if (othersCache.isEnabledPrefix()) {
|
||||
NamePrefix.set(onlinePlayer, player, playerCache.getUsingPrefix());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void clearPrefix(Player player) {
|
||||
|
||||
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
|
||||
NamePrefix.reset(onlinePlayer, player);
|
||||
NamePrefix.reset(player, onlinePlayer);
|
||||
}
|
||||
}
|
||||
|
||||
public static UserPrefixCache loadData(UUID uuid) {
|
||||
UserPrefixCache prefixCache = new UserPrefixCache(uuid);
|
||||
|
||||
userDataCaches.put(uuid, prefixCache);
|
||||
|
||||
return prefixCache;
|
||||
}
|
||||
|
||||
public static void unloadData(UUID uuid) {
|
||||
userDataCaches.remove(uuid);
|
||||
}
|
||||
|
||||
public static UserPrefixCache getData(UUID uuid) {
|
||||
return userDataCaches.getOrDefault(uuid, loadData(uuid));
|
||||
}
|
||||
|
||||
public static boolean hasData(UUID uuid) {
|
||||
return userDataCaches.containsKey(uuid);
|
||||
}
|
||||
|
||||
public static Map<UUID, UserPrefixCache> getUserDataCaches() {
|
||||
return userDataCaches;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
package cc.carm.plugin.playerprefix.models;
|
||||
|
||||
import cc.carm.plugin.playerprefix.Main;
|
||||
import cc.carm.plugin.playerprefix.utils.MessageParser;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class UserPrefixCache {
|
||||
|
||||
UUID uuid;
|
||||
|
||||
private final File datafile;
|
||||
private FileConfiguration dataConfiguration;
|
||||
|
||||
boolean fileLoaded;
|
||||
|
||||
private final Map<Integer, String> prefixes;
|
||||
private int usingPrefix;
|
||||
private boolean enablePrefix;
|
||||
|
||||
|
||||
public UserPrefixCache(UUID uuid) {
|
||||
this.uuid = uuid;
|
||||
File userdataFolder = new File(Main.getInstance().getDataFolder() + "/userdata");
|
||||
if (!userdataFolder.isDirectory() || !userdataFolder.exists()) {
|
||||
userdataFolder.mkdir();
|
||||
}
|
||||
this.datafile = new File(userdataFolder, this.uuid + ".yml");
|
||||
|
||||
this.fileLoaded = datafile.exists();
|
||||
|
||||
|
||||
this.prefixes = new HashMap<>();
|
||||
this.usingPrefix = 0;
|
||||
|
||||
if (!fileLoaded) {
|
||||
checkFile();
|
||||
setEnablePrefix(true);
|
||||
} else {
|
||||
this.dataConfiguration = YamlConfiguration.loadConfiguration(datafile);
|
||||
|
||||
readPrefix();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public Map<Integer, String> getPrefixes() {
|
||||
return prefixes;
|
||||
}
|
||||
|
||||
|
||||
public void readPrefix() {
|
||||
try {
|
||||
Set<String> idString = getDataConfiguration().getConfigurationSection("prefixes.list").getKeys(false);
|
||||
for (String s : idString) {
|
||||
try {
|
||||
int id = Integer.parseInt(s);
|
||||
String prefix = getDataConfiguration().getString("prefixes.list." + s);
|
||||
getPrefixes().put(id, prefix);
|
||||
} catch (Exception e) {
|
||||
Main.getInstance().getLogger().log(Level.WARNING, "前缀加载有误 " + uuid + ".yml -> prefixes.list." + s);
|
||||
}
|
||||
}
|
||||
} catch (Exception ignore) {
|
||||
}
|
||||
|
||||
int usingPrefixData = getDataConfiguration().getInt("prefixes.using", 0);
|
||||
|
||||
if (getPrefixes().containsKey(usingPrefixData)) {
|
||||
this.usingPrefix = usingPrefixData;
|
||||
}
|
||||
|
||||
this.enablePrefix = getDataConfiguration().getBoolean("prefixes.enable", true);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public String getUsingPrefix() {
|
||||
return MessageParser.parseColor(getPrefixes().getOrDefault(this.usingPrefix, ""));
|
||||
}
|
||||
|
||||
public void setUsingPrefix(int id) {
|
||||
if (getPrefixes().containsKey(id)) {
|
||||
this.usingPrefix = id;
|
||||
checkFile();
|
||||
getDataConfiguration().set("prefixes.using", id);
|
||||
} else {
|
||||
this.usingPrefix = 0;
|
||||
checkFile();
|
||||
getDataConfiguration().set("prefixes.using", 0);
|
||||
}
|
||||
saveDatas();
|
||||
|
||||
}
|
||||
|
||||
public void setEnablePrefix(boolean toggle) {
|
||||
this.enablePrefix = toggle;
|
||||
checkFile();
|
||||
getDataConfiguration().set("prefixes.enable", toggle);
|
||||
saveDatas();
|
||||
}
|
||||
|
||||
public boolean isEnabledPrefix() {
|
||||
return this.enablePrefix;
|
||||
}
|
||||
|
||||
private void checkFile() {
|
||||
if (!datafile.exists()) {
|
||||
try {
|
||||
datafile.createNewFile();
|
||||
} catch (IOException ex) {
|
||||
Bukkit.getLogger().info("Could not load file " + "/userdata/" + "yml" + ex);
|
||||
}
|
||||
}
|
||||
if (!fileLoaded) {
|
||||
this.dataConfiguration = YamlConfiguration.loadConfiguration(datafile);
|
||||
this.fileLoaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void addPrefix(String prefix) {
|
||||
int id = getPrefixes().size() > 0 ? Collections.max(getPrefixes().keySet()) + 1 : 1;
|
||||
getPrefixes().put(id, prefix);
|
||||
checkFile();
|
||||
getDataConfiguration().set("prefixes.list." + id, prefix);
|
||||
saveDatas();
|
||||
}
|
||||
|
||||
public void removePrefix(int prefixID) {
|
||||
if (this.usingPrefix == prefixID) {
|
||||
setUsingPrefix(0);
|
||||
}
|
||||
getPrefixes().remove(prefixID);
|
||||
checkFile();
|
||||
getDataConfiguration().set("prefixes.list." + prefixID, null);
|
||||
saveDatas();
|
||||
}
|
||||
|
||||
public boolean isFileLoaded() {
|
||||
return fileLoaded;
|
||||
}
|
||||
|
||||
public FileConfiguration getDataConfiguration() {
|
||||
return this.dataConfiguration;
|
||||
}
|
||||
|
||||
public void saveDatas() {
|
||||
try {
|
||||
getDataConfiguration().save(datafile);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package cc.carm.plugin.playerprefix.utils;
|
||||
|
||||
public class MessageParser {
|
||||
|
||||
public static String parseColor(String text) {
|
||||
return text.replaceAll("&", "§").replace("§§", "&");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package cc.carm.plugin.playerprefix.utils;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scoreboard.NameTagVisibility;
|
||||
import org.bukkit.scoreboard.Scoreboard;
|
||||
import org.bukkit.scoreboard.Team;
|
||||
|
||||
public class NamePrefix {
|
||||
|
||||
public static void set(Player viewer, Player target, String str) {
|
||||
set(viewer, target, str, PSType.PREFIX);
|
||||
}
|
||||
|
||||
public static void set(Player viewer, Player target, String str, PSType type) {
|
||||
Scoreboard sb = viewer.getScoreboard();
|
||||
if (Bukkit.getScoreboardManager().getMainScoreboard() == sb || sb == null) {
|
||||
sb = Bukkit.getScoreboardManager().getNewScoreboard();
|
||||
viewer.setScoreboard(sb);
|
||||
}
|
||||
Team t = sb.getTeam("NP_" + target.getName().substring(0, Math.min(13, target.getName().length())));
|
||||
if (t == null) {
|
||||
t = sb.registerNewTeam("NP_" + target.getName().substring(0, Math.min(13, target.getName().length())));
|
||||
t.setNameTagVisibility(NameTagVisibility.ALWAYS);
|
||||
}
|
||||
if (str.length() > 16) {
|
||||
str = str.substring(0, 16);
|
||||
}
|
||||
switch (type) {
|
||||
case PREFIX:
|
||||
t.setPrefix(str);
|
||||
break;
|
||||
case SUFFIX:
|
||||
t.setSuffix(str);
|
||||
break;
|
||||
default:
|
||||
throw new AssertionError(type.name());
|
||||
}
|
||||
if (!t.hasEntry(target.getName())) t.addEntry(target.getName());
|
||||
}
|
||||
|
||||
public static void reset(Player viewer, Player target) {
|
||||
Scoreboard sb = viewer.getScoreboard();
|
||||
if (Bukkit.getScoreboardManager().getMainScoreboard() == sb || sb == null) {
|
||||
sb = Bukkit.getScoreboardManager().getNewScoreboard();
|
||||
viewer.setScoreboard(sb);
|
||||
return;
|
||||
}
|
||||
Team t = sb.getTeam("NP_" + target.getName().substring(0, Math.min(13, target.getName().length())));
|
||||
if (t != null) {
|
||||
t.unregister();
|
||||
}
|
||||
}
|
||||
|
||||
public enum PSType {
|
||||
PREFIX,
|
||||
SUFFIX;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
name: PlayerPrefix
|
||||
main: cc.carm.plugin.playerprefix.Main
|
||||
version: ${project}
|
||||
author: CarmJos
|
||||
depend: [ ProtocolLib ]
|
||||
website: "https://github.com/CarmJos/PlayerPrefix"
|
||||
commands:
|
||||
PlayerPrefix:
|
||||
aliases:
|
||||
- prefix
|
||||
Reference in New Issue
Block a user