1
1
mirror of https://github.com/geekfrog/PermissionsTime.git synced 2024-11-21 14:58:48 +00:00

修复超多BUG

This commit is contained in:
GeekFrog 2018-06-24 11:22:38 +08:00
parent 209290dbba
commit 6aa80bd290
13 changed files with 388 additions and 347 deletions

View File

@ -21,7 +21,7 @@ import gg.frog.mc.nametags.listener.TagsListener;
import gg.frog.mc.nametags.placeholder.TagPlaceholder;
import gg.frog.mc.permissionstime.command.PtCommand;
import gg.frog.mc.permissionstime.database.SqlManager;
import gg.frog.mc.permissionstime.listener.MainListener;
import gg.frog.mc.permissionstime.listener.PtListener;
import net.milkbowl.vault.permission.Permission;
public class PluginMain extends JavaPlugin {
@ -57,17 +57,17 @@ public class PluginMain extends JavaPlugin {
getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + " https://github.com/geekfrog/PermissionsTime/ "));
getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX));
getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "==============================="));
if (!checkPluginDepends()) {
getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "§4Startup failure!"));
getServer().getPluginManager().disablePlugin(pm);
} else {
cm.initConfig();
registerListeners();
registerCommands();
getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "§2Startup successful!"));
}
getServer().getScheduler().runTask(pm, new Runnable() {
public void run() {
if (!checkPluginDepends()) {
getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "§4Startup failure!"));
getServer().getPluginManager().disablePlugin(pm);
} else {
registerListeners();
registerCommands();
getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "§2Startup successful!"));
}
if (PluginCfg.IS_METRICS) {
try {
new Metrics(pm);
@ -85,7 +85,7 @@ public class PluginMain extends JavaPlugin {
* 这里可以注册多个
*/
private void registerListeners() {
pm.getServer().getPluginManager().registerEvents(new MainListener(pm), pm);
pm.getServer().getPluginManager().registerEvents(new PtListener(pm), pm);
pm.getServer().getPluginManager().registerEvents(new TagsListener(pm), pm);
}

View File

@ -8,6 +8,8 @@ import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.bukkit.command.CommandSender;
import gg.frog.mc.base.PluginMain;
import gg.frog.mc.base.config.LangCfg;
import gg.frog.mc.base.config.PluginCfg;
@ -25,66 +27,69 @@ import gg.frog.mc.permissionstime.config.PackagesCfg;
*/
public class ConfigManager {
private PluginMain pm;
private Map<String, PluginConfig> cfgMap = new LinkedHashMap<>();
private PluginMain pm;
private Map<String, PluginConfig> cfgMap = new LinkedHashMap<>();
public ConfigManager(PluginMain pm) {
this.pm = pm;
copyLangFilesFromJar();
// 添加到配置列表
cfgMap.put("plugin", new PluginCfg(pm));
cfgMap.put("lang", new LangCfg("lang/" + PluginCfg.LANG + ".yml", pm));
cfgMap.put("packages", new PackagesCfg("packages.yml", pm));
cfgMap.put("tagNames", new TagNameCfg("tagNames.yml", pm));
}
public ConfigManager(PluginMain pm) {
this.pm = pm;
copyLangFilesFromJar();
// 添加到配置列表
cfgMap.put("plugin", new PluginCfg(pm));
}
public void reloadConfig() {
for (Entry<String, PluginConfig> entry : cfgMap.entrySet()) {
if ("lang".equals(entry.getKey())) {
entry.setValue(new LangCfg("lang/" + PluginCfg.LANG + ".yml", pm));
}
entry.getValue().reloadConfig();
}
}
public void initConfig() {
cfgMap.put("lang", new LangCfg("lang/" + PluginCfg.LANG + ".yml", pm));
cfgMap.put("packages", new PackagesCfg("packages.yml", pm));
cfgMap.put("tagNames", new TagNameCfg("tagNames.yml", pm));
}
public Map<String, PluginConfig> getCfgMap() {
return cfgMap;
}
public void reloadConfig(CommandSender sender) {
for (Entry<String, PluginConfig> entry : cfgMap.entrySet()) {
if ("lang".equals(entry.getKey())) {
entry.setValue(new LangCfg("lang/" + PluginCfg.LANG + ".yml", pm));
}
entry.getValue().reloadConfig(sender);
}
}
private void copyLangFilesFromJar() {
FileUtil.findFilesFromJar(new FindFilesDo() {
public Map<String, PluginConfig> getCfgMap() {
return cfgMap;
}
@Override
public void process(String fileName, InputStream is) {
File f = new File(pm.getDataFolder(), fileName);
File parentFolder = f.getParentFile();
if (!parentFolder.exists()) {
parentFolder.mkdirs();
}
try {
OutputStream os = new FileOutputStream(f);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = is.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private void copyLangFilesFromJar() {
FileUtil.findFilesFromJar(new FindFilesDo() {
@Override
public boolean isProcess(String fileName) {
if (fileName.matches("lang/.+\\.yml") || "config.yml".equals(fileName) || "packages.yml".equals(fileName) || "tagNames.yml".equals(fileName)) {
File f = new File(pm.getDataFolder(), fileName);
if (!f.exists()) {
return true;
}
}
return false;
}
}, this.getClass());
}
@Override
public void process(String fileName, InputStream is) {
File f = new File(pm.getDataFolder(), fileName);
File parentFolder = f.getParentFile();
if (!parentFolder.exists()) {
parentFolder.mkdirs();
}
try {
OutputStream os = new FileOutputStream(f);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = is.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public boolean isProcess(String fileName) {
if (fileName.matches("lang/.+\\.yml") || "config.yml".equals(fileName) || "packages.yml".equals(fileName) || "tagNames.yml".equals(fileName)) {
File f = new File(pm.getDataFolder(), fileName);
if (!f.exists()) {
return true;
}
}
return false;
}
}, this.getClass());
}
}

View File

@ -1,5 +1,7 @@
package gg.frog.mc.base.config;
import org.bukkit.command.CommandSender;
import gg.frog.mc.base.PluginMain;
import gg.frog.mc.base.utils.config.PluginConfig;
@ -77,7 +79,7 @@ public class LangCfg extends PluginConfig {
}
@Override
protected void loadToDo() {
protected void loadToDo(CommandSender sender) {
INVENTORY_NAME = getConfig().getString("inventoryName", "&4===Permissions Packages===");
TAG_INVENTORY_NAME = getConfig().getString("tagInventoryName", "&4===Tag Packages===");
EXPIRATION_TIME = getConfig().getString("expirationTime", "&4Expiration time: {0}");
@ -87,9 +89,9 @@ public class LangCfg extends PluginConfig {
TIME_UNIT_M = getConfig().getString("timeUnitM", "minute(s)");
TIME_FOREVER = getConfig().getString("timeForever", "Forever");
TAG = getConfig().getString("tag", "Tag/Prefix");
TAG_COLOR_ITEM_NAME = getConfig().getString("tag", "&6&lName Style");
TAG_PREFIX_ITEM_NAME = getConfig().getString("tag", "&6&lTag Prefix");
TAG_SUFFIX_ITEM_NAME = getConfig().getString("tag", "&6&lTag Suffix");
TAG_COLOR_ITEM_NAME = getConfig().getString("tagColorItemName", "&6&lName Style");
TAG_PREFIX_ITEM_NAME = getConfig().getString("tagPrefixItemName", "&6&lTag Prefix");
TAG_SUFFIX_ITEM_NAME = getConfig().getString("tagSuffixItemName", "&6&lTag Suffix");
MSG_PARAMETER_MISMATCH = getConfig().getString("msg.parameterMismatch", "&4Parameter mismatch.");
MSG_TIME_PARAMETER_INCORRECT = getConfig().getString("msg.timeParameterIncorrect", "&4The number of time is incorrect. Please enter a nonzero integer.");

View File

@ -1,5 +1,7 @@
package gg.frog.mc.base.config;
import org.bukkit.command.CommandSender;
import gg.frog.mc.base.PluginMain;
import gg.frog.mc.base.utils.config.PluginConfig;
@ -33,7 +35,7 @@ public class PluginCfg extends PluginConfig {
protected void init() {}
@Override
protected void loadToDo() {
protected void loadToDo(CommandSender sender) {
PLUGIN_PREFIX = setGetDefault("pluginPrefix", "§b[" + pm.PLUGIN_NAME + "] ") + "§r";
IS_DEBUG = setGetDefault("debug", false);
IS_METRICS = setGetDefault("metrics", true);

View File

@ -10,6 +10,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.logging.Level;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.MemorySection;
import org.bukkit.configuration.file.FileConfiguration;
@ -29,192 +30,206 @@ import gg.frog.mc.base.utils.StrUtil;
*/
public abstract class PluginConfig {
protected PluginMain pm;
private FileConfiguration config = null;
private File folder = null;
private String fileName = null;
private File configFile = null;
protected PluginMain pm;
private FileConfiguration config = null;
private File folder = null;
private String fileName = null;
private File configFile = null;
protected PluginConfig(PluginMain pm) {
this.pm = pm;
initConfig(pm.getDataFolder(), "config.yml");
}
protected PluginConfig(PluginMain pm) {
this.pm = pm;
initConfig(pm.getDataFolder(), "config.yml");
}
protected PluginConfig(String fileName, PluginMain pm) {
this.pm = pm;
initConfig(pm.getDataFolder(), fileName);
}
protected PluginConfig(String fileName, PluginMain pm) {
this.pm = pm;
initConfig(pm.getDataFolder(), fileName);
}
protected PluginConfig(File folder, String fileName, PluginMain pm) {
this.pm = pm;
initConfig(folder, fileName);
}
protected PluginConfig(File folder, String fileName, PluginMain pm) {
this.pm = pm;
initConfig(folder, fileName);
}
/**
* 初始化
*
* @param folder
* @param fileName
*/
private void initConfig(File folder, String fileName) {
this.folder = folder;
this.fileName = fileName;
configFile = new File(folder, fileName);
if (!configFile.exists()) {
getConfig(folder, fileName).options().copyDefaults(true);
init();
saveAndReloadConfig();
} else {
reloadConfig();
}
}
/**
* 初始化
*
* @param folder
* @param fileName
*/
private void initConfig(File folder, String fileName) {
this.folder = folder;
this.fileName = fileName;
configFile = new File(folder, fileName);
if (!configFile.exists()) {
getConfig(folder, fileName).options().copyDefaults(true);
init();
saveAndReloadConfig();
} else {
reloadConfig();
}
}
/**
* 首次生成文件调用
*/
protected abstract void init();
/**
* 首次生成文件调用
*/
protected abstract void init();
/**
* 加载配置后调用
*/
protected abstract void loadToDo(CommandSender sender);
/**
* 加载配置后调用
*/
protected abstract void loadToDo();
/**
* 获取配置(首次)
*
* @return
*/
private FileConfiguration getConfig(File folder, String fileName) {
if (config == null) {
reloadConfig(folder, fileName, true);
}
return config;
}
/**
* 获取配置(首次)
*
* @return
*/
private FileConfiguration getConfig(File folder, String fileName) {
if (config == null) {
reloadConfig(folder, fileName, true);
}
return config;
}
/**
* 获取配置
*
* @return
*/
protected FileConfiguration getConfig() {
return config;
}
/**
* 获取配置
*
* @return
*/
protected FileConfiguration getConfig() {
return config;
}
/**
* 保存配置
*/
public void saveConfig() {
try {
getConfig().save(configFile);
} catch (IOException ex) {
PluginMain.LOG.log(Level.SEVERE, StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "Could not save config to " + configFile), ex);
}
}
/**
* 保存配置
*/
public void saveConfig() {
try {
getConfig().save(configFile);
} catch (IOException ex) {
PluginMain.LOG.log(Level.SEVERE, StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "Could not save config to " + configFile), ex);
}
}
public void saveAndReloadConfig() {
try {
getConfig().save(configFile);
reloadConfig();
} catch (IOException ex) {
PluginMain.LOG.log(Level.SEVERE, StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "Could not save config to " + configFile), ex);
}
}
public void saveAndReloadConfig() {
try {
getConfig().save(configFile);
reloadConfig();
} catch (IOException ex) {
PluginMain.LOG.log(Level.SEVERE, StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "Could not save config to " + configFile), ex);
}
}
/**
* 配置重载
*/
public void reloadConfig() {
reloadConfig(folder, fileName, false);
}
/**
* 配置重载
*/
public void reloadConfig() {
reloadConfig(folder, fileName, false);
}
/**
* 配置重载
*/
public void reloadConfig(CommandSender sender) {
reloadConfig(folder, fileName, false, sender);
}
/**
* 配置重载
*/
private void reloadConfig(File folder, String fileName, boolean useRes) {
YamlConfiguration tempConfig = new YamlConfiguration();
try {
tempConfig.load(configFile);
config = tempConfig;
} catch (FileNotFoundException e) {
} catch (IOException | InvalidConfigurationException e1) {
tempConfig = null;
e1.printStackTrace();
}
if (config == null) {
config = new YamlConfiguration();
}
if (useRes) {
final InputStream defConfigStream = pm.getResource(fileName);
if (defConfigStream == null) {
return;
}
config.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(defConfigStream, Charsets.UTF_8)));
}
loadToDo();
// if (tempConfig != null) {
// saveConfig();
// }
}
/**
* 配置重载
*/
private void reloadConfig(File folder, String fileName, boolean useRes) {
reloadConfig(folder, fileName, useRes, null);
}
protected void setObj(String path, Map<String, ? extends IConfigBean> o) {
for (Entry<String, ? extends IConfigBean> configBean : o.entrySet()) {
setObj(path + "." + configBean.getKey(), configBean.getValue());
}
}
/**
* 配置重载
*/
private void reloadConfig(File folder, String fileName, boolean useRes, CommandSender sender) {
YamlConfiguration tempConfig = new YamlConfiguration();
try {
tempConfig.load(configFile);
config = tempConfig;
} catch (FileNotFoundException e) {
} catch (IOException | InvalidConfigurationException e1) {
tempConfig = null;
e1.printStackTrace();
}
if (config == null) {
config = new YamlConfiguration();
}
if (useRes) {
final InputStream defConfigStream = pm.getResource(fileName);
if (defConfigStream == null) {
return;
}
config.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(defConfigStream, Charsets.UTF_8)));
}
loadToDo(sender);
// if (tempConfig != null) {
// saveConfig();
// }
}
protected void setObj(String path, IConfigBean o) {
getConfig().set(path, o.toConfig());
}
protected void setObj(String path, Map<String, ? extends IConfigBean> o) {
for (Entry<String, ? extends IConfigBean> configBean : o.entrySet()) {
setObj(path + "." + configBean.getKey(), configBean.getValue());
}
}
protected <T extends IConfigBean> Map<String, T> getObjMap(String path, Class<T> clazz) {
Map<String, T> map = new HashMap<>();
MemorySection configMap = (MemorySection) getConfig().get(path);
if (configMap != null) {
for (String key : configMap.getKeys(false)) {
T bean = getObj(path + "." + key, clazz);
if (bean != null) {
map.put(key, bean);
}
}
}
return map;
}
protected void setObj(String path, IConfigBean o) {
getConfig().set(path, o.toConfig());
}
protected <T extends IConfigBean> T getObj(String path, Class<T> clazz) {
Object beanConfig = getConfig().get(path);
if (beanConfig != null && beanConfig instanceof MemorySection) {
try {
T bean = clazz.newInstance();
bean.toConfigBean((MemorySection) beanConfig);
return bean;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
protected <T extends IConfigBean> Map<String, T> getObjMap(String path, Class<T> clazz) {
Map<String, T> map = new HashMap<>();
MemorySection configMap = (MemorySection) getConfig().get(path);
if (configMap != null) {
for (String key : configMap.getKeys(false)) {
T bean = getObj(path + "." + key, clazz);
if (bean != null) {
map.put(key, bean);
}
}
}
return map;
}
protected String setGetDefault(String path, String def) {
if (!getConfig().contains(path)) {
getConfig().set(path, def);
return def;
}
return getConfig().getString(path);
}
protected <T extends IConfigBean> T getObj(String path, Class<T> clazz) {
Object beanConfig = getConfig().get(path);
if (beanConfig != null && beanConfig instanceof MemorySection) {
try {
T bean = clazz.newInstance();
bean.toConfigBean((MemorySection) beanConfig);
return bean;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
protected int setGetDefault(String path, int def) {
if (!getConfig().contains(path)) {
getConfig().set(path, def);
return def;
}
return getConfig().getInt(path);
}
protected String setGetDefault(String path, String def) {
if (!getConfig().contains(path)) {
getConfig().set(path, def);
return def;
}
return getConfig().getString(path);
}
protected boolean setGetDefault(String path, boolean def) {
if (!getConfig().contains(path)) {
getConfig().set(path, def);
return def;
}
return getConfig().getBoolean(path);
}
protected int setGetDefault(String path, int def) {
if (!getConfig().contains(path)) {
getConfig().set(path, def);
return def;
}
return getConfig().getInt(path);
}
protected boolean setGetDefault(String path, boolean def) {
if (!getConfig().contains(path)) {
getConfig().set(path, def);
return def;
}
return getConfig().getBoolean(path);
}
}

View File

@ -8,6 +8,7 @@ import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
@ -62,12 +63,22 @@ public class TagNameCfg extends PluginConfig {
}
@Override
protected void loadToDo() {
protected void loadToDo(CommandSender sender) {
DEFAULT_NAMECOLOR = setGetDefault("defaultNamecolor", "");
DEFAULT_PREFIX = setGetDefault("defaultPrefix", "");
DEFAULT_SUFFIX = setGetDefault("defaultSuffix", "");
CHANGE_DISPLAYNAME = setGetDefault("changeDisplayname", true);
USE_HD_PLUGIN = setGetDefault("useHdPlugin", false);
if (USE_HD_PLUGIN && !PluginMain.enabledHdPlugin) {
USE_HD_PLUGIN = false;
if (sender != null) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "§eHolographicDisplays is not installed or not enabled. "));
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "§eBut you enabled some func need HolographicDisplays."));
} else {
pm.getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "§eHolographicDisplays is not installed or not enabled. "));
pm.getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "§eBut you enabled some func need HolographicDisplays."));
}
}
ONE_LINE_DISPLAY = setGetDefault("oneLineDisplay", true);
REFRESH_TAG_TIME = setGetDefault("refreshTagTime", -1);
PACKAGES = getObjMap("packages", TagPackageBean.class);
@ -114,7 +125,7 @@ public class TagNameCfg extends PluginConfig {
SUFFIX_ITEMS.put(e.getValue().getPermissions(), items);
}
}
if (task != null) {
task.cancel();
}

View File

@ -22,7 +22,7 @@ public class PlayerTagShow {
Inventory inventory = null;
int size = 0;
if (itemList.size() > 0) {
inventory = Bukkit.createInventory(null, ((itemList.size() + disItemList.size()) % 9 == 0 ? (itemList.size() + disItemList.size()) : ((itemList.size() + disItemList.size()) / 9 + 1) * 9), StrUtil.messageFormat(LangCfg.TAG_INVENTORY_NAME + "§r§5§9§2§0§r"));
inventory = Bukkit.createInventory(null, ((itemList.size() + disItemList.size()) % 9 == 0 ? (itemList.size() + disItemList.size()) : ((itemList.size() + disItemList.size()) / 9 + 1) * 9), StrUtil.messageFormat(LangCfg.TAG_INVENTORY_NAME + "§r§5§9§2§0§r"));
String uuid = player.getUniqueId().toString();
PlayerTagBean playerTag = null;
if (TagNameCfg.PLAYER_TAG.containsKey(uuid)) {

View File

@ -65,7 +65,7 @@ public class TagsListener implements Listener {
@EventHandler
public void onPlayerClick(InventoryClickEvent event) {
if (StrUtil.messageFormat(LangCfg.TAG_INVENTORY_NAME + "§r§5§9§2§0§r").equals(event.getInventory().getName())) {
if (StrUtil.messageFormat(LangCfg.TAG_INVENTORY_NAME + "§r§5§9§2§0§r").equals(event.getInventory().getName())) {
if (event.getCurrentItem() != null && event.getCurrentItem().getItemMeta() != null && event.getCurrentItem().getItemMeta().hasLore()) {
List<String> lores = event.getCurrentItem().getItemMeta().getLore();
if (lores.size() > 1) {

View File

@ -1,6 +1,7 @@
package gg.frog.mc.nametags.model;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.MemorySection;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
@ -54,7 +55,7 @@ public class PlayerTagBean extends PluginConfig implements IConfigBean, Cloneabl
}
@Override
protected void loadToDo() {
protected void loadToDo(CommandSender sender) {
namecolor = getConfig().getString("namecolor", TagNameCfg.DEFAULT_NAMECOLOR);
prefix = getConfig().getString("prefix", TagNameCfg.DEFAULT_PREFIX);
suffix = getConfig().getString("suffix", TagNameCfg.DEFAULT_SUFFIX);

View File

@ -58,7 +58,7 @@ public class PtCommand implements CommandExecutor, TabCompleter {
inventory.close();
}
}
pm.getConfigManager().reloadConfig();
pm.getConfigManager().reloadConfig(sender);
if (!sm.updateDatabase()) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "§4Database exceptions."));
}
@ -74,7 +74,7 @@ public class PtCommand implements CommandExecutor, TabCompleter {
inventory.close();
}
}
pm.getConfigManager().reloadConfig();
pm.getConfigManager().reloadConfig(sender);
if (!sm.updateDatabase()) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "§4Database exceptions."));
}

View File

@ -12,6 +12,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
@ -24,103 +25,107 @@ import gg.frog.mc.permissionstime.model.cfg.PermissionPackageBean;
public class PackagesCfg extends PluginConfig {
public static String PACKAGES_VERSION = null;
public static String DEFAULT_GROUP = null;
public static Map<String, PermissionPackageBean> PACKAGES = new ConcurrentHashMap<>();
public static Map<String, ItemStack> PACKAGE_ITEMS = new ConcurrentHashMap<>();
public static Set<String> allPermissions = Collections.synchronizedSet(new HashSet<String>());
public static Set<String> allGroups = Collections.synchronizedSet(new HashSet<String>());
public static String PACKAGES_VERSION = null;
public static String DEFAULT_GROUP = null;
public static Map<String, PermissionPackageBean> PACKAGES = new ConcurrentHashMap<>();
public static Map<String, ItemStack> PACKAGE_ITEMS = new ConcurrentHashMap<>();
public static Set<String> allPermissions = Collections.synchronizedSet(new HashSet<String>());
public static Set<String> allGroups = Collections.synchronizedSet(new HashSet<String>());
public PackagesCfg(String fileName, PluginMain pm) {
super(fileName, pm);
}
public PackagesCfg(String fileName, PluginMain pm) {
super(fileName, pm);
}
@Override
protected void init() {}
@Override
protected void init() {
}
@Override
protected void loadToDo() {
PACKAGES_VERSION = setGetDefault("version", "1.00");
DEFAULT_GROUP = setGetDefault("defaultGroup", "Default");
PACKAGES = getObjMap("packages", PermissionPackageBean.class);
setObj("packages", PACKAGES);
if (PluginCfg.IS_DEBUG) {
System.out.println("packages vresion:" + PACKAGES_VERSION);
System.out.println("defaultGroup:" + DEFAULT_GROUP);
for (Entry<String, PermissionPackageBean> p : PACKAGES.entrySet()) {
System.out.println(p.getKey() + ":" + p.getValue());
}
}
PACKAGE_ITEMS.clear();
for (Entry<String, PermissionPackageBean> e : PACKAGES.entrySet()) {
ItemStack item = getPackageItem(e.getKey(), e.getValue());
if (item != null) {
PACKAGE_ITEMS.put(e.getKey(), item);
} else {
PluginMain.LOG.log(Level.SEVERE, "Packages of " + e.getKey() + " has problem.");
}
allPermissions.addAll(e.getValue().getPermissions());
allGroups.addAll(e.getValue().getGroups());
}
}
@Override
protected void loadToDo(CommandSender sender) {
PACKAGES_VERSION = setGetDefault("version", "1.00");
DEFAULT_GROUP = setGetDefault("defaultGroup", "Default");
PACKAGES = getObjMap("packages", PermissionPackageBean.class);
setObj("packages", PACKAGES);
if (PluginCfg.IS_DEBUG) {
System.out.println("packages vresion:" + PACKAGES_VERSION);
System.out.println("defaultGroup:" + DEFAULT_GROUP);
for (Entry<String, PermissionPackageBean> p : PACKAGES.entrySet()) {
System.out.println(p.getKey() + ":" + p.getValue());
}
}
PACKAGE_ITEMS.clear();
for (Entry<String, PermissionPackageBean> e : PACKAGES.entrySet()) {
ItemStack item = getPackageItem(e.getKey(), e.getValue());
if (item != null) {
PACKAGE_ITEMS.put(e.getKey(), item);
} else {
PluginMain.LOG.log(Level.SEVERE, "Packages of " + e.getKey() + " has problem.");
if (sender != null) {
sender.sendMessage("Packages of " + e.getKey() + " has problem.");
}
}
allPermissions.addAll(e.getValue().getPermissions());
allGroups.addAll(e.getValue().getGroups());
}
}
private ItemStack getPackageItem(String name, PermissionPackageBean ppb) {
if (ppb != null) {
Material type = null;
int exid = 0;
String skullOwner = null;
if (ppb.getType() != null) {
String[] args = ppb.getType().split(":");
type = Material.getMaterial(args[0].toUpperCase(Locale.ENGLISH));
if (args.length == 2) {
try {
exid = Integer.parseInt(args[1]);
} catch (NumberFormatException e) {
if (Material.SKULL_ITEM.equals(type)) {
exid = 3;
skullOwner = args[1];
} else {
e.printStackTrace();
}
}
}
} else if (ppb.getId() != null) {
String[] args = ppb.getId().split(":");
int id = Integer.parseInt(args[0]);
type = Material.getMaterial(id);
if (args.length == 2) {
try {
exid = Integer.parseInt(args[1]);
} catch (NumberFormatException e) {
if (Material.SKULL_ITEM.equals(type)) {
exid = 3;
skullOwner = args[1];
} else {
e.printStackTrace();
}
}
}
}
if (type != null) {
ItemStack item = new ItemStack(type, 1, (short) 0, (byte) exid);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(StrUtil.messageFormat(ppb.getDisplayName() + "§r(" + name + ")"));
List<String> lores = new ArrayList<String>();
for (String lore : ppb.getLores()) {
lores.add(StrUtil.messageFormat(lore));
}
lores.add("");
meta.setLore(lores);
item.setItemMeta(meta);
if (ppb.getGlowing() && !meta.hasEnchants()) {
item = ItemUtil.addEnchantLight(item);
}
if (skullOwner != null) {
item = ItemUtil.addSkullOwner(item, skullOwner);
}
return item;
}
}
return null;
}
private ItemStack getPackageItem(String name, PermissionPackageBean ppb) {
if (ppb != null) {
Material type = null;
int exid = 0;
String skullOwner = null;
if (ppb.getType() != null) {
String[] args = ppb.getType().split(":");
type = Material.getMaterial(args[0].toUpperCase(Locale.ENGLISH));
if (args.length == 2) {
try {
exid = Integer.parseInt(args[1]);
} catch (NumberFormatException e) {
if (Material.SKULL_ITEM.equals(type)) {
exid = 3;
skullOwner = args[1];
} else {
e.printStackTrace();
}
}
}
} else if (ppb.getId() != null) {
String[] args = ppb.getId().split(":");
int id = Integer.parseInt(args[0]);
type = Material.getMaterial(id);
if (args.length == 2) {
try {
exid = Integer.parseInt(args[1]);
} catch (NumberFormatException e) {
if (Material.SKULL_ITEM.equals(type)) {
exid = 3;
skullOwner = args[1];
} else {
e.printStackTrace();
}
}
}
}
if (type != null) {
ItemStack item = new ItemStack(type, 1, (short) 0, (byte) exid);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(StrUtil.messageFormat(ppb.getDisplayName() + "§r(" + name + ")"));
List<String> lores = new ArrayList<String>();
for (String lore : ppb.getLores()) {
lores.add(StrUtil.messageFormat(lore));
}
lores.add("");
meta.setLore(lores);
item.setItemMeta(meta);
if (ppb.getGlowing() && !meta.hasEnchants()) {
item = ItemUtil.addEnchantLight(item);
}
if (skullOwner != null) {
item = ItemUtil.addSkullOwner(item, skullOwner);
}
return item;
}
}
return null;
}
}

View File

@ -21,7 +21,7 @@ public class PlayerPermissionShow {
Inventory inventory = null;
int size = 0;
if (pdbList.size() > 0) {
inventory = Bukkit.createInventory(null, (pdbList.size() % 9 == 0 ? pdbList.size() : (pdbList.size() / 9 + 1) * 9), StrUtil.messageFormat(LangCfg.TAG_INVENTORY_NAME + "§r§5§9§2§0§r"));
inventory = Bukkit.createInventory(null, (pdbList.size() % 9 == 0 ? pdbList.size() : (pdbList.size() / 9 + 1) * 9), StrUtil.messageFormat(LangCfg.TAG_INVENTORY_NAME + "§r§5§9§2§0§r"));
for (PlayerDataBean pdb : pdbList) {
PermissionPackageBean ppb = PackagesCfg.PACKAGES.get(pdb.getPackageName());
if (ppb != null && pdb.getGlobal() == ppb.getGlobal()) {

View File

@ -17,11 +17,11 @@ import gg.frog.mc.base.utils.StrUtil;
import gg.frog.mc.permissionstime.model.cfg.PermissionPackageBean;
import gg.frog.mc.permissionstime.model.db.PlayerDataBean;
public class MainListener implements Listener {
public class PtListener implements Listener {
private PluginMain pm;
public MainListener(PluginMain pm) {
public PtListener(PluginMain pm) {
this.pm = pm;
}
@ -74,7 +74,7 @@ public class MainListener implements Listener {
@EventHandler
public void onPlayerClick(InventoryClickEvent event) {
if (StrUtil.messageFormat(LangCfg.INVENTORY_NAME + "§r§5§9§2§0§r").equals(event.getInventory().getName())) {
if (StrUtil.messageFormat(LangCfg.INVENTORY_NAME + "§r§5§9§2§0§r").equals(event.getInventory().getName())) {
event.setCancelled(true);
}
}