55use pocketmine \command \Command ;
66use pocketmine \command \CommandSender ;
77use pocketmine \network \protocol \Info ;
8+ use pocketmine \permission \Permission ;
9+ use pocketmine \Player ;
810use pocketmine \plugin \FolderPluginLoader ;
911use pocketmine \plugin \Plugin ;
1012use pocketmine \plugin \PluginBase ;
@@ -24,11 +26,52 @@ public function onCommand(CommandSender $sender, Command $command, $label, array
2426 case "makeserver " :
2527 return $ this ->makeServerCommand ($ sender , $ command , $ label , $ args );
2628 break ;
29+ case "checkperm " :
30+ return $ this ->permissionCheckCommand ($ sender , $ command , $ label , $ args );
31+ break ;
2732 default :
2833 return false ;
2934 }
3035 }
3136
37+ private function permissionCheckCommand (CommandSender $ sender , Command $ command , $ label , array $ args ){
38+ $ target = $ sender ;
39+ if (!isset ($ args [0 ])){
40+ return false ;
41+ }
42+ $ node = strtolower ($ args [0 ]);
43+ if (isset ($ args [1 ])){
44+ if (($ player = Player::get ($ args [1 ])) instanceof Player){
45+ $ target = $ player ;
46+ }else {
47+ return false ;
48+ }
49+ }
50+
51+ if ($ target !== $ sender and !$ sender ->hasPermission ("devtools.command.checkperm.other " )){
52+ $ sender ->sendMessage (TextFormat::RED . "You do not have permissions to check other players. " );
53+ return true ;
54+ }else {
55+ $ sender ->sendMessage (TextFormat::GREEN . "---- " .TextFormat::WHITE . "Permission node " .$ node .TextFormat::GREEN . " ---- " );
56+ $ perm = $ this ->getServer ()->getPluginManager ()->getPermission ($ node );
57+ if ($ perm instanceof Permission){
58+ $ desc = TextFormat::GOLD . "Description: " .TextFormat::WHITE . $ perm ->getDescription ()."\n" ;
59+ $ desc .= TextFormat::GOLD . "Default: " .TextFormat::WHITE . $ perm ->getDefault ()."\n" ;
60+ $ children = "" ;
61+ foreach ($ perm ->getChildren () as $ name => $ true ){
62+ $ children .= $ name . ", " ;
63+ }
64+ $ desc .= TextFormat::GOLD . "Children: " .TextFormat::WHITE . substr ($ children , 0 , -2 )."\n" ;
65+ }else {
66+ $ desc = TextFormat::RED . "Permission does not exist \n" ;
67+ $ desc .= TextFormat::GOLD . "Default: " .TextFormat::WHITE . Permission::$ DEFAULT_PERMISSION ."\n" ;
68+ }
69+ $ sender ->sendMessage ($ desc );
70+ $ sender ->sendMessage (TextFormat::YELLOW . $ target ->getName () . TextFormat::WHITE . " has it set to " .($ target ->hasPermission ($ node ) === true ? TextFormat::GREEN . "true " : TextFormat::RED . "false " ));
71+ return true ;
72+ }
73+ }
74+
3275 private function makePluginCommand (CommandSender $ sender , Command $ command , $ label , array $ args ){
3376 $ pluginName = trim (implode (" " , $ args ));
3477 if ($ pluginName === "" or !(($ plugin = Server::getInstance ()->getPluginManager ()->getPlugin ($ pluginName )) instanceof Plugin)){
0 commit comments