2012-02-19 09:22:02 +01:00
/ * This file is part of Vault .
Vault is free software : you can redistribute it and / or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation , either version 3 of the License , or
( at your option ) any later version .
2011-06-29 02:18:20 +02:00
2012-02-19 09:22:02 +01:00
Vault 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 Lesser General Public License for more details .
You should have received a copy of the GNU Lesser General Public License
along with Vault . If not , see < http : //www.gnu.org/licenses/>.
* /
2011-06-29 02:18:20 +02:00
package net.milkbowl.vault.permission.plugins ;
2014-06-26 04:39:11 +02:00
import java.util.List ;
2011-06-29 02:18:20 +02:00
import net.milkbowl.vault.permission.Permission ;
2012-01-26 01:06:29 +01:00
import org.bukkit.Bukkit ;
2014-06-26 04:39:11 +02:00
import org.bukkit.OfflinePlayer ;
2011-06-29 02:18:20 +02:00
import org.bukkit.entity.Player ;
2012-01-26 01:06:29 +01:00
import org.bukkit.event.EventHandler ;
import org.bukkit.event.EventPriority ;
import org.bukkit.event.Listener ;
2011-06-29 02:18:20 +02:00
import org.bukkit.event.server.PluginDisableEvent ;
import org.bukkit.event.server.PluginEnableEvent ;
import org.bukkit.plugin.Plugin ;
2011-06-29 23:44:42 +02:00
import ru.tehkode.permissions.PermissionGroup ;
2011-06-29 02:18:20 +02:00
import ru.tehkode.permissions.PermissionUser ;
import ru.tehkode.permissions.bukkit.PermissionsEx ;
2011-07-21 02:43:46 +02:00
public class Permission_PermissionsEx extends Permission {
2011-08-12 19:11:25 +02:00
2011-10-23 09:04:29 +02:00
private final String name = " PermissionsEx " ;
2011-08-12 19:11:25 +02:00
private PermissionsEx permission = null ;
2012-06-30 18:57:54 +02:00
public Permission_PermissionsEx ( Plugin plugin ) {
2011-08-12 19:11:25 +02:00
this . plugin = plugin ;
2012-01-26 01:06:29 +01:00
Bukkit . getServer ( ) . getPluginManager ( ) . registerEvents ( new PermissionServerListener ( this ) , plugin ) ;
2011-08-12 19:11:25 +02:00
// Load Plugin in case it was loaded before
if ( permission = = null ) {
Plugin perms = plugin . getServer ( ) . getPluginManager ( ) . getPlugin ( " PermissionsEx " ) ;
if ( perms ! = null ) {
if ( perms . isEnabled ( ) ) {
2012-01-14 01:13:11 +01:00
try {
if ( Double . valueOf ( perms . getDescription ( ) . getVersion ( ) ) < 1 . 16 ) {
log . info ( String . format ( " [%s][Permission] %s below 1.16 is not compatible with Vault! Falling back to SuperPerms only mode. PLEASE UPDATE! " , plugin . getDescription ( ) . getName ( ) , name ) ) ;
}
} catch ( NumberFormatException e ) {
// Do nothing
}
2011-08-12 19:11:25 +02:00
permission = ( PermissionsEx ) perms ;
log . info ( String . format ( " [%s][Permission] %s hooked. " , plugin . getDescription ( ) . getName ( ) , name ) ) ;
}
}
}
}
@Override
public boolean isEnabled ( ) {
if ( permission = = null ) {
return false ;
} else {
return permission . isEnabled ( ) ;
}
}
2012-01-26 01:06:29 +01:00
public class PermissionServerListener implements Listener {
2011-08-12 19:11:25 +02:00
Permission_PermissionsEx permission = null ;
public PermissionServerListener ( Permission_PermissionsEx permission ) {
this . permission = permission ;
}
2012-01-26 01:06:29 +01:00
@EventHandler ( priority = EventPriority . MONITOR )
2011-08-12 19:11:25 +02:00
public void onPluginEnable ( PluginEnableEvent event ) {
if ( permission . permission = = null ) {
2013-09-04 00:19:25 +02:00
Plugin perms = event . getPlugin ( ) ;
if ( perms . getDescription ( ) . getName ( ) . equals ( " PermissionsEx " ) ) {
2013-02-07 01:25:43 +01:00
try {
if ( Double . valueOf ( perms . getDescription ( ) . getVersion ( ) ) < 1 . 16 ) {
log . info ( String . format ( " [%s][Permission] %s below 1.16 is not compatible with Vault! Falling back to SuperPerms only mode. PLEASE UPDATE! " , plugin . getDescription ( ) . getName ( ) , name ) ) ;
return ;
2012-01-14 01:13:11 +01:00
}
2013-02-07 01:25:43 +01:00
} catch ( NumberFormatException e ) {
// Do nothing
2011-08-12 19:11:25 +02:00
}
2013-02-07 01:25:43 +01:00
permission . permission = ( PermissionsEx ) perms ;
log . info ( String . format ( " [%s][Permission] %s hooked. " , plugin . getDescription ( ) . getName ( ) , permission . name ) ) ;
2011-08-12 19:11:25 +02:00
}
}
}
2012-01-26 01:06:29 +01:00
@EventHandler ( priority = EventPriority . MONITOR )
2011-08-12 19:11:25 +02:00
public void onPluginDisable ( PluginDisableEvent event ) {
if ( permission . permission ! = null ) {
if ( event . getPlugin ( ) . getDescription ( ) . getName ( ) . equals ( " PermissionsEx " ) ) {
permission . permission = null ;
log . info ( String . format ( " [%s][Permission] %s un-hooked. " , plugin . getDescription ( ) . getName ( ) , permission . name ) ) ;
}
}
}
}
@Override
public String getName ( ) {
return name ;
}
2014-06-26 04:39:11 +02:00
@Override
public boolean playerInGroup ( String worldName , OfflinePlayer op , String groupName ) {
PermissionUser user = getUser ( op ) ;
if ( user = = null ) {
return false ;
}
return user . inGroup ( groupName , worldName ) ;
}
@Override
public boolean playerInGroup ( String worldName , String playerName , String groupName ) {
return PermissionsEx . getPermissionManager ( ) . getUser ( playerName ) . inGroup ( groupName , worldName ) ;
}
@Override
public boolean playerAddGroup ( String worldName , OfflinePlayer op , String groupName ) {
PermissionGroup group = PermissionsEx . getPermissionManager ( ) . getGroup ( groupName ) ;
PermissionUser user = getUser ( op ) ;
if ( group = = null | | user = = null ) {
return false ;
} else {
user . addGroup ( groupName , worldName ) ;
return true ;
}
}
2011-08-12 19:11:25 +02:00
@Override
public boolean playerAddGroup ( String worldName , String playerName , String groupName ) {
PermissionGroup group = PermissionsEx . getPermissionManager ( ) . getGroup ( groupName ) ;
PermissionUser user = PermissionsEx . getPermissionManager ( ) . getUser ( playerName ) ;
if ( group = = null | | user = = null ) {
return false ;
} else {
2013-12-29 01:51:21 +01:00
user . addGroup ( groupName , worldName ) ;
2011-08-12 19:11:25 +02:00
return true ;
}
}
2014-06-26 04:39:11 +02:00
@Override
public boolean playerRemoveGroup ( String worldName , OfflinePlayer op , String groupName ) {
PermissionUser user = getUser ( op ) ;
user . removeGroup ( groupName , worldName ) ;
return true ;
}
2011-08-12 19:11:25 +02:00
@Override
public boolean playerRemoveGroup ( String worldName , String playerName , String groupName ) {
2013-12-29 01:51:21 +01:00
PermissionsEx . getPermissionManager ( ) . getUser ( playerName ) . removeGroup ( groupName , worldName ) ;
2013-02-07 01:25:43 +01:00
return true ;
2011-08-12 19:11:25 +02:00
}
2014-06-26 04:39:11 +02:00
@Override
public boolean playerAdd ( String worldName , OfflinePlayer op , String permission ) {
PermissionUser user = getUser ( op ) ;
if ( user = = null ) {
return false ;
} else {
user . addPermission ( permission , worldName ) ;
return true ;
}
}
2011-08-12 19:11:25 +02:00
@Override
public boolean playerAdd ( String worldName , String playerName , String permission ) {
2014-06-26 04:39:11 +02:00
PermissionUser user = getUser ( playerName ) ;
2011-08-12 19:11:25 +02:00
if ( user = = null ) {
return false ;
} else {
user . addPermission ( permission , worldName ) ;
return true ;
}
}
2014-06-26 04:39:11 +02:00
@Override
public boolean playerRemove ( String worldName , OfflinePlayer op , String permission ) {
PermissionUser user = getUser ( op ) ;
if ( user = = null ) {
return false ;
} else {
user . removePermission ( permission , worldName ) ;
return true ;
}
}
2011-08-12 19:11:25 +02:00
@Override
public boolean playerRemove ( String worldName , String playerName , String permission ) {
2014-06-26 04:39:11 +02:00
PermissionUser user = getUser ( playerName ) ;
2011-08-12 19:11:25 +02:00
if ( user = = null ) {
return false ;
} else {
user . removePermission ( permission , worldName ) ;
return true ;
}
}
@Override
public boolean groupAdd ( String worldName , String groupName , String permission ) {
PermissionGroup group = PermissionsEx . getPermissionManager ( ) . getGroup ( groupName ) ;
if ( group = = null ) {
return false ;
} else {
group . addPermission ( permission , worldName ) ;
return true ;
}
}
@Override
public boolean groupRemove ( String worldName , String groupName , String permission ) {
PermissionGroup group = PermissionsEx . getPermissionManager ( ) . getGroup ( groupName ) ;
if ( group = = null ) {
return false ;
} else {
group . removePermission ( permission , worldName ) ;
return true ;
}
}
@Override
public boolean groupHas ( String worldName , String groupName , String permission ) {
PermissionGroup group = PermissionsEx . getPermissionManager ( ) . getGroup ( groupName ) ;
if ( group = = null ) {
return false ;
} else {
return group . has ( permission , worldName ) ;
}
}
2014-06-26 04:39:11 +02:00
private PermissionUser getUser ( OfflinePlayer op ) {
return PermissionsEx . getPermissionManager ( ) . getUser ( op . getUniqueId ( ) ) ;
}
private PermissionUser getUser ( String playerName ) {
return PermissionsEx . getPermissionManager ( ) . getUser ( playerName ) ;
}
@Override
public String [ ] getPlayerGroups ( String world , OfflinePlayer op ) {
PermissionUser user = getUser ( op ) ;
return user = = null ? null : user . getParentIdentifiers ( world ) . toArray ( new String [ 0 ] ) ;
}
2011-08-12 19:11:25 +02:00
@Override
public String [ ] getPlayerGroups ( String world , String playerName ) {
2014-06-26 04:39:11 +02:00
PermissionUser user = getUser ( playerName ) ;
return user = = null ? null : user . getParentIdentifiers ( world ) . toArray ( new String [ 0 ] ) ;
}
@Override
public String getPrimaryGroup ( String world , OfflinePlayer op ) {
PermissionUser user = getUser ( op ) ;
if ( user = = null ) {
return null ;
} else if ( user . getParentIdentifiers ( world ) . size ( ) > 0 ) {
return user . getParentIdentifiers ( world ) . get ( 0 ) ;
} else {
return null ;
}
2011-08-12 19:11:25 +02:00
}
@Override
public String getPrimaryGroup ( String world , String playerName ) {
2012-04-13 20:02:35 +02:00
PermissionUser user = PermissionsEx . getPermissionManager ( ) . getUser ( playerName ) ;
if ( user = = null ) {
2011-08-12 19:11:25 +02:00
return null ;
2014-06-26 04:39:11 +02:00
} else if ( user . getParentIdentifiers ( world ) . size ( ) > 0 ) {
return user . getParentIdentifiers ( world ) . get ( 0 ) ;
2012-04-13 20:02:35 +02:00
} else {
return null ;
}
2011-08-12 19:11:25 +02:00
}
2011-07-21 02:43:46 +02:00
2014-06-26 04:39:11 +02:00
@Override
public boolean playerHas ( String worldName , OfflinePlayer op , String permission ) {
PermissionUser user = getUser ( op ) ;
if ( user ! = null ) {
return user . has ( permission , worldName ) ;
} else {
return false ;
}
}
2011-07-21 02:43:46 +02:00
@Override
public boolean playerHas ( String worldName , String playerName , String permission ) {
2014-06-26 04:39:11 +02:00
PermissionUser user = getUser ( playerName ) ;
2011-08-12 19:11:25 +02:00
if ( user ! = null ) {
2011-07-21 02:43:46 +02:00
return user . has ( permission , worldName ) ;
} else {
return false ;
}
}
2013-02-07 01:25:43 +01:00
2011-11-29 23:45:21 +01:00
@Override
public boolean playerAddTransient ( String worldName , Player player , String permission ) {
2014-06-26 04:39:11 +02:00
PermissionUser pPlayer = getUser ( player ) ;
if ( pPlayer ! = null ) {
pPlayer . addTimedPermission ( permission , worldName , 0 ) ;
return true ;
} else {
return false ;
}
2011-11-29 23:45:21 +01:00
}
2013-02-07 01:25:43 +01:00
2011-11-29 23:45:21 +01:00
@Override
public boolean playerAddTransient ( Player player , String permission ) {
2014-06-26 04:39:11 +02:00
return playerAddTransient ( null , player , permission ) ;
2011-11-29 23:45:21 +01:00
}
2011-08-18 06:29:59 +02:00
2013-02-07 01:25:43 +01:00
2011-11-29 23:45:21 +01:00
@Override
public boolean playerRemoveTransient ( Player player , String permission ) {
2014-06-26 04:39:11 +02:00
return playerRemoveTransient ( null , player , permission ) ;
2011-11-29 23:45:21 +01:00
}
2013-02-07 01:25:43 +01:00
2011-11-29 23:45:21 +01:00
@Override
public boolean playerRemoveTransient ( String worldName , Player player , String permission ) {
2014-06-26 04:39:11 +02:00
PermissionUser pPlayer = getUser ( player ) ;
if ( pPlayer ! = null ) {
pPlayer . removeTimedPermission ( permission , worldName ) ;
return true ;
} else {
return false ;
}
2013-02-07 01:25:43 +01:00
}
@Override
public String [ ] getGroups ( ) {
2014-06-26 04:39:11 +02:00
List < PermissionGroup > groups = PermissionsEx . getPermissionManager ( ) . getGroupList ( ) ;
if ( groups = = null | | groups . isEmpty ( ) ) {
2013-02-07 01:25:43 +01:00
return null ;
2014-06-26 04:39:11 +02:00
}
String [ ] groupNames = new String [ groups . size ( ) ] ;
for ( int i = 0 ; i < groups . size ( ) ; i + + ) {
groupNames [ i ] = groups . get ( i ) . getName ( ) ;
2013-02-07 01:25:43 +01:00
}
return groupNames ;
}
@Override
public boolean hasSuperPermsCompat ( ) {
return true ;
2011-11-29 23:45:21 +01:00
}
2013-03-14 19:32:04 +01:00
@Override
public boolean hasGroupSupport ( ) {
return true ;
}
2011-10-29 01:27:28 +02:00
}