1
1
mirror of https://github.com/geekfrog/PermissionsTime.git synced 2024-11-22 15:48:51 +00:00

添加查看自身权限包功能

This commit is contained in:
GeekFrog 2017-07-13 23:19:09 +08:00
parent e0e3ce448c
commit a545520d58
14 changed files with 150 additions and 11 deletions

View File

@ -11,7 +11,7 @@
- **时间可以累加** - **时间可以累加**
- **支持重载** - **支持重载**
- **支持UUID** - **支持UUID**
- 命令支持给玩家**添加****设置****移除**、查询自身权限包时间 - **命令支持给玩家添加、设置、移除、查询自身权限包时间**
- 添加、设置、移除-命令执行失败记录 - 添加、设置、移除-命令执行失败记录
- 手动删除过期的数据 - 手动删除过期的数据
- 调用vault API 设置玩家权限(登录时、游戏中、退出时) - 调用vault API 设置玩家权限(登录时、游戏中、退出时)

View File

@ -6,6 +6,12 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import gg.frog.mc.permissionstime.PluginMain; import gg.frog.mc.permissionstime.PluginMain;
import gg.frog.mc.permissionstime.command.packages.GiveCmd;
import gg.frog.mc.permissionstime.command.packages.MeCmd;
import gg.frog.mc.permissionstime.command.packages.PackagesCmd;
import gg.frog.mc.permissionstime.command.packages.RemoveAllCmd;
import gg.frog.mc.permissionstime.command.packages.RemoveCmd;
import gg.frog.mc.permissionstime.command.packages.SetCmd;
import gg.frog.mc.permissionstime.config.LangCfg; import gg.frog.mc.permissionstime.config.LangCfg;
import gg.frog.mc.permissionstime.config.PluginCfg; import gg.frog.mc.permissionstime.config.PluginCfg;
import gg.frog.mc.permissionstime.database.SqlManager; import gg.frog.mc.permissionstime.database.SqlManager;
@ -33,6 +39,7 @@ public class MainCommand implements CommandExecutor {
return true; return true;
} else { } else {
if (args[0].equalsIgnoreCase("reload")) { if (args[0].equalsIgnoreCase("reload")) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "执行中,请等待..."));
if (isPlayer) { if (isPlayer) {
Player player = (Player) sender; Player player = (Player) sender;
if (sender.isOp() || player.hasPermission("permissionstime.reload")) { if (sender.isOp() || player.hasPermission("permissionstime.reload")) {
@ -55,8 +62,8 @@ public class MainCommand implements CommandExecutor {
return true; return true;
} else if (args[0].equalsIgnoreCase("me")) { } else if (args[0].equalsIgnoreCase("me")) {
if (hasPermission(sender, isPlayer, "permissionstime.me")) { if (hasPermission(sender, isPlayer, "permissionstime.me")) {
GiveCmd giveCmd = new GiveCmd(pm, sender, args); MeCmd meCmd = new MeCmd(pm, sender, isPlayer, args);
new Thread(giveCmd).start(); new Thread(meCmd).start();
} }
} else if (args[0].equalsIgnoreCase("give")) { } else if (args[0].equalsIgnoreCase("give")) {
if (hasPermission(sender, isPlayer, "permissionstime.give")) { if (hasPermission(sender, isPlayer, "permissionstime.give")) {

View File

@ -1,4 +1,4 @@
package gg.frog.mc.permissionstime.command; package gg.frog.mc.permissionstime.command.packages;
import java.util.UUID; import java.util.UUID;
@ -47,6 +47,7 @@ public class GiveCmd implements Runnable {
if (pack != null) { if (pack != null) {
OfflinePlayer player = pm.getOfflinePlayer(playerName); OfflinePlayer player = pm.getOfflinePlayer(playerName);
if (player != null) { if (player != null) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "执行中,请等待..."));
UUID uuid = player.getUniqueId(); UUID uuid = player.getUniqueId();
if (PluginCfg.IS_DEBUG) { if (PluginCfg.IS_DEBUG) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + uuid.toString() + "\n" + pack.toString() + "\n" + time + "")); sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + uuid.toString() + "\n" + pack.toString() + "\n" + time + ""));

View File

@ -0,0 +1,57 @@
package gg.frog.mc.permissionstime.command.packages;
import java.util.List;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import gg.frog.mc.permissionstime.PluginMain;
import gg.frog.mc.permissionstime.config.PackagesCfg;
import gg.frog.mc.permissionstime.config.PluginCfg;
import gg.frog.mc.permissionstime.database.SqlManager;
import gg.frog.mc.permissionstime.model.cfg.PermissionPackageBean;
import gg.frog.mc.permissionstime.model.db.PlayerDataBean;
import gg.frog.mc.permissionstime.utils.StrUtil;
public class MeCmd implements Runnable {
private PluginMain pm;
private SqlManager sm;
private String[] args;
private CommandSender sender;
private boolean isPlayer;
public MeCmd(PluginMain pm, CommandSender sender, boolean isPlayer, String[] args) {
this.pm = pm;
this.sm = pm.getSqlManager();
this.sender = sender;
this.isPlayer = isPlayer;
this.args = args;
}
@Override
public void run() {
if (isPlayer) {
if (args.length < 2) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "执行中,请等待..."));
// String page = args[1];
Player p = (Player) sender;
List<PlayerDataBean> ps = sm.getTime(p.getUniqueId().toString());
if (ps.size() > 0) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "=====你共有{0}种权限包=====", ps.size()));
for (PlayerDataBean pdb : ps) {
PermissionPackageBean pc = PackagesCfg.PACKAGES.get(pdb.getPackageName());
String expireString = StrUtil.timestampToString(pdb.getExpire());
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "权限包: {0}({1}), 到期时间: {2}", pc.getDisplayName(), pdb.getPackageName(), expireString));
}
} else {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "暂时无数据"));
}
} else {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "参数不正确"));
}
} else {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "此命令只能玩家执行"));
}
}
}

View File

@ -1,4 +1,4 @@
package gg.frog.mc.permissionstime.command; package gg.frog.mc.permissionstime.command.packages;
import java.util.Map.Entry; import java.util.Map.Entry;

View File

@ -1,4 +1,4 @@
package gg.frog.mc.permissionstime.command; package gg.frog.mc.permissionstime.command.packages;
import java.util.UUID; import java.util.UUID;
@ -29,6 +29,7 @@ public class RemoveAllCmd implements Runnable {
String playerName = args[1]; String playerName = args[1];
UUID uuid = pm.getPlayerUUIDByName(playerName); UUID uuid = pm.getPlayerUUIDByName(playerName);
if (uuid != null) { if (uuid != null) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "执行中,请等待..."));
if (PluginCfg.IS_DEBUG) { if (PluginCfg.IS_DEBUG) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + uuid.toString())); sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + uuid.toString()));
} }

View File

@ -1,4 +1,4 @@
package gg.frog.mc.permissionstime.command; package gg.frog.mc.permissionstime.command.packages;
import java.util.UUID; import java.util.UUID;
@ -34,6 +34,7 @@ public class RemoveCmd implements Runnable {
if (pack != null) { if (pack != null) {
UUID uuid = pm.getPlayerUUIDByName(playerName); UUID uuid = pm.getPlayerUUIDByName(playerName);
if (uuid != null) { if (uuid != null) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "执行中,请等待..."));
if (PluginCfg.IS_DEBUG) { if (PluginCfg.IS_DEBUG) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + uuid.toString() + "\n" + pack.toString())); sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + uuid.toString() + "\n" + pack.toString()));
} }

View File

