mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-08-07 04:53:11 +00:00
GroupManager 1.1
Merge branch 'groupmanager' Conflicts: EssentialsGroupManager/src/plugin.yml EssentialsGroupManager/src/users.yml
This commit is contained in:
commit
1df79bc9f4
43 changed files with 1395 additions and 629 deletions
7
EssentialsGroupManager/.classpath
Normal file
7
EssentialsGroupManager/.classpath
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="lib" path="../lib/bukkit-0.0.1-SNAPSHOT.jar"/>
|
||||
<classpathentry kind="lib" path="../lib/craftbukkit-0.0.1-SNAPSHOT.jar"/>
|
||||
</classpath>
|
17
EssentialsGroupManager/.project
Normal file
17
EssentialsGroupManager/.project
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>EssentialsGroupManager</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -4,6 +4,19 @@ annotation.processing.run.all.processors=true
|
|||
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
|
||||
application.title=EssentialsGroupManager
|
||||
application.vendor=gabrielcouto
|
||||
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs=true
|
||||
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width=2
|
||||
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab=2
|
||||
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.tab-size=2
|
||||
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.text-limit-width=120
|
||||
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.text-line-wrap=none
|
||||
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.usedProfile=project
|
||||
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.expand-tabs=true
|
||||
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.indent-shift-width=4
|
||||
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.spaces-per-tab=4
|
||||
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.tab-size=4
|
||||
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.text-limit-width=120
|
||||
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.text-line-wrap=none
|
||||
build.classes.dir=${build.dir}/classes
|
||||
build.classes.excludes=**/*.java,**/*.form
|
||||
# This directory is removed when the project is cleaned:
|
||||
|
|
13
EssentialsGroupManager/src/Changelog.txt
Normal file
13
EssentialsGroupManager/src/Changelog.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
Changelog
|
||||
|
||||
v 1.1:
|
||||
- Fixed users being able to use 'manuadd' to add users to higher groups than their own.
|
||||
- Added SuperPerms support so GM will update and provide the permissions to plugins which only support Bukkit Perms.
|
||||
- Added more helpful output to errors on argument lengths.
|
||||
- GroupManager will now attempt to select the default world when using commands instead of failing and telling you to use '/manselect <world>'.
|
||||
- Invalid groups assigned to players in users.yml will no longer cause a crash. GM will now set them to the default group instead.
|
||||
- Fix for Users.yml containing only 'users:' causing a crash.
|
||||
- GroupManager will now generate a fresh Users and Groups yml if either file is empty.
|
||||
- Fix for an infinite loop bug with the new Bukkit Perms during a new user creation.
|
||||
v 1.2:
|
||||
- Fixed BukkitPerms population. Wasn't correctly setting superperms.
|
|
@ -7,7 +7,8 @@ settings:
|
|||
permission:
|
||||
world:
|
||||
mirror:
|
||||
world1:
|
||||
world:
|
||||
- world_nether
|
||||
- world2
|
||||
- world3
|
||||
world4:
|
||||
|
|
2
EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java
Normal file → Executable file
2
EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java
Normal file → Executable file
|
@ -117,4 +117,4 @@ public class GMConfiguration {
|
|||
}
|
||||
GroupManager.logger.setLevel(Level.INFO);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -5,6 +5,7 @@
|
|||
package org.anjocaido.groupmanager;
|
||||
|
||||
import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler;
|
||||
import org.anjocaido.groupmanager.permissions.BukkitPermissions;
|
||||
import org.anjocaido.groupmanager.utils.GroupManagerPermissions;
|
||||
import org.anjocaido.groupmanager.data.Variables;
|
||||
import org.anjocaido.groupmanager.data.User;
|
||||
|
@ -32,6 +33,7 @@ import org.bukkit.entity.Player;
|
|||
import org.bukkit.plugin.PluginDescriptionFile;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
/**
|
||||
*
|
||||
* @author gabrielcouto
|
||||
|
@ -44,15 +46,23 @@ public class GroupManager extends JavaPlugin {
|
|||
private ScheduledThreadPoolExecutor scheduler;
|
||||
private Map<String, ArrayList<User>> overloadedUsers = new HashMap<String, ArrayList<User>>();
|
||||
private Map<CommandSender, String> selectedWorlds = new HashMap<CommandSender, String>();
|
||||
private WorldsHolder worldsHolder;
|
||||
private static WorldsHolder worldsHolder;
|
||||
private boolean validateOnlinePlayer = true;
|
||||
private boolean isReady = false;
|
||||
public static boolean isLoaded = false;
|
||||
private GMConfiguration config;
|
||||
private GMLoggerHandler ch;
|
||||
private GMLoggerHandler ch;
|
||||
public static BukkitPermissions BukkitPermissions;
|
||||
public static final Logger logger = Logger.getLogger(GroupManager.class.getName());
|
||||
|
||||
//PERMISSIONS FOR COMMAND BEING LOADED
|
||||
OverloadedWorldHolder dataHolder = null;
|
||||
AnjoPermissionsHandler permissionHandler = null;
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
isLoaded = false;
|
||||
|
||||
if (worldsHolder != null) {
|
||||
worldsHolder.saveChanges();
|
||||
}
|
||||
|
@ -60,7 +70,7 @@ public class GroupManager extends JavaPlugin {
|
|||
// EXAMPLE: Custom code, here we just output some info so we can check all is well
|
||||
PluginDescriptionFile pdfFile = this.getDescription();
|
||||
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is disabled!");
|
||||
GroupManager.logger.removeHandler(ch);
|
||||
GroupManager.logger.removeHandler(ch);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -81,8 +91,11 @@ public class GroupManager extends JavaPlugin {
|
|||
this.getServer().getPluginManager().disablePlugin(this);
|
||||
throw new IllegalStateException("An error ocurred while loading GroupManager");
|
||||
}
|
||||
|
||||
BukkitPermissions = new BukkitPermissions(this);
|
||||
|
||||
enableScheduler();
|
||||
isLoaded = true;
|
||||
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!");
|
||||
}
|
||||
|
||||
|
@ -109,7 +122,7 @@ public class GroupManager extends JavaPlugin {
|
|||
|
||||
@Override
|
||||
public void run() {
|
||||
GroupManager.this.worldsHolder.saveChanges();
|
||||
GroupManager.worldsHolder.saveChanges();
|
||||
}
|
||||
};
|
||||
scheduler = new ScheduledThreadPoolExecutor(1);
|
||||
|
@ -152,7 +165,7 @@ public class GroupManager extends JavaPlugin {
|
|||
worldsHolder.reloadAll();
|
||||
}
|
||||
|
||||
public WorldsHolder getWorldsHolder() {
|
||||
public static WorldsHolder getWorldsHolder() {
|
||||
return worldsHolder;
|
||||
}
|
||||
|
||||
|
@ -166,7 +179,7 @@ public class GroupManager extends JavaPlugin {
|
|||
}
|
||||
|
||||
/**
|
||||
* A simple interface, for ones that don't want to mess with overloading.
|
||||
* A simple interface, for ones that don't want to mess with overloading.
|
||||
* Yet it is affected by overloading. But seamless.
|
||||
* @return the dataholder with all information
|
||||
*/
|
||||
|
@ -176,8 +189,8 @@ public class GroupManager extends JavaPlugin {
|
|||
}
|
||||
|
||||
/**
|
||||
* Use this if you want to play with overloading.
|
||||
* @return a dataholder with overloading interface
|
||||
* Use this if you want to play with overloading.
|
||||
* @return a dataholder with overloading interface
|
||||
*/
|
||||
@Deprecated
|
||||
public OverloadedWorldHolder getOverloadedClassData() {
|
||||
|
@ -186,10 +199,11 @@ public class GroupManager extends JavaPlugin {
|
|||
|
||||
/**
|
||||
* Called when a command registered by this plugin is received.
|
||||
* @param sender
|
||||
* @param cmd
|
||||
* @param sender
|
||||
* @param cmd
|
||||
* @param args
|
||||
*/
|
||||
@SuppressWarnings({"null", "deprecation"})
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
boolean playerCanDo = false;
|
||||
|
@ -212,8 +226,8 @@ public class GroupManager extends JavaPlugin {
|
|||
}
|
||||
|
||||
//PERMISSIONS FOR COMMAND BEING LOADED
|
||||
OverloadedWorldHolder dataHolder = null;
|
||||
AnjoPermissionsHandler permissionHandler = null;
|
||||
dataHolder = null;
|
||||
permissionHandler = null;
|
||||
|
||||
if (senderPlayer != null) {
|
||||
dataHolder = worldsHolder.getWorldData(senderPlayer);
|
||||
|
@ -246,9 +260,9 @@ public class GroupManager extends JavaPlugin {
|
|||
} catch (Exception e) {
|
||||
//this error happened once with someone. now im prepared... i think
|
||||
GroupManager.logger.severe("===================================================");
|
||||
GroupManager.logger.severe("= ERROR REPORT START =");
|
||||
GroupManager.logger.severe("= ERROR REPORT START =");
|
||||
GroupManager.logger.severe("===================================================");
|
||||
GroupManager.logger.severe("= COPY AND PASTE THIS TO GROUPMANAGER DEVELOPER =");
|
||||
GroupManager.logger.severe("= COPY AND PASTE THIS TO GROUPMANAGER DEVELOPER =");
|
||||
GroupManager.logger.severe("===================================================");
|
||||
GroupManager.logger.severe(this.getDescription().getName());
|
||||
GroupManager.logger.severe(this.getDescription().getVersion());
|
||||
|
@ -265,7 +279,7 @@ public class GroupManager extends JavaPlugin {
|
|||
GroupManager.logger.severe(val.name());
|
||||
}
|
||||
GroupManager.logger.severe("===================================================");
|
||||
GroupManager.logger.severe("= ERROR REPORT ENDED =");
|
||||
GroupManager.logger.severe("= ERROR REPORT ENDED =");
|
||||
GroupManager.logger.severe("===================================================");
|
||||
sender.sendMessage("An error occurred. Ask the admin to take a look at the console.");
|
||||
}
|
||||
|
@ -275,13 +289,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manuadd:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <player> <group>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -301,11 +314,29 @@ public class GroupManager extends JavaPlugin {
|
|||
sender.sendMessage(ChatColor.RED + "Group not found!");
|
||||
return false;
|
||||
}
|
||||
|
||||
//VALIDANDO PERMISSAO
|
||||
if (!isConsole && !senderPlayer.isOp() && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) {
|
||||
sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher.");
|
||||
return false;
|
||||
}
|
||||
if (!isConsole && !senderPlayer.isOp() && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) {
|
||||
sender.sendMessage(ChatColor.RED + "The destination group can't be the same as yours, or higher.");
|
||||
return false;
|
||||
}
|
||||
if (!isConsole && !senderPlayer.isOp() && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) {
|
||||
sender.sendMessage(ChatColor.RED + "Can't modify player involving a group that you don't inherit.");
|
||||
return false;
|
||||
}
|
||||
if (!isConsole && !senderPlayer.isOp() && (!permissionHandler.hasGroupInInheritance(auxUser.getGroup(), auxGroup.getName()) && !permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) {
|
||||
sender.sendMessage(ChatColor.RED + "Can't modify player using groups with different heritage line.");
|
||||
return false;
|
||||
}
|
||||
if (!isConsole && !senderPlayer.isOp() && (!permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) {
|
||||
sender.sendMessage(ChatColor.RED + "The new group must be a higher rank.");
|
||||
return false;
|
||||
}
|
||||
|
||||
//PARECE OK
|
||||
auxUser.setGroup(auxGroup);
|
||||
sender.sendMessage(ChatColor.YELLOW + "You changed player '" + auxUser.getName() + "' group to '" + auxGroup.getName() + "'.");
|
||||
|
@ -315,13 +346,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manudel:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <player>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -349,13 +379,15 @@ public class GroupManager extends JavaPlugin {
|
|||
case manuaddsub:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender)) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <player> <group>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -388,13 +420,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manudelsub:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/manudelsub <user> <group>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -422,13 +453,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case mangadd:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <group>)");
|
||||
return false;
|
||||
}
|
||||
auxGroup = dataHolder.getGroup(args[0]);
|
||||
|
@ -444,13 +474,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case mangdel:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <group>)");
|
||||
return false;
|
||||
}
|
||||
auxGroup = dataHolder.getGroup(args[0]);
|
||||
|
@ -466,13 +495,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manuaddp:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <player> <permission>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -531,13 +559,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manudelp:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <player> <permission>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -583,13 +610,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manulistp:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <player>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -638,13 +664,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manucheckp:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <player> <permission>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -686,13 +711,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case mangaddp:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <group> <permission>)");
|
||||
return false;
|
||||
}
|
||||
auxGroup = dataHolder.getGroup(args[0]);
|
||||
|
@ -740,12 +764,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case mangdelp:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <group> <permission>)");
|
||||
return false;
|
||||
}
|
||||
auxGroup = dataHolder.getGroup(args[0]);
|
||||
|
@ -779,13 +803,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manglistp:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <group>)");
|
||||
return false;
|
||||
}
|
||||
auxGroup = dataHolder.getGroup(args[0]);
|
||||
|
@ -828,13 +851,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case mangcheckp:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <group> <permission>)");
|
||||
return false;
|
||||
}
|
||||
auxGroup = dataHolder.getGroup(args[0]);
|
||||
|
@ -863,13 +885,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case mangaddi:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <group1> <group2>)");
|
||||
return false;
|
||||
}
|
||||
auxGroup = dataHolder.getGroup(args[0]);
|
||||
|
@ -889,19 +910,18 @@ public class GroupManager extends JavaPlugin {
|
|||
}
|
||||
//PARECE OK
|
||||
auxGroup.addInherits(auxGroup2);
|
||||
sender.sendMessage(ChatColor.RED + "Group " + auxGroup2.getName() + " is now in " + auxGroup.getName() + " inheritance list.");
|
||||
sender.sendMessage(ChatColor.RED + "Group " + auxGroup2.getName() + " is now in " + auxGroup.getName() + " inheritance list.");
|
||||
|
||||
return true;
|
||||
case mangdeli:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <group1> <group2>)");
|
||||
return false;
|
||||
}
|
||||
auxGroup = dataHolder.getGroup(args[0]);
|
||||
|
@ -925,19 +945,18 @@ public class GroupManager extends JavaPlugin {
|
|||
}
|
||||
//PARECE OK
|
||||
auxGroup.removeInherits(auxGroup2.getName());
|
||||
sender.sendMessage(ChatColor.RED + "Group " + auxGroup2.getName() + " was removed from " + auxGroup.getName() + " inheritance list.");
|
||||
sender.sendMessage(ChatColor.RED + "Group " + auxGroup2.getName() + " was removed from " + auxGroup.getName() + " inheritance list.");
|
||||
|
||||
return true;
|
||||
case manuaddv:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length < 3) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <user> <variable> <value>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -967,13 +986,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manudelv:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <user> <variable>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -999,13 +1017,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manulistv:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <user>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -1037,13 +1054,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manucheckv:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <user> <variable>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -1080,13 +1096,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case mangaddv:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length < 3) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <group> <variable> <value>)");
|
||||
return false;
|
||||
}
|
||||
auxGroup = dataHolder.getGroup(args[0]);
|
||||
|
@ -1110,13 +1125,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case mangdelv:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <group> <variable>)");
|
||||
return false;
|
||||
}
|
||||
auxGroup = dataHolder.getGroup(args[0]);
|
||||
|
@ -1136,13 +1150,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manglistv:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <group>)");
|
||||
return false;
|
||||
}
|
||||
auxGroup = dataHolder.getGroup(args[0]);
|
||||
|
@ -1174,13 +1187,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case mangcheckv:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <group> <variable>)");
|
||||
return false;
|
||||
}
|
||||
auxGroup = dataHolder.getGroup(args[0]);
|
||||
|
@ -1202,13 +1214,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manwhois:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <player>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -1237,13 +1248,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case tempadd:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <player>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -1276,13 +1286,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case tempdel:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 1) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <player>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -1317,9 +1326,8 @@ public class GroupManager extends JavaPlugin {
|
|||
case templist:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//WORKING
|
||||
auxString = "";
|
||||
|
@ -1347,9 +1355,8 @@ public class GroupManager extends JavaPlugin {
|
|||
case tempdelall:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//WORKING
|
||||
removeList = new ArrayList<User>();
|
||||
|
@ -1391,9 +1398,8 @@ public class GroupManager extends JavaPlugin {
|
|||
}
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//WORKING
|
||||
config.load();
|
||||
|
@ -1416,9 +1422,8 @@ public class GroupManager extends JavaPlugin {
|
|||
case listgroups:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//WORKING
|
||||
auxString = "";
|
||||
|
@ -1433,13 +1438,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case manpromote:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <player> <group>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -1489,13 +1493,12 @@ public class GroupManager extends JavaPlugin {
|
|||
case mandemote:
|
||||
//VALIDANDO ESTADO DO SENDER
|
||||
if (dataHolder == null || permissionHandler == null) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return true;
|
||||
if (!setDefaultWorldHandler(sender))
|
||||
return true;
|
||||
}
|
||||
//VALIDANDO ARGUMENTOS
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <player> <group>)");
|
||||
return false;
|
||||
}
|
||||
if (validateOnlinePlayer) {
|
||||
|
@ -1575,7 +1578,7 @@ public class GroupManager extends JavaPlugin {
|
|||
return true;
|
||||
case manselect:
|
||||
if (args.length < 1) {
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count!");
|
||||
sender.sendMessage(ChatColor.RED + "Review your arguments count! (/<command> <world>)");
|
||||
sender.sendMessage(ChatColor.YELLOW + "Worlds available: ");
|
||||
ArrayList<OverloadedWorldHolder> worlds = worldsHolder.allWorldsDataList();
|
||||
auxString = "";
|
||||
|
@ -1619,6 +1622,26 @@ public class GroupManager extends JavaPlugin {
|
|||
sender.sendMessage(ChatColor.RED + "You are not allowed to use that command.");
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up the default world for use.
|
||||
*/
|
||||
private boolean setDefaultWorldHandler(CommandSender sender) {
|
||||
|
||||
dataHolder = worldsHolder.getWorldData(worldsHolder.getDefaultWorld().getName());
|
||||
permissionHandler = dataHolder.getPermissionsHandler();
|
||||
selectedWorlds.put(sender, dataHolder.getName());
|
||||
|
||||
if ((dataHolder != null) && (permissionHandler != null)) {
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. Default world '" + worldsHolder.getDefaultWorld().getName() + "' selected.");
|
||||
return true;
|
||||
}
|
||||
|
||||
sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed.");
|
||||
sender.sendMessage(ChatColor.RED + "Use /manselect <world>");
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the config
|
||||
|
@ -1633,4 +1656,4 @@ public class GroupManager extends JavaPlugin {
|
|||
public File getBackupFolder() {
|
||||
return backupFolder;
|
||||
}
|
||||
}
|
||||
}
|
19
EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java
Normal file → Executable file
19
EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java
Normal file → Executable file
|
@ -27,7 +27,7 @@ public abstract class DataUnit {
|
|||
}
|
||||
|
||||
/**
|
||||
* Every group is matched only by their names and DataSources names.
|
||||
* Every group is matched only by their names and DataSources names.
|
||||
* @param o
|
||||
* @return true if they are equal. false if not.
|
||||
*/
|
||||
|
@ -49,9 +49,6 @@ public abstract class DataUnit {
|
|||
return hash;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return the dataSource
|
||||
*/
|
||||
|
@ -67,10 +64,10 @@ public abstract class DataUnit {
|
|||
}
|
||||
|
||||
public void flagAsChanged() {
|
||||
GroupManager.logger.finest("DataSource: "+getDataSource().getName()+" - DataUnit: "+getName()+" flagged as changed!");
|
||||
// for(StackTraceElement st: Thread.currentThread().getStackTrace()){
|
||||
// GroupManager.logger.finest(st.toString());
|
||||
// }
|
||||
GroupManager.logger.finest("DataSource: " + getDataSource().getName() + " - DataUnit: " + getName() + " flagged as changed!");
|
||||
// for(StackTraceElement st: Thread.currentThread().getStackTrace()){
|
||||
// GroupManager.logger.finest(st.toString());
|
||||
// }
|
||||
changed = true;
|
||||
}
|
||||
|
||||
|
@ -79,7 +76,7 @@ public abstract class DataUnit {
|
|||
}
|
||||
|
||||
public void flagAsSaved() {
|
||||
GroupManager.logger.finest("DataSource: "+getDataSource().getName()+" - DataUnit: "+getName()+" flagged as saved!");
|
||||
GroupManager.logger.finest("DataSource: " + getDataSource().getName() + " - DataUnit: " + getName() + " flagged as saved!");
|
||||
changed = false;
|
||||
}
|
||||
|
||||
|
@ -108,7 +105,7 @@ public abstract class DataUnit {
|
|||
return (ArrayList<String>) permissions.clone();
|
||||
}
|
||||
|
||||
public void sortPermissions(){
|
||||
public void sortPermissions() {
|
||||
Collections.sort(permissions, StringPermissionComparator.getInstance());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
package org.anjocaido.groupmanager.data;
|
||||
|
||||
import org.anjocaido.groupmanager.GroupManager;
|
||||
import org.anjocaido.groupmanager.dataholder.WorldDataHolder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
|
@ -30,18 +31,18 @@ public class Group extends DataUnit implements Cloneable {
|
|||
* @param name
|
||||
*/
|
||||
public Group(WorldDataHolder source, String name) {
|
||||
super(source,name);
|
||||
super(source, name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clone this group
|
||||
* Clone this group
|
||||
* @return a clone of this group
|
||||
*/
|
||||
@Override
|
||||
public Group clone() {
|
||||
Group clone = new Group(getDataSource(), this.getName());
|
||||
clone.inherits = ((ArrayList<String>) this.getInherits().clone());
|
||||
for(String perm: this.getPermissionList()){
|
||||
for (String perm : this.getPermissionList()) {
|
||||
clone.addPermission(perm);
|
||||
}
|
||||
clone.variables = ((GroupVariables) variables).clone(clone);
|
||||
|
@ -52,7 +53,7 @@ public class Group extends DataUnit implements Cloneable {
|
|||
/**
|
||||
* Use this to deliver a group from a different dataSource to another
|
||||
* @param dataSource
|
||||
* @return
|
||||
* @return Null or Clone
|
||||
*/
|
||||
public Group clone(WorldDataHolder dataSource) {
|
||||
if (dataSource.groupExists(this.getName())) {
|
||||
|
@ -60,7 +61,7 @@ public class Group extends DataUnit implements Cloneable {
|
|||
}
|
||||
Group clone = getDataSource().createGroup(this.getName());
|
||||
clone.inherits = ((ArrayList<String>) this.getInherits().clone());
|
||||
for(String perm: this.getPermissionList()){
|
||||
for (String perm : this.getPermissionList()) {
|
||||
clone.addPermission(perm);
|
||||
}
|
||||
clone.variables = variables.clone(clone);
|
||||
|
@ -79,7 +80,7 @@ public class Group extends DataUnit implements Cloneable {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param inherits the inherits to set
|
||||
* @param inherit the inherits to set
|
||||
*/
|
||||
public void addInherits(Group inherit) {
|
||||
if (!this.getDataSource().groupExists(inherit.getName())) {
|
||||
|
@ -89,6 +90,8 @@ public class Group extends DataUnit implements Cloneable {
|
|||
inherits.add(inherit.getName().toLowerCase());
|
||||
}
|
||||
flagAsChanged();
|
||||
if (GroupManager.isLoaded)
|
||||
GroupManager.BukkitPermissions.updateAllPlayers();
|
||||
}
|
||||
|
||||
public boolean removeInherits(String inherit) {
|
||||
|
@ -108,15 +111,17 @@ public class Group extends DataUnit implements Cloneable {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param varList
|
||||
*/
|
||||
public void setVariables(Map<String, Object> varList) {
|
||||
GroupVariables temp = new GroupVariables(this, varList);
|
||||
variables.clearVars();
|
||||
for(String key: temp.getVarKeyList()){
|
||||
for (String key : temp.getVarKeyList()) {
|
||||
variables.addVar(key, temp.getVarObject(key));
|
||||
}
|
||||
flagAsChanged();
|
||||
if (GroupManager.isLoaded)
|
||||
GroupManager.BukkitPermissions.updateAllPlayers();
|
||||
}
|
||||
}
|
||||
|
|
2
EssentialsGroupManager/src/org/anjocaido/groupmanager/data/GroupVariables.java
Normal file → Executable file
2
EssentialsGroupManager/src/org/anjocaido/groupmanager/data/GroupVariables.java
Normal file → Executable file
|
@ -45,7 +45,7 @@ public class GroupVariables extends Variables implements Cloneable {
|
|||
}
|
||||
|
||||
/**
|
||||
* A clone of all vars here.
|
||||
* A clone of all vars here.
|
||||
* @return
|
||||
*/
|
||||
protected GroupVariables clone(Group newOwner) {
|
||||
|
|
|
@ -4,8 +4,10 @@
|
|||
*/
|
||||
package org.anjocaido.groupmanager.data;
|
||||
|
||||
import com.sun.org.apache.bcel.internal.generic.AALOAD;
|
||||
//import com.sun.org.apache.bcel.internal.generic.AALOAD;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.anjocaido.groupmanager.GroupManager;
|
||||
import org.anjocaido.groupmanager.dataholder.WorldDataHolder;
|
||||
import java.util.Map;
|
||||
|
||||
|
@ -27,13 +29,12 @@ public class User extends DataUnit implements Cloneable {
|
|||
*/
|
||||
private UserVariables variables = new UserVariables(this);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param name
|
||||
*/
|
||||
public User(WorldDataHolder source, String name) {
|
||||
super(source,name);
|
||||
super(source, name);
|
||||
this.group = source.getDefaultGroup().getName();
|
||||
}
|
||||
|
||||
|
@ -45,7 +46,7 @@ public class User extends DataUnit implements Cloneable {
|
|||
public User clone() {
|
||||
User clone = new User(getDataSource(), this.getName());
|
||||
clone.group = this.group;
|
||||
for(String perm: this.getPermissionList()){
|
||||
for (String perm : this.getPermissionList()) {
|
||||
clone.addPermission(perm);
|
||||
}
|
||||
//clone.variables = this.variables.clone();
|
||||
|
@ -68,7 +69,7 @@ public class User extends DataUnit implements Cloneable {
|
|||
} else {
|
||||
clone.setGroup(this.getGroupName());
|
||||
}
|
||||
for(String perm: this.getPermissionList()){
|
||||
for (String perm : this.getPermissionList()) {
|
||||
clone.addPermission(perm);
|
||||
}
|
||||
//clone.variables = this.variables.clone();
|
||||
|
@ -103,6 +104,8 @@ public class User extends DataUnit implements Cloneable {
|
|||
public void setGroup(String group) {
|
||||
this.group = group;
|
||||
flagAsChanged();
|
||||
if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false))
|
||||
GroupManager.BukkitPermissions.updateAllPlayers();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -115,45 +118,55 @@ public class User extends DataUnit implements Cloneable {
|
|||
group = getDataSource().getGroup(group.getName());
|
||||
this.group = group.getName();
|
||||
flagAsChanged();
|
||||
if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false))
|
||||
GroupManager.BukkitPermissions.updateAllPlayers();
|
||||
}
|
||||
|
||||
public void addSubGroup(Group subGroup){
|
||||
if(this.group.equalsIgnoreCase(subGroup.getName())){
|
||||
public void addSubGroup(Group subGroup) {
|
||||
if (this.group.equalsIgnoreCase(subGroup.getName())) {
|
||||
return;
|
||||
}
|
||||
if (!this.getDataSource().groupExists(subGroup.getName())) {
|
||||
getDataSource().addGroup(subGroup);
|
||||
}
|
||||
}
|
||||
subGroup = getDataSource().getGroup(subGroup.getName());
|
||||
removeSubGroup(subGroup);
|
||||
subGroups.add(subGroup.getName());
|
||||
flagAsChanged();
|
||||
if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false))
|
||||
GroupManager.BukkitPermissions.updateAllPlayers();
|
||||
}
|
||||
public int subGroupsSize(){
|
||||
|
||||
public int subGroupsSize() {
|
||||
return subGroups.size();
|
||||
}
|
||||
public boolean isSubGroupsEmpty(){
|
||||
|
||||
public boolean isSubGroupsEmpty() {
|
||||
return subGroups.isEmpty();
|
||||
}
|
||||
public boolean containsSubGroup(Group subGroup){
|
||||
|
||||
public boolean containsSubGroup(Group subGroup) {
|
||||
return subGroups.contains(subGroup.getName());
|
||||
}
|
||||
public boolean removeSubGroup(Group subGroup){
|
||||
try{
|
||||
if(subGroups.remove(subGroup.getName())){
|
||||
|
||||
public boolean removeSubGroup(Group subGroup) {
|
||||
try {
|
||||
if (subGroups.remove(subGroup.getName())) {
|
||||
flagAsChanged();
|
||||
if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false))
|
||||
GroupManager.BukkitPermissions.updateAllPlayers();
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e){
|
||||
|
||||
} catch (Exception e) {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public ArrayList<Group> subGroupListCopy(){
|
||||
|
||||
public ArrayList<Group> subGroupListCopy() {
|
||||
ArrayList<Group> val = new ArrayList<Group>();
|
||||
for(String gstr: subGroups){
|
||||
for (String gstr : subGroups) {
|
||||
Group g = getDataSource().getGroup(gstr);
|
||||
if(g==null){
|
||||
if (g == null) {
|
||||
removeSubGroup(g);
|
||||
continue;
|
||||
}
|
||||
|
@ -161,7 +174,8 @@ public class User extends DataUnit implements Cloneable {
|
|||
}
|
||||
return val;
|
||||
}
|
||||
public ArrayList<String> subGroupListStringCopy(){
|
||||
|
||||
public ArrayList<String> subGroupListStringCopy() {
|
||||
return (ArrayList<String>) subGroups.clone();
|
||||
}
|
||||
|
||||
|
@ -179,9 +193,11 @@ public class User extends DataUnit implements Cloneable {
|
|||
public void setVariables(Map<String, Object> varList) {
|
||||
UserVariables temp = new UserVariables(this, varList);
|
||||
variables.clearVars();
|
||||
for(String key: temp.getVarKeyList()){
|
||||
for (String key : temp.getVarKeyList()) {
|
||||
variables.addVar(key, temp.getVarObject(key));
|
||||
}
|
||||
flagAsChanged();
|
||||
if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false))
|
||||
GroupManager.BukkitPermissions.updateAllPlayers();
|
||||
}
|
||||
}
|
||||
|
|
13
EssentialsGroupManager/src/org/anjocaido/groupmanager/data/UserVariables.java
Normal file → Executable file
13
EssentialsGroupManager/src/org/anjocaido/groupmanager/data/UserVariables.java
Normal file → Executable file
|
@ -2,7 +2,6 @@
|
|||
* To change this template, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
|
||||
package org.anjocaido.groupmanager.data;
|
||||
|
||||
import java.util.Map;
|
||||
|
@ -11,19 +10,23 @@ import java.util.Map;
|
|||
*
|
||||
* @author gabrielcouto
|
||||
*/
|
||||
public class UserVariables extends Variables{
|
||||
public class UserVariables extends Variables {
|
||||
|
||||
private User owner;
|
||||
public UserVariables(User owner){
|
||||
|
||||
public UserVariables(User owner) {
|
||||
super(owner);
|
||||
this.owner = owner;
|
||||
}
|
||||
|
||||
public UserVariables(User owner, Map<String, Object> varList) {
|
||||
super(owner);
|
||||
this.variables = varList;
|
||||
this.owner = owner;
|
||||
}
|
||||
|
||||
/**
|
||||
* A clone of all vars here.
|
||||
* A clone of all vars here.
|
||||
* @return
|
||||
*/
|
||||
protected UserVariables clone(User newOwner) {
|
||||
|
@ -34,6 +37,7 @@ public class UserVariables extends Variables{
|
|||
newOwner.flagAsChanged();
|
||||
return clone;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the owner
|
||||
*/
|
||||
|
@ -41,5 +45,4 @@ public class UserVariables extends Variables{
|
|||
public User getOwner() {
|
||||
return owner;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
14
EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Variables.java
Normal file → Executable file
14
EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Variables.java
Normal file → Executable file
|
@ -19,12 +19,14 @@ import java.util.Set;
|
|||
* @author gabrielcouto
|
||||
*/
|
||||
public abstract class Variables implements Cloneable {
|
||||
|
||||
private DataUnit owner;
|
||||
protected Map<String, Object> variables = new HashMap<String, Object>();
|
||||
|
||||
public Variables(DataUnit owner){
|
||||
public Variables(DataUnit owner) {
|
||||
this.owner = owner;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add var to the the INFO node.
|
||||
* examples:
|
||||
|
@ -45,7 +47,7 @@ public abstract class Variables implements Cloneable {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the object inside the var
|
||||
* Returns the object inside the var
|
||||
* @param name
|
||||
* @return a Object if exists. null if doesn't exists
|
||||
*/
|
||||
|
@ -112,7 +114,7 @@ public abstract class Variables implements Cloneable {
|
|||
}
|
||||
|
||||
/**
|
||||
* All variable keys this is holding
|
||||
* All variable keys this is holding
|
||||
* @return
|
||||
*/
|
||||
public Set<String> getVarKeyList() {
|
||||
|
@ -122,7 +124,7 @@ public abstract class Variables implements Cloneable {
|
|||
}
|
||||
|
||||
/**
|
||||
* verify is a var exists
|
||||
* verify is a var exists
|
||||
* @param name the key name of the var
|
||||
* @return true if that var exists
|
||||
*/
|
||||
|
@ -174,7 +176,7 @@ public abstract class Variables implements Cloneable {
|
|||
|
||||
}
|
||||
|
||||
public void clearVars(){
|
||||
public void clearVars() {
|
||||
variables.clear();
|
||||
owner.flagAsChanged();
|
||||
}
|
||||
|
@ -186,7 +188,7 @@ public abstract class Variables implements Cloneable {
|
|||
return owner;
|
||||
}
|
||||
|
||||
public boolean isEmpty(){
|
||||
public boolean isEmpty() {
|
||||
return variables.isEmpty();
|
||||
}
|
||||
}
|
||||
|
|
7
EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/OverloadedWorldHolder.java
Normal file → Executable file
7
EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/OverloadedWorldHolder.java
Normal file → Executable file
|
@ -25,6 +25,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
|
|||
*
|
||||
* @param ph
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public OverloadedWorldHolder(WorldDataHolder ph) {
|
||||
super(ph.getName());
|
||||
this.f = ph.f;
|
||||
|
@ -135,7 +136,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
|
@ -185,7 +186,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
* Gets the user in normal state. Surpassing the overload state.
|
||||
* Gets the user in normal state. Surpassing the overload state.
|
||||
* It doesn't affect permissions. But it enables plugins change the
|
||||
* actual user permissions even in overload mode.
|
||||
* @param userName
|
||||
|
@ -201,4 +202,4 @@ public class OverloadedWorldHolder extends WorldDataHolder {
|
|||
User newUser = createUser(userName);
|
||||
return newUser;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -42,7 +42,7 @@ public class WorldDataHolder {
|
|||
*/
|
||||
protected String name;
|
||||
/**
|
||||
* The actual groups holder
|
||||
* The actual groups holder
|
||||
*/
|
||||
protected Map<String, Group> groups = new HashMap<String, Group>();
|
||||
/**
|
||||
|
@ -50,7 +50,7 @@ public class WorldDataHolder {
|
|||
*/
|
||||
protected Map<String, User> users = new HashMap<String, User>();
|
||||
/**
|
||||
* Points to the default group
|
||||
* Points to the default group
|
||||
*/
|
||||
protected Group defaultGroup = null;
|
||||
/**
|
||||
|
@ -81,7 +81,7 @@ public class WorldDataHolder {
|
|||
protected boolean haveGroupsChanged = false;
|
||||
|
||||
/**
|
||||
* Prevent direct instantiation
|
||||
* Prevent direct instantiation
|
||||
* @param worldName
|
||||
*/
|
||||
protected WorldDataHolder(String worldName) {
|
||||
|
@ -90,7 +90,7 @@ public class WorldDataHolder {
|
|||
|
||||
/**
|
||||
* The main constructor for a new WorldDataHolder
|
||||
* Please don't set the default group as null
|
||||
* Please don't set the default group as null
|
||||
* @param worldName
|
||||
* @param defaultGroup the default group. its good to start with one
|
||||
*/
|
||||
|
@ -116,7 +116,7 @@ public class WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
* Add a user to the list. If it already exists, overwrite the old.
|
||||
* Add a user to the list. If it already exists, overwrite the old.
|
||||
* @param theUser the user you want to add to the permission list
|
||||
*/
|
||||
public void addUser(User theUser) {
|
||||
|
@ -158,7 +158,7 @@ public class WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
* Change the default group of the file.
|
||||
* Change the default group of the file.
|
||||
* @param group the group you want make default.
|
||||
*/
|
||||
public void setDefaultGroup(Group group) {
|
||||
|
@ -170,7 +170,7 @@ public class WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the default group of the file
|
||||
* Returns the default group of the file
|
||||
* @return the default group
|
||||
*/
|
||||
public Group getDefaultGroup() {
|
||||
|
@ -178,7 +178,7 @@ public class WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns a group of the given name
|
||||
* Returns a group of the given name
|
||||
* @param groupName the name of the group
|
||||
* @return a group if it is found. null if not found.
|
||||
*/
|
||||
|
@ -187,7 +187,7 @@ public class WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
* Check if a group exists.
|
||||
* Check if a group exists.
|
||||
* Its the same of getGroup, but check if it is null.
|
||||
* @param groupName the name of the group
|
||||
* @return true if exists. false if not.
|
||||
|
@ -210,7 +210,7 @@ public class WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
* Remove the group to the list
|
||||
* Remove the group to the list
|
||||
* @param groupName
|
||||
* @return true if had something to remove. false the group was default or non-existant
|
||||
*/
|
||||
|
@ -277,7 +277,7 @@ public class WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
* reads the file again
|
||||
* reads the file again
|
||||
*/
|
||||
public void reload() {
|
||||
try {
|
||||
|
@ -301,13 +301,14 @@ public class WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns a data holder for the given file
|
||||
* Returns a data holder for the given file
|
||||
* @param worldName
|
||||
* @param file
|
||||
* @return
|
||||
* @throws Exception
|
||||
* @deprecated
|
||||
*/
|
||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
@Deprecated
|
||||
public static WorldDataHolder load(String worldName, File file) throws Exception {
|
||||
WorldDataHolder ph = new WorldDataHolder(worldName);
|
||||
|
@ -387,7 +388,7 @@ public class WorldDataHolder {
|
|||
}
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
throw new Exception("Your Permissions config file is invalid. See console for details.");
|
||||
throw new Exception("Your Permissions config file is invalid. See console for details.");
|
||||
}
|
||||
if (ph.defaultGroup == null) {
|
||||
throw new IllegalArgumentException("There was no Default Group declared.");
|
||||
|
@ -409,7 +410,7 @@ public class WorldDataHolder {
|
|||
User thisUser = ph.createUser(usersKey);
|
||||
if (thisUser == null) {
|
||||
GroupManager.logger.warning("I think this user was declared more than once: " + usersKey);
|
||||
continue;
|
||||
continue;
|
||||
}
|
||||
if (thisUserNode.get("permissions") == null) {
|
||||
thisUserNode.put("permissions", new ArrayList<String>());
|
||||
|
@ -436,8 +437,8 @@ public class WorldDataHolder {
|
|||
Group hisGroup = ph.getGroup(thisUserNode.get("group").toString());
|
||||
if (hisGroup == null) {
|
||||
GroupManager.logger.warning("There is no group " + thisUserNode.get("group").toString() + ", as stated for player " + thisUser.getName());
|
||||
thisUser.setGroup(ph.defaultGroup);
|
||||
}
|
||||
thisUser.setGroup(ph.defaultGroup);
|
||||
}
|
||||
thisUser.setGroup(hisGroup);
|
||||
} else {
|
||||
thisUser.setGroup(ph.defaultGroup);
|
||||
|
@ -447,7 +448,7 @@ public class WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns a data holder for the given file
|
||||
* Returns a data holder for the given file
|
||||
* @param worldName
|
||||
* @param groupsFile
|
||||
* @param usersFile
|
||||
|
@ -455,6 +456,7 @@ public class WorldDataHolder {
|
|||
* @throws FileNotFoundException
|
||||
* @throws IOException
|
||||
*/
|
||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
public static WorldDataHolder load(String worldName, File groupsFile, File usersFile) throws FileNotFoundException, IOException {
|
||||
WorldDataHolder ph = new WorldDataHolder(worldName);
|
||||
ph.groupsFile = groupsFile;
|
||||
|
@ -539,7 +541,7 @@ public class WorldDataHolder {
|
|||
}
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
throw new IllegalArgumentException("Your Permissions config file is invalid. See console for details.");
|
||||
throw new IllegalArgumentException("Your Permissions config file is invalid. See console for details.");
|
||||
}
|
||||
if (ph.defaultGroup == null) {
|
||||
throw new IllegalArgumentException("There was no Default Group declared.");
|
||||
|
@ -576,6 +578,11 @@ public class WorldDataHolder {
|
|||
|
||||
// PROCESS USERS FILE
|
||||
Map<String, Object> allUsersNode = (Map<String, Object>) usersRootDataNode.get("users");
|
||||
|
||||
// Stop loading if the file is empty
|
||||
if (allUsersNode == null)
|
||||
return ph;
|
||||
|
||||
for (String usersKey : allUsersNode.keySet()) {
|
||||
Map<String, Object> thisUserNode = (Map<String, Object>) allUsersNode.get(usersKey);
|
||||
User thisUser = ph.createUser(usersKey);
|
||||
|
@ -628,7 +635,9 @@ public class WorldDataHolder {
|
|||
if (thisUserNode.get("group") != null) {
|
||||
Group hisGroup = ph.getGroup(thisUserNode.get("group").toString());
|
||||
if (hisGroup == null) {
|
||||
throw new IllegalArgumentException("There is no group " + thisUserNode.get("group").toString() + ", as stated for player " + thisUser.getName());
|
||||
GroupManager.logger.warning("There is no group " + thisUserNode.get("group").toString() + ", as stated for player " + thisUser.getName() + ": Set to '" + ph.getDefaultGroup().getName() + "'.");
|
||||
hisGroup = ph.defaultGroup;
|
||||
//throw new IllegalArgumentException("There is no group " + thisUserNode.get("group").toString() + ", as stated for player " + thisUser.getName());
|
||||
}
|
||||
thisUser.setGroup(hisGroup);
|
||||
} else {
|
||||
|
@ -639,7 +648,7 @@ public class WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
* Write a dataHolder in a specified file
|
||||
* Write a dataHolder in a specified file
|
||||
* @param ph
|
||||
* @param file
|
||||
* @deprecated
|
||||
|
@ -726,7 +735,7 @@ public class WorldDataHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
* Write a dataHolder in a specified file
|
||||
* Write a dataHolder in a specified file
|
||||
* @param ph
|
||||
* @param groupsFile
|
||||
*/
|
||||
|
@ -761,28 +770,28 @@ public class WorldDataHolder {
|
|||
DumperOptions opt = new DumperOptions();
|
||||
opt.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
||||
final Yaml yaml = new Yaml(opt);
|
||||
try {
|
||||
yaml.dump(root, new OutputStreamWriter(new FileOutputStream(groupsFile), "UTF-8"));
|
||||
} catch (UnsupportedEncodingException ex) {
|
||||
} catch (FileNotFoundException ex) {
|
||||
}
|
||||
try {
|
||||
yaml.dump(root, new OutputStreamWriter(new FileOutputStream(groupsFile), "UTF-8"));
|
||||
} catch (UnsupportedEncodingException ex) {
|
||||
} catch (FileNotFoundException ex) {
|
||||
}
|
||||
|
||||
/*FileWriter tx = null;
|
||||
try {
|
||||
tx = new FileWriter(groupsFile, false);
|
||||
tx.write(yaml.dump(root));
|
||||
tx.flush();
|
||||
tx = new FileWriter(groupsFile, false);
|
||||
tx.write(yaml.dump(root));
|
||||
tx.flush();
|
||||
} catch (Exception e) {
|
||||
} finally {
|
||||
try {
|
||||
tx.close();
|
||||
} catch (IOException ex) {
|
||||
}
|
||||
try {
|
||||
tx.close();
|
||||
} catch (IOException ex) {
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a dataHolder in a specified file
|
||||
* Write a dataHolder in a specified file
|
||||
* @param ph
|
||||
* @param usersFile
|
||||
*/
|
||||
|
@ -823,22 +832,22 @@ public class WorldDataHolder {
|
|||
DumperOptions opt = new DumperOptions();
|
||||
opt.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
||||
final Yaml yaml = new Yaml(opt);
|
||||
try {
|
||||
yaml.dump(root, new OutputStreamWriter(new FileOutputStream(usersFile), "UTF-8"));
|
||||
} catch (UnsupportedEncodingException ex) {
|
||||
} catch (FileNotFoundException ex) {
|
||||
}
|
||||
try {
|
||||
yaml.dump(root, new OutputStreamWriter(new FileOutputStream(usersFile), "UTF-8"));
|
||||
} catch (UnsupportedEncodingException ex) {
|
||||
} catch (FileNotFoundException ex) {
|
||||
}
|
||||
/*FileWriter tx = null;
|
||||
try {
|
||||
tx = new FileWriter(usersFile, false);
|
||||
tx.write(yaml.dump(root));
|
||||
tx.flush();
|
||||
tx = new FileWriter(usersFile, false);
|
||||
tx.write(yaml.dump(root));
|
||||
tx.flush();
|
||||
} catch (Exception e) {
|
||||
} finally {
|
||||
try {
|
||||
tx.close();
|
||||
} catch (IOException ex) {
|
||||
}
|
||||
try {
|
||||
tx.close();
|
||||
} catch (IOException ex) {
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ public class WorldsHolder {
|
|||
* Map of mirrors: <nonExistingWorldName, existingAndLoadedWorldName>
|
||||
* The key is the mirror.
|
||||
* The object is the mirrored.
|
||||
*
|
||||
*
|
||||
* Mirror shows the same data of mirrored.
|
||||
*/
|
||||
private Map<String, String> mirrors = new HashMap<String, String>();
|
||||
|
@ -63,7 +63,8 @@ public class WorldsHolder {
|
|||
initialWorldLoading();
|
||||
mirrorSetUp();
|
||||
}
|
||||
private void initialWorldLoading(){
|
||||
|
||||
private void initialWorldLoading() {
|
||||
//LOAD EVERY WORLD POSSIBLE
|
||||
loadWorld(serverDefaultWorldName);
|
||||
defaultWorld = worldsData.get(serverDefaultWorldName);
|
||||
|
@ -77,7 +78,9 @@ public class WorldsHolder {
|
|||
}
|
||||
}
|
||||
}
|
||||
public void mirrorSetUp(){
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public void mirrorSetUp() {
|
||||
mirrors.clear();
|
||||
Map<String, Object> mirrorsMap = plugin.getConfig().getMirrorsMap();
|
||||
if (mirrorsMap != null) {
|
||||
|
@ -122,7 +125,7 @@ public class WorldsHolder {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
public void saveChanges() {
|
||||
ArrayList<WorldDataHolder> alreadyDone = new ArrayList<WorldDataHolder>();
|
||||
|
@ -136,7 +139,7 @@ public class WorldsHolder {
|
|||
continue;
|
||||
}
|
||||
if (w.haveGroupsChanged()) {
|
||||
String groupsFolderName = w.getGroupsFile().getParentFile().getName();
|
||||
//String groupsFolderName = w.getGroupsFile().getParentFile().getName();
|
||||
File backupGroups = new File(plugin.getBackupFolder(), "bkp_" + w.getName() + "_g_" + Tasks.getDateString() + ".yml");
|
||||
try {
|
||||
Tasks.copy(w.getGroupsFile(), backupGroups);
|
||||
|
@ -262,7 +265,7 @@ public class WorldsHolder {
|
|||
File groupsFile = new File(defaultWorldFolder, "groups.yml");
|
||||
File usersFile = new File(defaultWorldFolder, "users.yml");
|
||||
File oldDataFile = new File(plugin.getDataFolder(), "data.yml");
|
||||
if (!groupsFile.exists()) {
|
||||
if (!groupsFile.exists() || groupsFile.length() == 0) {
|
||||
if (oldDataFile.exists()) {
|
||||
try {
|
||||
Tasks.copy(oldDataFile, groupsFile);
|
||||
|
@ -278,7 +281,7 @@ public class WorldsHolder {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (!usersFile.exists()) {
|
||||
if (!usersFile.exists() || usersFile.length() == 0) {
|
||||
if (oldDataFile.exists()) {
|
||||
try {
|
||||
Tasks.copy(oldDataFile, usersFile);
|
||||
|
@ -368,7 +371,7 @@ public class WorldsHolder {
|
|||
GroupManager.logger.log(Level.SEVERE, null, ex);
|
||||
return;
|
||||
}
|
||||
GroupManager.logger.severe("Failed to load world " + worldName + "...");
|
||||
//GroupManager.logger.severe("Failed to load world " + worldName + "...");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -376,7 +379,7 @@ public class WorldsHolder {
|
|||
* Tells if the such world has been mapped.
|
||||
*
|
||||
* It will return true if world is a mirror.
|
||||
*
|
||||
*
|
||||
* @param worldName
|
||||
* @return true if world is loaded or mirrored. false if not listed
|
||||
*/
|
||||
|
|
204
EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
Normal file → Executable file
204
EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
Normal file → Executable file
|
@ -13,10 +13,11 @@ import org.anjocaido.groupmanager.data.Group;
|
|||
import org.anjocaido.groupmanager.dataholder.WorldDataHolder;
|
||||
import org.anjocaido.groupmanager.data.User;
|
||||
import org.anjocaido.groupmanager.utils.PermissionCheckResult;
|
||||
import org.anjocaido.groupmanager.utils.PermissionCheckResult.Type;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Everything here maintains the model created by Nijikokun
|
||||
* Everything here maintains the model created by Nijikokun
|
||||
*
|
||||
* But implemented to use GroupManager system. Which provides instant changes,
|
||||
* without file access.
|
||||
|
@ -49,7 +50,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
}
|
||||
|
||||
/**
|
||||
* Checks if a player can use that permission node.
|
||||
* Checks if a player can use that permission node.
|
||||
* @param player
|
||||
* @param permission
|
||||
* @return
|
||||
|
@ -59,6 +60,16 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
return checkUserPermission(ph.getUser(player.getName()), permission);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a player can use that permission node.
|
||||
* @param playerName
|
||||
* @param permission
|
||||
* @return
|
||||
*/
|
||||
public boolean permission(String playerName, String permission) {
|
||||
return checkUserPermission(ph.getUser(playerName), permission);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the group of that player name.
|
||||
* @param userName
|
||||
|
@ -70,7 +81,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
}
|
||||
|
||||
/**
|
||||
* Verify if player is in suck group.
|
||||
* Verify if player is in suck group.
|
||||
* It will check it's groups inheritance.
|
||||
*
|
||||
* So if you have a group Admin > Moderator
|
||||
|
@ -98,6 +109,75 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the appropriate prefix for the user.
|
||||
* This method is a utility method for chat plugins to get the user's prefix
|
||||
* without having to look at every one of the user's ancestors.
|
||||
* Returns an empty string if user has no parent groups.
|
||||
* @param user Player's name
|
||||
* @return Player's prefix
|
||||
*/
|
||||
@Override
|
||||
public String getUserPrefix(String user) {
|
||||
|
||||
String prefix = ph.getUser(user).getVariables().getVarString("prefix");
|
||||
if (prefix.length() != 0) {
|
||||
return prefix;
|
||||
}
|
||||
|
||||
return getGroupPrefix(getGroup(user));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the appropriate prefix for the user.
|
||||
* This method is a utility method for chat plugins to get the user's prefix
|
||||
* without having to look at every one of the user's ancestors.
|
||||
* Returns an empty string if user has no parent groups.
|
||||
* @param user Player's name
|
||||
* @return Player's prefix
|
||||
*/
|
||||
@Override
|
||||
public String getUserSuffix(String user) {
|
||||
|
||||
String suffix = ph.getUser(user).getVariables().getVarString("suffix");
|
||||
if (suffix.length() != 0) {
|
||||
return suffix;
|
||||
}
|
||||
|
||||
return getGroupSuffix(getGroup(user));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets name of the primary group of the user.
|
||||
* Returns the name of the default group if user has no parent groups,
|
||||
* or "Default" if there is no default group for that world.
|
||||
* @param user Player's name
|
||||
* @return Name of player's primary group
|
||||
*/
|
||||
public String getPrimaryGroup(String user) {
|
||||
|
||||
return getGroup(user);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if user can build.
|
||||
* @param world Player's world
|
||||
* @param user Player's name
|
||||
* @return Whether the user can build
|
||||
*/
|
||||
public boolean canUserBuild(String user) {
|
||||
boolean test = ph.getUser(user).getVariables().getVarBoolean("build");
|
||||
|
||||
if (test) {
|
||||
return test;
|
||||
}
|
||||
|
||||
return canGroupBuild(getGroup(user));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the String prefix for the given group
|
||||
* @param groupName
|
||||
|
@ -107,7 +187,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
public String getGroupPrefix(String groupName) {
|
||||
Group g = ph.getGroup(groupName);
|
||||
if (g == null) {
|
||||
return null;
|
||||
return "";
|
||||
}
|
||||
return g.getVariables().getVarString("prefix");
|
||||
}
|
||||
|
@ -121,7 +201,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
public String getGroupSuffix(String groupName) {
|
||||
Group g = ph.getGroup(groupName);
|
||||
if (g == null) {
|
||||
return null;
|
||||
return "";
|
||||
}
|
||||
return g.getVariables().getVarString("suffix");
|
||||
}
|
||||
|
@ -161,7 +241,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
}
|
||||
|
||||
/**
|
||||
* It returns a Integer variable value
|
||||
* It returns a Integer variable value
|
||||
* It will harvest inheritance for value.
|
||||
* @param groupName
|
||||
* @param variable
|
||||
|
@ -619,8 +699,8 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
@Deprecated
|
||||
public boolean checkGroupPermissionWithInheritance(Group start, String permission, List<Group> alreadyChecked) {
|
||||
PermissionCheckResult result = checkGroupPermissionWithInheritance(start, permission);
|
||||
if (result.resultType.equals(result.resultType.EXCEPTION)
|
||||
|| result.resultType.equals(result.resultType.FOUND)) {
|
||||
if (result.resultType.equals(Type.EXCEPTION)
|
||||
|| result.resultType.equals(Type.FOUND)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -682,8 +762,8 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
@Deprecated
|
||||
public Group nextGroupWithPermission(Group start, String permission, List<Group> alreadyChecked) {
|
||||
PermissionCheckResult result = checkGroupPermissionWithInheritance(start, permission);
|
||||
if (result.resultType.equals(result.resultType.EXCEPTION)
|
||||
|| result.resultType.equals(result.resultType.FOUND)) {
|
||||
if (result.resultType.equals(Type.EXCEPTION)
|
||||
|| result.resultType.equals(Type.FOUND)) {
|
||||
return (Group) checkGroupPermissionWithInheritance(start, permission).owner;
|
||||
}
|
||||
return null;
|
||||
|
@ -699,7 +779,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
* @param start
|
||||
* @param alreadyChecked
|
||||
* @return the group that passed on test. null if no group passed.
|
||||
* @deprecated use the other method with same name, instead
|
||||
* @deprecated use the other method with same name, instead
|
||||
*/
|
||||
@Deprecated
|
||||
public ArrayList<String> listAllGroupsInherited(Group start, ArrayList<String> alreadyChecked) {
|
||||
|
@ -807,9 +887,10 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
* @param userName
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String[] getGroups(String userName) {
|
||||
ArrayList<String> allGroups = listAllGroupsInherited(ph.getUser(userName).getGroup());
|
||||
for(Group subg: ph.getUser(userName).subGroupListCopy()){
|
||||
for (Group subg : ph.getUser(userName).subGroupListCopy()) {
|
||||
allGroups.addAll(listAllGroupsInherited(subg));
|
||||
}
|
||||
String[] arr = new String[allGroups.size()];
|
||||
|
@ -825,6 +906,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
* @param targerPermission
|
||||
* @return
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
private Group breadthFirstSearch(Group start, String targerPermission) {
|
||||
if (start == null || targerPermission == null) {
|
||||
return null;
|
||||
|
@ -853,4 +935,102 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Group getDefaultGroup() {
|
||||
return ph.getDefaultGroup();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInfoString(String entryName, String path,
|
||||
boolean isGroup) {
|
||||
if (isGroup) {
|
||||
Group data = ph.getGroup(entryName);
|
||||
if (data == null) {
|
||||
return null;
|
||||
}
|
||||
return data.getVariables().getVarString(path);
|
||||
} else {
|
||||
User data = ph.getUser(entryName);
|
||||
if (data == null) {
|
||||
return null;
|
||||
}
|
||||
return data.getVariables().getVarString(path);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInfoInteger(String entryName, String path,
|
||||
boolean isGroup) {
|
||||
if (isGroup) {
|
||||
Group data = ph.getGroup(entryName);
|
||||
if (data == null) {
|
||||
return -1;
|
||||
}
|
||||
return data.getVariables().getVarInteger(path);
|
||||
} else {
|
||||
User data = ph.getUser(entryName);
|
||||
if (data == null) {
|
||||
return -1;
|
||||
}
|
||||
return data.getVariables().getVarInteger(path);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getInfoDouble(String entryName, String path,
|
||||
boolean isGroup) {
|
||||
if (isGroup) {
|
||||
Group data = ph.getGroup(entryName);
|
||||
if (data == null) {
|
||||
return -1;
|
||||
}
|
||||
return data.getVariables().getVarDouble(path);
|
||||
} else {
|
||||
User data = ph.getUser(entryName);
|
||||
if (data == null) {
|
||||
return -1;
|
||||
}
|
||||
return data.getVariables().getVarDouble(path);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getInfoBoolean(String entryName, String path,
|
||||
boolean isGroup) {
|
||||
if (isGroup) {
|
||||
Group data = ph.getGroup(entryName);
|
||||
if (data == null) {
|
||||
return false;
|
||||
}
|
||||
return data.getVariables().getVarBoolean(path);
|
||||
} else {
|
||||
User data = ph.getUser(entryName);
|
||||
if (data == null) {
|
||||
return false;
|
||||
}
|
||||
return data.getVariables().getVarBoolean(path);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addUserInfo(String name, String path, Object data) {
|
||||
ph.getUser(name).getVariables().addVar(path, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeUserInfo(String name, String path) {
|
||||
ph.getUser(name).getVariables().removeVar(path);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addGroupInfo(String name, String path, Object data) {
|
||||
ph.getGroup(name).getVariables().addVar(path, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeGroupInfo(String name, String path) {
|
||||
ph.getGroup(name).getVariables().removeVar(path);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,227 @@
|
|||
/*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package org.anjocaido.groupmanager.permissions;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.anjocaido.groupmanager.GroupManager;
|
||||
import org.anjocaido.groupmanager.data.User;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
import org.bukkit.event.player.PlayerListener;
|
||||
import org.bukkit.event.player.PlayerPortalEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.event.server.PluginDisableEvent;
|
||||
import org.bukkit.event.server.PluginEnableEvent;
|
||||
import org.bukkit.event.server.ServerListener;
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.permissions.PermissionAttachment;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* BukkitPermissions overrides to force GM reponses to Superperms
|
||||
*
|
||||
* @author ElgarL, based upon PermissionsEX implementation
|
||||
*/
|
||||
public class BukkitPermissions {
|
||||
|
||||
protected Map<Player, PermissionAttachment> attachments = new HashMap<Player, PermissionAttachment>();
|
||||
protected Set<Permission> registeredPermissions = new HashSet<Permission>();
|
||||
protected Plugin plugin;
|
||||
protected boolean dumpAllPermissions = true;
|
||||
protected boolean dumpMatchedPermissions = true;
|
||||
public boolean player_join = false;
|
||||
|
||||
public BukkitPermissions(Plugin plugin) {
|
||||
this.plugin = plugin;
|
||||
|
||||
this.collectPermissions();
|
||||
this.registerEvents();
|
||||
|
||||
this.updateAllPlayers();
|
||||
|
||||
GroupManager.logger.info("Superperms support enabled.");
|
||||
}
|
||||
|
||||
private void registerEvents() {
|
||||
PluginManager manager = plugin.getServer().getPluginManager();
|
||||
|
||||
PlayerEvents playerEventListener = new PlayerEvents();
|
||||
|
||||
manager.registerEvent(Event.Type.PLAYER_JOIN, playerEventListener, Event.Priority.Normal, plugin);
|
||||
manager.registerEvent(Event.Type.PLAYER_KICK, playerEventListener, Event.Priority.Normal, plugin);
|
||||
manager.registerEvent(Event.Type.PLAYER_QUIT, playerEventListener, Event.Priority.Normal, plugin);
|
||||
|
||||
manager.registerEvent(Event.Type.PLAYER_RESPAWN, playerEventListener, Event.Priority.Normal, plugin);
|
||||
manager.registerEvent(Event.Type.PLAYER_TELEPORT, playerEventListener, Event.Priority.Normal, plugin);
|
||||
manager.registerEvent(Event.Type.PLAYER_PORTAL, playerEventListener, Event.Priority.Normal, plugin);
|
||||
|
||||
ServerListener serverListener = new BukkitEvents();
|
||||
|
||||
manager.registerEvent(Event.Type.PLUGIN_ENABLE, serverListener, Event.Priority.Normal, plugin);
|
||||
manager.registerEvent(Event.Type.PLUGIN_DISABLE, serverListener, Event.Priority.Normal, plugin);
|
||||
}
|
||||
|
||||
private void collectPermissions() {
|
||||
registeredPermissions.clear();
|
||||
for (Plugin bukkitPlugin : Bukkit.getServer().getPluginManager().getPlugins()) {
|
||||
registeredPermissions.addAll(bukkitPlugin.getDescription().getPermissions());
|
||||
}
|
||||
}
|
||||
|
||||
public void updatePermissions(Player player){
|
||||
this.updatePermissions(player, null);
|
||||
}
|
||||
|
||||
public void updatePermissions(Player player, String world) {
|
||||
if (player == null || !this.plugin.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.attachments.containsKey(player)) {
|
||||
this.attachments.put(player, player.addAttachment(plugin));
|
||||
}
|
||||
|
||||
if(world == null){
|
||||
world = player.getWorld().getName();
|
||||
}
|
||||
|
||||
PermissionAttachment attachment = this.attachments.get(player);
|
||||
|
||||
User user = GroupManager.getWorldsHolder().getWorldData(world).getUser(player.getName());
|
||||
List<String> permissions = user.getGroup().getPermissionList();
|
||||
|
||||
// clear permissions
|
||||
for (String permission : attachment.getPermissions().keySet()) {
|
||||
attachment.unsetPermission(permission);
|
||||
}
|
||||
|
||||
// find matching permissions
|
||||
for (Permission permission : registeredPermissions) {
|
||||
boolean permissionValue = user.getGroup().hasSamePermissionNode(permission.getName());
|
||||
attachment.setPermission(permission, permissionValue);
|
||||
}
|
||||
|
||||
// all permissions
|
||||
for (String permission : permissions) {
|
||||
Boolean value = true;
|
||||
if (permission.startsWith("-")) {
|
||||
permission = permission.substring(1); // cut off -
|
||||
value = false;
|
||||
}
|
||||
|
||||
if (!attachment.getPermissions().containsKey(permission)) {
|
||||
attachment.setPermission(permission, value);
|
||||
}
|
||||
}
|
||||
|
||||
player.recalculatePermissions();
|
||||
/*
|
||||
// List perms for this player
|
||||
GroupManager.logger.info("Attachment Permissions:");
|
||||
for(Map.Entry<String, Boolean> entry : attachment.getPermissions().entrySet()){
|
||||
GroupManager.logger.info(" " + entry.getKey() + " = " + entry.getValue());
|
||||
}
|
||||
|
||||
GroupManager.logger.info("Effective Permissions:");
|
||||
for(PermissionAttachmentInfo info : player.getEffectivePermissions()){
|
||||
GroupManager.logger.info(" " + info.getPermission() + " = " + info.getValue());
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
public void updateAllPlayers() {
|
||||
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
|
||||
updatePermissions(player);
|
||||
}
|
||||
}
|
||||
|
||||
protected class PlayerEvents extends PlayerListener {
|
||||
|
||||
@Override
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
player_join = true;
|
||||
Player player = event.getPlayer();
|
||||
//force GM to create the player if they are not already listed.
|
||||
if (GroupManager.getWorldsHolder().getWorldData(player.getWorld().getName()).getUser(player.getName()) != null) {
|
||||
player_join = false;
|
||||
updatePermissions(event.getPlayer());
|
||||
} else
|
||||
player_join = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerPortal(PlayerPortalEvent event) { // will portal into another world
|
||||
if(event.getPlayer().getWorld().equals(event.getTo().getWorld())){ // only if world actually changed
|
||||
return;
|
||||
}
|
||||
|
||||
updatePermissions(event.getPlayer(), event.getTo().getWorld().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerRespawn(PlayerRespawnEvent event) { // can be respawned in another world
|
||||
updatePermissions(event.getPlayer(), event.getRespawnLocation().getWorld().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerTeleport(PlayerTeleportEvent event) { // can be teleported into another world
|
||||
if (!event.getFrom().getWorld().equals(event.getTo().getWorld())) { // only if world actually changed
|
||||
updatePermissions(event.getPlayer(), event.getTo().getWorld().getName());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
attachments.remove(event.getPlayer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerKick(PlayerKickEvent event) {
|
||||
attachments.remove(event.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
protected class BukkitEvents extends ServerListener {
|
||||
|
||||
@Override
|
||||
public void onPluginEnable(PluginEnableEvent event) {
|
||||
collectPermissions();
|
||||
updateAllPlayers();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPluginDisable(PluginDisableEvent event) {
|
||||
collectPermissions();
|
||||
updateAllPlayers();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
77
EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java
Normal file → Executable file
77
EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java
Normal file → Executable file
|
@ -1,10 +1,15 @@
|
|||
package org.anjocaido.groupmanager.permissions;
|
||||
|
||||
//import java.util.Collection;
|
||||
//import java.util.Map;
|
||||
//import java.util.Set;
|
||||
import org.anjocaido.groupmanager.data.Group;
|
||||
//import org.anjocaido.groupmanager.data.User;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Made by Nijikokun. Changed by Gabriel Couto
|
||||
*
|
||||
* Made by Nijikokun. Changed by Gabriel Couto
|
||||
*
|
||||
* This class is intended to *read* permissions from a single world.
|
||||
*
|
||||
* @author Nijikokun
|
||||
|
@ -12,7 +17,6 @@ import org.bukkit.entity.Player;
|
|||
*/
|
||||
public abstract class PermissionsReaderInterface {
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param player
|
||||
|
@ -90,7 +94,7 @@ public abstract class PermissionsReaderInterface {
|
|||
public abstract boolean getGroupPermissionBoolean(String string, String string1);
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param string
|
||||
* @param string1
|
||||
* @return
|
||||
|
@ -160,4 +164,69 @@ public abstract class PermissionsReaderInterface {
|
|||
* @return
|
||||
*/
|
||||
public abstract double getPermissionDouble(String string, String string1);
|
||||
|
||||
/////////////////////////////
|
||||
/**
|
||||
* Gets the appropriate prefix for the user.
|
||||
* This method is a utility method for chat plugins to get the user's prefix
|
||||
* without having to look at every one of the user's ancestors.
|
||||
* Returns an empty string if user has no parent groups.
|
||||
* @param world Player's world
|
||||
* @param user Player's name
|
||||
* @return Player's prefix
|
||||
*/
|
||||
public abstract String getUserPrefix(String user);
|
||||
|
||||
/**
|
||||
* Gets the appropriate suffix for the user.
|
||||
* This method is a utility method for chat plugins to get the user's suffix
|
||||
* without having to look at every one of the user's ancestors.
|
||||
* Returns an empty string if user has no parent groups.
|
||||
* @param world Player's world
|
||||
* @param user Player's name
|
||||
* @return Player's suffix
|
||||
*/
|
||||
public abstract String getUserSuffix(String user);
|
||||
|
||||
/**
|
||||
* Returns the group object representing the default group of the given world.
|
||||
* This method will return null if the object does not exist or the world has no default group.
|
||||
* @return Group object representing default world, or null if it doesn't exist or is not defined.
|
||||
*/
|
||||
public abstract Group getDefaultGroup();
|
||||
|
||||
/**
|
||||
* Gets a array of the names of all parent groups in the same world.
|
||||
* @param name Target user's name
|
||||
* @return An array containing the names of all parent groups (including ancestors) that are in the same world
|
||||
*/
|
||||
public abstract String[] getGroups(String name);
|
||||
|
||||
public abstract String getInfoString(String entryName, String path, boolean isGroup);
|
||||
//public abstract String getInfoString(String entryName, String path, boolean isGroup, Comparator<String> comparator);
|
||||
|
||||
public abstract int getInfoInteger(String entryName, String path, boolean isGroup);
|
||||
//public abstract int getInfoInteger(String entryName, String path, boolean isGroup, Comparator<Integer> comparator);
|
||||
|
||||
/**
|
||||
* Gets a double from the Info node without inheritance.
|
||||
* @param entryName
|
||||
* @param path
|
||||
* @param isGroup
|
||||
* @return
|
||||
*/
|
||||
public abstract double getInfoDouble(String entryName, String path, boolean isGroup);
|
||||
//public abstract double getInfoDouble(String entryName, String path, boolean isGroup, Comparator<Double> comparator);
|
||||
|
||||
public abstract boolean getInfoBoolean(String entryName, String path, boolean isGroup);
|
||||
//public abstract boolean getInfoBoolean(String entryName, String path, boolean isGroup, Comparator<Boolean> comparator);
|
||||
|
||||
public abstract void addUserInfo(String name, String path, Object data);
|
||||
|
||||
public abstract void removeUserInfo(String name, String path);
|
||||
|
||||
public abstract void addGroupInfo(String name, String path, Object data);
|
||||
|
||||
public abstract void removeGroupInfo(String name, String path);
|
||||
//////////////////////////////
|
||||
}
|
||||
|
|
0
EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/GMLoggerHandler.java
Normal file → Executable file
0
EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/GMLoggerHandler.java
Normal file → Executable file
1
EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/GroupManagerPermissions.java
Normal file → Executable file
1
EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/GroupManagerPermissions.java
Normal file → Executable file
|
@ -9,6 +9,7 @@ package org.anjocaido.groupmanager.utils;
|
|||
* @author gabrielcouto
|
||||
*/
|
||||
public enum GroupManagerPermissions {
|
||||
|
||||
manuadd,
|
||||
manudel,
|
||||
manuaddsub,
|
||||
|
|
1
EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/PermissionCheckResult.java
Normal file → Executable file
1
EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/PermissionCheckResult.java
Normal file → Executable file
|
@ -11,6 +11,7 @@ import org.anjocaido.groupmanager.data.DataUnit;
|
|||
* @author gabrielcouto
|
||||
*/
|
||||
public class PermissionCheckResult {
|
||||
|
||||
/**
|
||||
* It should be the owner of the access level found.
|
||||
*
|
||||
|
|
19
EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/StringPermissionComparator.java
Normal file → Executable file
19
EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/StringPermissionComparator.java
Normal file → Executable file
|
@ -2,7 +2,6 @@
|
|||
* To change this template, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
|
||||
package org.anjocaido.groupmanager.utils;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
@ -19,32 +18,32 @@ public class StringPermissionComparator implements Comparator<String> {
|
|||
boolean bp = permB.startsWith("+");
|
||||
boolean am = permA.startsWith("-");
|
||||
boolean bm = permB.startsWith("-");
|
||||
if(ap&&bp){
|
||||
if (ap && bp) {
|
||||
return 0;
|
||||
}
|
||||
if(ap&&!bp){
|
||||
if (ap && !bp) {
|
||||
return -1;
|
||||
}
|
||||
if(!ap&&bp){
|
||||
if (!ap && bp) {
|
||||
return 1;
|
||||
}
|
||||
if(am&&bm){
|
||||
if (am && bm) {
|
||||
return 0;
|
||||
}
|
||||
if(am&&!bm){
|
||||
if (am && !bm) {
|
||||
return -1;
|
||||
}
|
||||
if(!am&&bm){
|
||||
if (!am && bm) {
|
||||
return 1;
|
||||
}
|
||||
return permA.compareToIgnoreCase(permB);
|
||||
}
|
||||
private static StringPermissionComparator instance;
|
||||
public static StringPermissionComparator getInstance(){
|
||||
if(instance==null){
|
||||
|
||||
public static StringPermissionComparator getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new StringPermissionComparator();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
53
EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/Tasks.java
Normal file → Executable file
53
EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/Tasks.java
Normal file → Executable file
|
@ -10,7 +10,7 @@ import java.io.FileOutputStream;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.List;
|
||||
import org.anjocaido.groupmanager.data.Group;
|
||||
|
@ -62,48 +62,51 @@ public abstract class Tasks {
|
|||
public static String getDateString() {
|
||||
GregorianCalendar now = new GregorianCalendar();
|
||||
String date = "";
|
||||
date += now.get(GregorianCalendar.DAY_OF_MONTH);
|
||||
date += now.get(Calendar.DAY_OF_MONTH);
|
||||
date += "-";
|
||||
date += now.get(GregorianCalendar.HOUR);
|
||||
date += now.get(Calendar.HOUR);
|
||||
date += "-";
|
||||
date += now.get(GregorianCalendar.MINUTE);
|
||||
date += now.get(Calendar.MINUTE);
|
||||
return date;
|
||||
}
|
||||
public static String getStringListInString(List<String> list){
|
||||
if(list==null){
|
||||
|
||||
public static String getStringListInString(List<String> list) {
|
||||
if (list == null) {
|
||||
return "";
|
||||
}
|
||||
String result="";
|
||||
for(int i=0;i<list.size();i++){
|
||||
result+=list.get(i);
|
||||
if(i<list.size()-1){
|
||||
result+=", ";
|
||||
String result = "";
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
result += list.get(i);
|
||||
if (i < list.size() - 1) {
|
||||
result += ", ";
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
public static String getStringArrayInString(String[] list){
|
||||
if(list==null){
|
||||
|
||||
public static String getStringArrayInString(String[] list) {
|
||||
if (list == null) {
|
||||
return "";
|
||||
}
|
||||
String result="";
|
||||
for(int i=0;i<list.length;i++){
|
||||
result+=list[i];
|
||||
if(i<((list.length)-1)){
|
||||
result+=", ";
|
||||
String result = "";
|
||||
for (int i = 0; i < list.length; i++) {
|
||||
result += list[i];
|
||||
if (i < ((list.length) - 1)) {
|
||||
result += ", ";
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
public static String getGroupListInString(List<Group> list){
|
||||
if(list==null){
|
||||
|
||||
public static String getGroupListInString(List<Group> list) {
|
||||
if (list == null) {
|
||||
return "";
|
||||
}
|
||||
String result="";
|
||||
for(int i=0;i<list.size();i++){
|
||||
result+=list.get(i).getName();
|
||||
if(i<list.size()-1){
|
||||
result+=", ";
|
||||
String result = "";
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
result += list.get(i).getName();
|
||||
if (i < list.size() - 1) {
|
||||
result += ", ";
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
name: GroupManager
|
||||
version: "1.0(alpha-5) [Zombie-Version]"
|
||||
version: "1.1 (Phoenix)"
|
||||
main: org.anjocaido.groupmanager.GroupManager
|
||||
website: http://www.anjocaido.info/
|
||||
description: Provides on-the-fly system for Permission system created by Nijikokun. But all in memory, and with flat-file saving schedule.
|
||||
description: Provides on-the-fly system for permissions system created by Nijikokun. But all in memory, and with flat-file saving schedule.
|
||||
authors:
|
||||
- AnjoCaido
|
||||
- Gabriel Couto
|
||||
|
@ -10,156 +10,156 @@ commands:
|
|||
manuadd:
|
||||
description: Move a player to desired group.(Adds to the file if not exists)
|
||||
usage: /<command> <player> <group>
|
||||
permission: groupmanager.manuadd
|
||||
permissions: groupmanager.manuadd
|
||||
manudel:
|
||||
description: Remove any user specific configuration. Make him default group.
|
||||
usage: /<command> <player>
|
||||
permission: groupmanager.manudel
|
||||
permissions: groupmanager.manudel
|
||||
manuaddsub:
|
||||
description: Add a group to a player's subgroup list.
|
||||
usage: /<command> <player> <group>
|
||||
permission: groupmanager.manuaddsub
|
||||
permissions: groupmanager.manuaddsub
|
||||
manudelsub:
|
||||
description: Remove a group to a player's subgroup list.
|
||||
usage: /<command> <player> <group>
|
||||
permission: groupmanager.manudelsub
|
||||
permissions: groupmanager.manudelsub
|
||||
mangadd:
|
||||
description: Add group to the system.
|
||||
usage: /<command> <group>
|
||||
permission: groupmanager.mangadd
|
||||
permissions: groupmanager.mangadd
|
||||
mangdel:
|
||||
description: Removes group from the system(all it's users become default)
|
||||
usage: /<command> <group>
|
||||
permission: groupmanager.mangdel
|
||||
permissions: groupmanager.mangdel
|
||||
manuaddp:
|
||||
description: Add permission diretly to the player.
|
||||
usage: /<command> <player> <permission>
|
||||
permission: groupmanager.manuaddp
|
||||
description: Add permissions diretly to the player.
|
||||
usage: /<command> <player> <permissions>
|
||||
permissions: groupmanager.manuaddp
|
||||
manudelp:
|
||||
description: Removes permission diretly from the player.
|
||||
usage: /<command> <player> <permission>
|
||||
permission: groupmanager.manudelp
|
||||
description: Removes permissions diretly from the player.
|
||||
usage: /<command> <player> <permissions>
|
||||
permissions: groupmanager.manudelp
|
||||
manulistp:
|
||||
description: List all permissions from a player.
|
||||
description: List all permissionss from a player.
|
||||
usage: /<command> <player>
|
||||
permission: groupmanager.manulistp
|
||||
permissions: groupmanager.manulistp
|
||||
manucheckp:
|
||||
description: Verify if user has a permission, and where it comes from.
|
||||
usage: /<command> <player> <permission>
|
||||
permission: groupmanager.manucheckp
|
||||
description: Verify if user has a permissions, and where it comes from.
|
||||
usage: /<command> <player> <permissions>
|
||||
permissions: groupmanager.manucheckp
|
||||
mangaddp:
|
||||
description: Add permission to a group.
|
||||
usage: /<command> <group> <permission>
|
||||
permission: groupmanager.mangaddp
|
||||
description: Add permissions to a group.
|
||||
usage: /<command> <group> <permissions>
|
||||
permissions: groupmanager.mangaddp
|
||||
mangdelp:
|
||||
description: Removes permission from a group.
|
||||
usage: /<command> <group> <permission>
|
||||
permission: groupmanager.mangdelp
|
||||
description: Removes permissions from a group.
|
||||
usage: /<command> <group> <permissions>
|
||||
permissions: groupmanager.mangdelp
|
||||
manglistp:
|
||||
description: Lists all permissions from a group.
|
||||
description: Lists all permissionss from a group.
|
||||
usage: /<command> <group>
|
||||
permission: groupmanager.manglistp
|
||||
permissions: groupmanager.manglistp
|
||||
mangcheckp:
|
||||
description: Check if group has a permission, and where it comes from.
|
||||
usage: /<command> <group> <permission>
|
||||
permission: groupmanager.mangcheckp
|
||||
description: Check if group has a permissions, and where it comes from.
|
||||
usage: /<command> <group> <permissions>
|
||||
permissions: groupmanager.mangcheckp
|
||||
mangaddi:
|
||||
description: Add a group to another group inheritance list.
|
||||
usage: /<command> <group1> <group2>
|
||||
permission: groupmanager.mangaddi
|
||||
permissions: groupmanager.mangaddi
|
||||
mangdeli:
|
||||
description: Remove a group from another group inheritance list.
|
||||
usage: /<command> <group1> <group2>
|
||||
permission: groupmanager.mangdeli
|
||||
permissions: groupmanager.mangdeli
|
||||
manuaddv:
|
||||
description: Add, or replaces, a variable to a user (like prefix or suffix).
|
||||
usage: /<command> <user> <variable> <value>
|
||||
permission: groupmanager.manuaddv
|
||||
permissions: groupmanager.manuaddv
|
||||
manudelv:
|
||||
description: Remove a variable from a user.
|
||||
usage: /<command> <user> <variable>
|
||||
permission: groupmanager.manudelv
|
||||
permissions: groupmanager.manudelv
|
||||
manulistv:
|
||||
description: List variables a user has (like prefix or suffix).
|
||||
usage: /<command> <user>
|
||||
permission: groupmanager.manulistv
|
||||
permissions: groupmanager.manulistv
|
||||
manucheckv:
|
||||
description: Verify a value of a variable of user, and where it comes from.
|
||||
usage: /<command> <user> <variable>
|
||||
permission: groupmanager.manucheckv
|
||||
permissions: groupmanager.manucheckv
|
||||
mangaddv:
|
||||
description: Add, or replaces, a variable to a group (like prefix or suffix).
|
||||
usage: /<command> <group> <variable> <value>
|
||||
permission: groupmanager.mangaddv
|
||||
permissions: groupmanager.mangaddv
|
||||
mangdelv:
|
||||
description: Remove a variable from a group.
|
||||
usage: /<command> <group> <variable>
|
||||
permission: groupmanager.mangdelv
|
||||
permissions: groupmanager.mangdelv
|
||||
manglistv:
|
||||
description: List variables a group has (like prefix or suffix).
|
||||
usage: /<command> <group>
|
||||
permission: groupmanager.manglistv
|
||||
permissions: groupmanager.manglistv
|
||||
mangcheckv:
|
||||
description: Verify a value of a variable of group, and where it comes from.
|
||||
usage: /<command> <group> <variable>
|
||||
permission: groupmanager.mangckeckv
|
||||
permissions: groupmanager.mangckeckv
|
||||
manwhois:
|
||||
description: Tell the group that user belongs.
|
||||
usage: /<command> <player>
|
||||
permission: groupmanager.manwhois
|
||||
permissions: groupmanager.manwhois
|
||||
tempadd:
|
||||
description: Creates a temporary permission copy for that user.
|
||||
description: Creates a temporary permissions copy for that user.
|
||||
usage: /<command> <player>
|
||||
permission: groupmanager.tempadd
|
||||
permissions: groupmanager.tempadd
|
||||
tempdel:
|
||||
description: Remove the temporary permission copy for player.
|
||||
description: Remove the temporary permissions copy for player.
|
||||
usage: /<command> <player>
|
||||
permission: groupmanager.tempdel
|
||||
permissions: groupmanager.tempdel
|
||||
templist:
|
||||
description: List players in overload-permissions mode made by /tempadd.
|
||||
description: List players in overload-permissionss mode made by /tempadd.
|
||||
usage: /<command>
|
||||
permission: groupmanager.templist
|
||||
permissions: groupmanager.templist
|
||||
tempdelall:
|
||||
description: Remove all overrides made by command /tempadd.
|
||||
usage: /<command>
|
||||
permission: groupmanager.tempdelall
|
||||
permissions: groupmanager.tempdelall
|
||||
mansave:
|
||||
description: Save all permissions on file.
|
||||
description: Save all permissionss on file.
|
||||
usage: /<command>
|
||||
permission: groupmanager.mansave
|
||||
permissions: groupmanager.mansave
|
||||
manload:
|
||||
description: Reload current world and config.yml. Or load given world.
|
||||
usage: /<command> [world]
|
||||
permission: groupmanager.manload
|
||||
permissions: groupmanager.manload
|
||||
listgroups:
|
||||
description: List the groups available.
|
||||
usage: /<command>
|
||||
permission: groupmanager.listgroups
|
||||
permissions: groupmanager.listgroups
|
||||
manpromote:
|
||||
description: Promote a player in the same heritage line to a higher rank.
|
||||
usage: /<command> <player> <group>
|
||||
permission: groupmanager.manpromote
|
||||
permissions: groupmanager.manpromote
|
||||
mandemote:
|
||||
description: Demote a player in the same heritage line to a lower rank.
|
||||
usage: /<command> <player> <group>
|
||||
permission: groupmanager.mandemote
|
||||
permissions: groupmanager.mandemote
|
||||
mantogglevalidate:
|
||||
description: Toggle on/off the validating if player is online.
|
||||
usage: /<command>
|
||||
permission: groupmanager.mantogglevalidate
|
||||
permissions: groupmanager.mantogglevalidate
|
||||
mantogglesave:
|
||||
description: Toggle on/ff the autosave.
|
||||
usage: /<command>
|
||||
permission: groupmanager.mantogglesave
|
||||
permissions: groupmanager.mantogglesave
|
||||
manworld:
|
||||
description: Prints the selected world name
|
||||
usage: /<command>
|
||||
permission: groupmanager.manworld
|
||||
permissions: groupmanager.manworld
|
||||
manselect:
|
||||
description: Select a world to work with next commands.
|
||||
usage: /<command> <world>
|
||||
permission: groupmanager.manselect
|
||||
permissions: groupmanager.manselect
|
||||
manclear:
|
||||
description: Clear world selection. Next commands will work on your world.
|
||||
usage: /<command>
|
||||
permission: groupmanager.manclear
|
||||
permissions: groupmanager.manclear
|
|
@ -1,11 +1,14 @@
|
|||
# "For a more advanced configuration example utilizing the advanced features of GroupManager, see http://pastebin.com/a8ZA0j5G"
|
||||
# "You will want to remove these users and replace them with your own"
|
||||
users:
|
||||
snowleo:
|
||||
subgroups: []
|
||||
permissions: []
|
||||
group: Admin
|
||||
khobbits:
|
||||
mudzereli:
|
||||
subgroups: []
|
||||
permissions: []
|
||||
group: Builder
|
||||
ElgarL:
|
||||
subgroups: []
|
||||
permissions: []
|
||||
group: Admin
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue