1
1
mirror of https://github.com/geekfrog/PermissionsTime.git synced 2025-09-06 02:56:58 +00:00

初始化

This commit is contained in:
GeekFrog
2017-07-06 18:17:54 +08:00
parent 19bb895634
commit 0f83a6c50c
14 changed files with 1132 additions and 0 deletions

View File

@ -0,0 +1,57 @@
package gg.frog.mc.permissionstime;
import java.util.Locale;
import java.util.logging.Logger;
import org.bukkit.plugin.java.JavaPlugin;
import gg.frog.mc.permissionstime.command.TheCommand;
import gg.frog.mc.permissionstime.config.ConfigManager;
import gg.frog.mc.permissionstime.config.PluginCfg;
import gg.frog.mc.permissionstime.listener.TheListener;
import gg.frog.mc.permissionstime.utils.StrUtil;
public class PluginMain extends JavaPlugin {
public static final String PLUGIN_NAME = "PermissionsTime";
public static final String PLUGIN_VERSION = "0.0.1";
public static final String PLUGIN_NAME_LOWER_CASE = PLUGIN_NAME.toLowerCase(Locale.ENGLISH);
public static final Logger LOG = Logger.getLogger(PluginMain.PLUGIN_NAME);
private static PluginMain pm = null;
private ConfigManager cm = null;
@Override
public void onEnable() {
PluginMain.pm = this;
registerListeners();
registerCommands();
cm = new ConfigManager(this);
pm.getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "==============================="));
pm.getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + " " + PluginMain.PLUGIN_NAME + " v" + PluginMain.PLUGIN_VERSION));
pm.getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX));
}
public static PluginMain getInstance() {
return pm;
}
/**
* 注册监听器 <br/>
* 这里可以注册多个
*/
private void registerListeners() {
this.getServer().getPluginManager().registerEvents(new TheListener(), this);
}
/**
* 注册命令 <br/>
* 这里可以注册多个,一般注册一个就够用
*/
private void registerCommands() {
this.getCommand(PLUGIN_NAME_LOWER_CASE).setExecutor(new TheCommand());
}
public ConfigManager getConfigManager() {
return cm;
}
}

View File

@ -0,0 +1,52 @@
package gg.frog.mc.permissionstime.command;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import gg.frog.mc.permissionstime.PluginMain;
import gg.frog.mc.permissionstime.config.LangCfg;
import gg.frog.mc.permissionstime.config.PluginCfg;
import gg.frog.mc.permissionstime.utils.StrUtil;
public class TheCommand implements CommandExecutor {
private PluginMain pm = PluginMain.getInstance();
@Override
public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {
if (commandLabel.equalsIgnoreCase(PluginMain.PLUGIN_NAME_LOWER_CASE)) {
boolean isPlayer = false;
if (sender instanceof Player) {
isPlayer = true;
}
if (args.length == 0) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "&a===== " + PluginMain.PLUGIN_NAME + " Version:" + PluginMain.PLUGIN_VERSION + " ====="));
if (!isPlayer || sender.isOp() || sender.hasPermission(PluginMain.PLUGIN_NAME_LOWER_CASE + ".reload")) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "/" + PluginMain.PLUGIN_NAME_LOWER_CASE + " reload -Reloads the config file."));
}
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX));
return true;
} else {
if (args[0].equalsIgnoreCase("reload")) {
if (isPlayer) {
Player player = (Player) sender;
if (sender.isOp() || player.hasPermission("quickdevdemo.reload")) {
pm.getConfigManager().reloadConfig();
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.CONFIG_RELOADED));
pm.getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.CONFIG_RELOADED));
} else {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.NO_PERMISSION));
}
} else {
pm.getConfigManager().reloadConfig();
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + LangCfg.CONFIG_RELOADED));
}
return true;
}
}
}
return false;
}
}

View File

@ -0,0 +1,37 @@
package gg.frog.mc.permissionstime.config;
import java.util.LinkedHashMap;
import java.util.Map;
import gg.frog.mc.permissionstime.PluginMain;
import gg.frog.mc.permissionstime.utils.PluginConfig;
/**
* 配置文件管理
*
* @author QiaoPengyu
*
*/
public class ConfigManager {
private PluginMain pm = PluginMain.getInstance();
private Map<String, PluginConfig> cfgMap = new LinkedHashMap<>();
public ConfigManager(PluginMain pm) {
// 添加到配置列表
this.cfgMap.put("plugin", new PluginCfg());
this.cfgMap.put("lang", new LangCfg());
}
public void reloadConfig() {
for (PluginConfig cfg : cfgMap.values()) {
cfg.reloadConfig();
}
}
public Map<String, PluginConfig> getCfgMap() {
return cfgMap;
}
}

View File