@ -1,4 +1,4 @@
package gg.frog.mc.permissionstime.command; package gg.frog.mc.permissionstime.command.packages;
import java.util.UUID; import java.util.UUID;
@ -46,6 +46,7 @@ public class SetCmd implements Runnable {
if (pack != null) { if (pack != null) {
UUID uuid = pm.getPlayerUUIDByName(playerName); UUID uuid = pm.getPlayerUUIDByName(playerName);
if (uuid != null) { if (uuid != null) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "执行中,请等待..."));
if (PluginCfg.IS_DEBUG) { if (PluginCfg.IS_DEBUG) {
sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + uuid.toString() + "\n" + pack.toString() + "\n" + time + "")); sender.sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + uuid.toString() + "\n" + pack.toString() + "\n" + time + ""));
} }

View File

@ -45,7 +45,7 @@ public interface IPlayerDataService {
* @return * @return
*/ */
List<PlayerDataBean> queryPlayerData(String uuid) throws Exception; List<PlayerDataBean> queryPlayerData(String uuid) throws Exception;
PlayerDataBean queryPlayerData(String uuid, String packageName) throws Exception; PlayerDataBean queryPlayerData(String uuid, String packageName) throws Exception;
List<PlayerDataBean> queryNotExpirePlayerData(String uuid) throws Exception;
} }

View File

@ -1,8 +1,12 @@
package gg.frog.mc.permissionstime.database; package gg.frog.mc.permissionstime.database;
import java.util.Collections;
import java.util.List;
import gg.frog.mc.permissionstime.PluginMain; import gg.frog.mc.permissionstime.PluginMain;
import gg.frog.mc.permissionstime.config.PluginCfg; import gg.frog.mc.permissionstime.config.PluginCfg;
import gg.frog.mc.permissionstime.database.impl.SqlitePlayerDataService; import gg.frog.mc.permissionstime.database.impl.SqlitePlayerDataService;
import gg.frog.mc.permissionstime.model.db.PlayerDataBean;
import gg.frog.mc.permissionstime.utils.StrUtil; import gg.frog.mc.permissionstime.utils.StrUtil;
import lib.PatPeter.SQLibrary.Database; import lib.PatPeter.SQLibrary.Database;
import lib.PatPeter.SQLibrary.MySQL; import lib.PatPeter.SQLibrary.MySQL;
@ -45,6 +49,17 @@ public class SqlManager {
return false; return false;
} }
public List<PlayerDataBean> getTime(String uuid) {
for (int i = 0; i < 3; i++) {
try {
return pds.queryNotExpirePlayerData(uuid);
} catch (Exception e) {
e.printStackTrace();
}
}
return Collections.emptyList();
}
public boolean giveTime(String uuid, String packageName, int days) { public boolean giveTime(String uuid, String packageName, int days) {
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
try { try {

View File

@ -150,6 +150,28 @@ public class SqlitePlayerDataService extends DatabaseUtil implements IPlayerData
} }
} }
@Override
public List<PlayerDataBean> queryNotExpirePlayerData(String uuid) throws Exception {
long now = new Date().getTime();
String sql = "SELECT * FROM \"playerData\" where (\"uuid\"='" + uuid + "' AND \"expire\" > " + now + ");";
try {
List<PlayerDataBean> pdbList = new ArrayList<>();
ResultSet rs = getDB().query(sql);
while (rs.next()) {
long tid = rs.getLong("id");
String tuuid = rs.getString("uuid");
String tpackageName = rs.getString("packageName");
long texpire = rs.getLong("expire");
PlayerDataBean tpd = new PlayerDataBean(tid, tuuid, tpackageName, texpire);
pdbList.add(tpd);
}
return pdbList;
} catch (Exception e) {
pm.getServer().getConsoleSender().sendMessage(StrUtil.messageFormat(PluginCfg.PLUGIN_PREFIX + "无法查询UUID: {0} 的数据", uuid));
throw e;
}
}
@Override @Override
public boolean delPlayData(String uuid) throws Exception { public boolean delPlayData(String uuid) throws Exception {
String sql = "DELETE FROM \"main\".\"playerData\" WHERE (\"uuid\"='" + uuid + "');"; String sql = "DELETE FROM \"main\".\"playerData\" WHERE (\"uuid\"='" + uuid + "');";

View File

@ -18,6 +18,8 @@ public class PermissionPackageBean implements IConfigBean {
private String displayName = null; private String displayName = null;
private Integer days = null; private Integer days = null;
private Boolean global = null;
private List<String> worlds = new ArrayList<>();
private List<String> permissions = new ArrayList<>(); private List<String> permissions = new ArrayList<>();
private List<String> groups = new ArrayList<>(); private List<String> groups = new ArrayList<>();
private List<String> prefixs = new ArrayList<>(); private List<String> prefixs = new ArrayList<>();
@ -39,6 +41,22 @@ public class PermissionPackageBean implements IConfigBean {
this.days = days; this.days = days;
} }
public Boolean getGlobal() {
return global;
}
public void setGlobal(Boolean global) {
this.global = global;
}
public List<String> getWorlds() {
return worlds;
}
public void setWorlds(List<String> worlds) {
this.worlds = worlds;
}
public List<String> getPermissions() { public List<String> getPermissions() {
return permissions; return permissions;
} }
@ -76,6 +94,8 @@ public class PermissionPackageBean implements IConfigBean {
YamlConfiguration config = new YamlConfiguration(); YamlConfiguration config = new YamlConfiguration();
config.set("displayName", displayName); config.set("displayName", displayName);
config.set("days", days); config.set("days", days);
config.set("global", global);
config.set("worlds", worlds);
config.set("permissions", permissions); config.set("permissions", permissions);
config.set("groups", groups); config.set("groups", groups);
config.set("prefixs", prefixs); config.set("prefixs", prefixs);
@ -90,6 +110,8 @@ public class PermissionPackageBean implements IConfigBean {
displayName = "No Name"; displayName = "No Name";
} }
days = config.getInt("days"); days = config.getInt("days");
global = config.getBoolean("global");
worlds = config.getStringList("worlds");
permissions = config.getStringList("permissions"); permissions = config.getStringList("permissions");
groups = config.getStringList("groups"); groups = config.getStringList("groups");
prefixs = config.getStringList("prefixs"); prefixs = config.getStringList("prefixs");
@ -98,6 +120,7 @@ public class PermissionPackageBean implements IConfigBean {
@Override @Override
public String toString() { public String toString() {
return "PermissionPackageBean [displayName=" + displayName + ", days=" + days + ", permissions=" + permissions + ", groups=" + groups + ", prefixs=" + prefixs + ", suffixs=" + suffixs + "]"; return "PermissionPackageBean [displayName=" + displayName + ", days=" + days + ", global=" + global + ", worlds=" + worlds + ", permissions=" + permissions + ", groups=" + groups + ", prefixs=" + prefixs + ", suffixs=" + suffixs + "]";
} }
} }

View File

@ -1,10 +1,17 @@
package gg.frog.mc.permissionstime.utils; package gg.frog.mc.permissionstime.utils;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StrUtil { public class StrUtil {
public static String messageFormat(String src, Object... args){ public static String messageFormat(String src, Object... args) {
return MessageFormat.format(src, args).replace("&", "§"); return MessageFormat.format(src, args).replace("&", "§");
} }
public static String timestampToString(long time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
return sdf.format(new Date(time));
}
} }

View File

@ -7,6 +7,10 @@ packages:
displayName: '权限包模板1' displayName: '权限包模板1'
#权限包时间(单位: 天) #权限包时间(单位: 天)
days: 10 days: 10
#是否跨服权限
global: false
#单世界权限需要修改
worlds: []
#权限包含有的权限 #权限包含有的权限
permissions: permissions:
- permission1 - permission1