mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-11-02 17:09:58 +01:00
Add group/prefix/suffix support for zPermissions.
This commit is contained in:
parent
f6fc9777b5
commit
cd4bdb83d4
@ -79,6 +79,7 @@ file.reference.PermissionsEx.jar=../lib/PermissionsEx.jar
|
|||||||
file.reference.Privileges.jar=..\\lib\\Privileges.jar
|
file.reference.Privileges.jar=..\\lib\\Privileges.jar
|
||||||
file.reference.Vault.jar=../lib/Vault.jar
|
file.reference.Vault.jar=../lib/Vault.jar
|
||||||
file.reference.SimplyPerms.jar=../lib/SimplyPerms.jar
|
file.reference.SimplyPerms.jar=../lib/SimplyPerms.jar
|
||||||
|
file.reference.zPermissions.jar=../lib/zPermissions.jar
|
||||||
includes=**
|
includes=**
|
||||||
jar.archive.disabled=${jnlp.enabled}
|
jar.archive.disabled=${jnlp.enabled}
|
||||||
jar.compress=true
|
jar.compress=true
|
||||||
@ -99,7 +100,8 @@ javac.classpath=\
|
|||||||
${file.reference.Vault.jar}:\
|
${file.reference.Vault.jar}:\
|
||||||
${file.reference.Privileges.jar}:\
|
${file.reference.Privileges.jar}:\
|
||||||
${file.reference.bpermissions2.jar}:\
|
${file.reference.bpermissions2.jar}:\
|
||||||
${file.reference.SimplyPerms.jar}
|
${file.reference.SimplyPerms.jar}:\
|
||||||
|
${file.reference.zPermissions.jar}
|
||||||
# Space-separated list of extra javac options
|
# Space-separated list of extra javac options
|
||||||
javac.compilerargs=-Xlint:unchecked
|
javac.compilerargs=-Xlint:unchecked
|
||||||
javac.deprecation=false
|
javac.deprecation=false
|
||||||
|
@ -166,6 +166,17 @@ public class PermissionsHandler implements IPermissionsHandler
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Plugin zPermsPlugin = pluginManager.getPlugin("zPermissions");
|
||||||
|
if (zPermsPlugin != null && zPermsPlugin.isEnabled())
|
||||||
|
{
|
||||||
|
if (!(handler instanceof ZPermissionsHandler))
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.INFO, "Essentials: Using zPermissions based permissions.");
|
||||||
|
handler = new ZPermissionsHandler(plugin);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (useSuperperms)
|
if (useSuperperms)
|
||||||
{
|
{
|
||||||
if (!(handler instanceof SuperpermsHandler))
|
if (!(handler instanceof SuperpermsHandler))
|
||||||
|
@ -0,0 +1,194 @@
|
|||||||
|
package com.earth2me.essentials.perm;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.server.ServiceRegisterEvent;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.tyrannyofheaven.bukkit.zPermissions.ZPermissionsService;
|
||||||
|
|
||||||
|
public class ZPermissionsHandler extends SuperpermsHandler implements Listener
|
||||||
|
{
|
||||||
|
|
||||||
|
private ZPermissionsService service = null;
|
||||||
|
|
||||||
|
private boolean hasGetPlayerPrimaryGroup = false; // This is a post-1.0 addition
|
||||||
|
|
||||||
|
public ZPermissionsHandler(Plugin plugin)
|
||||||
|
{
|
||||||
|
acquireZPermissionsService();
|
||||||
|
if (!isReady())
|
||||||
|
{
|
||||||
|
// Shouldn't get to this point, since caller checks if zPerms
|
||||||
|
// is enabled. But for the sake of correctness...
|
||||||
|
Bukkit.getPluginManager().registerEvents(this, plugin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onServiceRegister(ServiceRegisterEvent event)
|
||||||
|
{
|
||||||
|
if (ZPermissionsService.class.equals(event.getProvider().getService()))
|
||||||
|
{
|
||||||
|
acquireZPermissionsService();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getGroup(Player base)
|
||||||
|
{
|
||||||
|
if (!isReady())
|
||||||
|
{
|
||||||
|
return super.getGroup(base);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return getPrimaryGroup(base.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getGroups(Player base)
|
||||||
|
{
|
||||||
|
if (!isReady())
|
||||||
|
{
|
||||||
|
return super.getGroups(base);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new ArrayList<String>(service.getPlayerGroups(base.getName()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean inGroup(Player base, String group)
|
||||||
|
{
|
||||||
|
if (!isReady())
|
||||||
|
{
|
||||||
|
return super.inGroup(base, group);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Set<String> groups = service.getPlayerGroups(base.getName());
|
||||||
|
for (String test : groups)
|
||||||
|
{
|
||||||
|
if (test.equalsIgnoreCase(group))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPrefix(Player base)
|
||||||
|
{
|
||||||
|
if (!isReady())
|
||||||
|
{
|
||||||
|
return super.getPrefix(base);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return getPrefixSuffix(base, "prefix");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getSuffix(Player base)
|
||||||
|
{
|
||||||
|
if (!isReady())
|
||||||
|
{
|
||||||
|
return super.getSuffix(base);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return getPrefixSuffix(base, "suffix");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canBuild(Player base, String group)
|
||||||
|
{
|
||||||
|
return hasPermission(base, "essentials.build");
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getPrefixSuffix(Player base, String metadataName)
|
||||||
|
{
|
||||||
|
String playerPrefixSuffix;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
playerPrefixSuffix = service.getPlayerMetadata(base.getName(), metadataName, String.class);
|
||||||
|
}
|
||||||
|
catch (IllegalStateException e)
|
||||||
|
{
|
||||||
|
// User error. They set prefix to a non-string.
|
||||||
|
playerPrefixSuffix = null;
|
||||||
|
}
|
||||||
|
if (playerPrefixSuffix == null)
|
||||||
|
{
|
||||||
|
// Try prefix/suffix of their "primary group"
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return service.getGroupMetadata(getPrimaryGroup(base.getName()), metadataName, String.class);
|
||||||
|
}
|
||||||
|
catch (IllegalStateException e)
|
||||||
|
{
|
||||||
|
// User error, again
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return playerPrefixSuffix;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void acquireZPermissionsService()
|
||||||
|
{
|
||||||
|
service = Bukkit.getServicesManager().load(ZPermissionsService.class);
|
||||||
|
if (isReady())
|
||||||
|
{
|
||||||
|
// getPlayerPrimaryGroup(String) was added in an unreleased version
|
||||||
|
// Check if it exists.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
service.getClass().getMethod("getPlayerPrimaryGroup", String.class);
|
||||||
|
hasGetPlayerPrimaryGroup = true;
|
||||||
|
}
|
||||||
|
catch (NoSuchMethodException e)
|
||||||
|
{
|
||||||
|
hasGetPlayerPrimaryGroup = false;
|
||||||
|
}
|
||||||
|
catch (SecurityException e)
|
||||||
|
{
|
||||||
|
hasGetPlayerPrimaryGroup = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isReady()
|
||||||
|
{
|
||||||
|
return service != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getPrimaryGroup(String playerName)
|
||||||
|
{
|
||||||
|
if (hasGetPlayerPrimaryGroup)
|
||||||
|
{
|
||||||
|
return service.getPlayerPrimaryGroup(playerName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Fall back to using highest-weight assigned group
|
||||||
|
List<String> groups = service.getPlayerAssignedGroups(playerName);
|
||||||
|
return groups.get(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
BIN
lib/zPermissions.jar
Normal file
BIN
lib/zPermissions.jar
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user