@ -0,0 +1,34 @@
package gg.frog.mc.permissionstime.config;
import gg.frog.mc.permissionstime.PluginMain;
import gg.frog.mc.permissionstime.utils.PluginConfig;
/**
* 语言支持
*
* @author QiaoPengyu
*
*/
public class LangCfg extends PluginConfig {
private PluginMain pm = PluginMain.getInstance();
public static String NO_PERMISSION = null;
public static String CONFIG_RELOADED = null;
public LangCfg() {
super("lang/zh-cn.yml");
}
@Override
protected void init() {
saveConfig();
}
@Override
protected void loadToDo() {
NO_PERMISSION = getConfig().getString("nopermission","&4你没有权限这么做");
CONFIG_RELOADED = getConfig().getString("configReloaded","&a配置重载完成");
}
}

View File

@ -0,0 +1,36 @@
package gg.frog.mc.permissionstime.config;
import gg.frog.mc.permissionstime.PluginMain;
import gg.frog.mc.permissionstime.utils.PluginConfig;
/**
* 插件默认配置
*
* @author QiaoPengyu
*
*/
public class PluginCfg extends PluginConfig {
private static PluginMain pm = PluginMain.getInstance();
public static String PLUGIN_PREFIX = null;
public static Boolean IS_DEBUG = null;
public PluginCfg() {
super();
}
@Override
protected void init() {
getConfig().set("debug", false);
saveConfig();
}
@Override
protected void loadToDo() {
PLUGIN_PREFIX = (String)getConfig().get("pluginPrefix","&b["+PluginMain.PLUGIN_NAME+"]&r");
IS_DEBUG = getConfig().getBoolean("debug", false);
}
}

View File

@ -0,0 +1,35 @@
package gg.frog.mc.permissionstime.listener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import gg.frog.mc.permissionstime.PluginMain;
public class TheListener implements Listener {
private PluginMain pm = PluginMain.getInstance();
/**
* 一个监听器例子
*
* @param e
*/
@EventHandler
public void onJoin(PlayerJoinEvent e) {
pm.getServer().broadcastMessage("[" + e.getPlayer().getName() + "]进入了服务器!");
e.setJoinMessage("[" + e.getPlayer().getName() + "]进入了服务器!");
}
@EventHandler
public void onQuit(PlayerQuitEvent e) {
pm.getServer().broadcastMessage("[" + e.getPlayer().getName() + "]退出了服务器!");
}
@EventHandler
public void onKick(PlayerKickEvent e) {
pm.getServer().broadcastMessage("[" + e.getPlayer().getName() + "]被踢出了服务器!");
}
}

View File

@ -0,0 +1,124 @@
package gg.frog.mc.permissionstime.utils;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.logging.Level;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import com.google.common.base.Charsets;
import gg.frog.mc.permissionstime.PluginMain;
/**
* 配置操作
*
* @author QiaoPengyu
*
*/
public abstract class PluginConfig {
private PluginMain pm = PluginMain.getInstance();
private FileConfiguration config = null;
private File folder = null;
private String fileName = null;
private File configFile = null;
protected PluginConfig() {
initConfig(pm.getDataFolder(), "config.yml");
}
protected PluginConfig(String fileName) {
initConfig(pm.getDataFolder(), fileName);
}
protected PluginConfig(File folder, String fileName) {
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();
} else {
reloadConfig();
}
}
/**
* 首次生成文件调用
*/
protected abstract void init();
/**
* 加载配置后调用
*/
protected abstract void loadToDo();
/**
* 获取配置(首次)
*
* @return
*/
private FileConfiguration getConfig(File folder, String fileName) {
if (config == null) {
reloadConfig(folder, fileName);
}
return config;
}
/**
* 获取配置
*
* @return
*/
protected FileConfiguration getConfig() {
return config;
}
/**
* 保存配置
*/
public void saveConfig() {
try {
getConfig().save(configFile);
reloadConfig();
} catch (IOException ex) {
PluginMain.LOG.log(Level.SEVERE, "Could not save config to " + configFile, ex);
}
}
/**
* 配置重载
*/
public void reloadConfig() {
reloadConfig(folder, fileName);
}
/**
* 配置重载
*/
private void reloadConfig(File folder, String fileName) {
config = YamlConfiguration.loadConfiguration(configFile);
final InputStream defConfigStream = PluginMain.getInstance().getResource(fileName);
if (defConfigStream == null) {
return;
}
config.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(defConfigStream, Charsets.UTF_8)));
loadToDo();
}
}

View File

@ -0,0 +1,10 @@
package gg.frog.mc.permissionstime.utils;
import java.text.MessageFormat;
public class StrUtil {
public static String messageFormat(String src, Object... args){
return MessageFormat.format(src.replace("&", "§"), args);
}
}

1
src/resources/config.yml Normal file
View File

@ -0,0 +1 @@
pluginPrefix: '&b[&4插件前缀&b]&r'

View File

@ -0,0 +1,2 @@
nopermission: '&4你没有权限这么做'
configReloaded: '&a配置重载完成'

13
src/resources/plugin.yml Normal file
View File

@ -0,0 +1,13 @@
name: QuickDevDemo
main: gg.frog.mc.quickdevdemo.PluginMain
version: 0.0.1
author: GeekFrog
commands:
quickdevdemo:
description: Show all commands.
permissions:
quickdevdemo.reload:
description: Reloads the config file.
default: false