mirror of
https://github.com/geekfrog/PermissionsTime.git
synced 2025-09-06 02:56:58 +00:00
初始化
This commit is contained in:
57
src/main/gg/frog/mc/permissionstime/PluginMain.java
Normal file
57
src/main/gg/frog/mc/permissionstime/PluginMain.java
Normal 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;
|
||||
}
|
||||
}
|
52
src/main/gg/frog/mc/permissionstime/command/TheCommand.java
Normal file
52
src/main/gg/frog/mc/permissionstime/command/TheCommand.java
Normal 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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
34
src/main/gg/frog/mc/permissionstime/config/LangCfg.java
Normal file
34
src/main/gg/frog/mc/permissionstime/config/LangCfg.java
Normal 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配置重载完成");
|
||||
}
|
||||
|
||||
}
|
36
src/main/gg/frog/mc/permissionstime/config/PluginCfg.java
Normal file
36
src/main/gg/frog/mc/permissionstime/config/PluginCfg.java
Normal 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);
|
||||
}
|
||||
|
||||
}
|
@ -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() + "]被踢出了服务器!");
|
||||
}
|
||||
}
|
124
src/main/gg/frog/mc/permissionstime/utils/PluginConfig.java
Normal file
124
src/main/gg/frog/mc/permissionstime/utils/PluginConfig.java
Normal 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();
|
||||
}
|
||||
}
|
10
src/main/gg/frog/mc/permissionstime/utils/StrUtil.java
Normal file
10
src/main/gg/frog/mc/permissionstime/utils/StrUtil.java
Normal 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
1
src/resources/config.yml
Normal file
@ -0,0 +1 @@
|
||||
pluginPrefix: '&b[&4插件前缀&b]&r'
|
2
src/resources/lang/zh-cn.yml
Normal file
2
src/resources/lang/zh-cn.yml
Normal file
@ -0,0 +1,2 @@
|
||||
nopermission: '&4你没有权限这么做'
|
||||
configReloaded: '&a配置重载完成'
|
13
src/resources/plugin.yml
Normal file
13
src/resources/plugin.yml
Normal 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
|
Reference in New Issue
Block a user